{"version":3,"sources":["webpack://Designer/webpack/universalModuleDefinition","webpack://Designer/webpack/bootstrap","webpack://Designer/./node_modules/underscore/underscore.js","webpack://Designer/./node_modules/backbone/backbone.js","webpack://Designer/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://Designer/./node_modules/moment/moment.js","webpack://Designer/./src/utils/mixins.js","webpack://Designer/./node_modules/preact/dist/preact.esm.js","webpack://Designer/./src/trait_manager/model/Trait.js","webpack://Designer/./src/trait_manager/model/Traits.js","webpack://Designer/./src/trait_manager/model/TraitFactory.js","webpack://Designer/./src/dom_components/model/Component.js","webpack://Designer/./src/dom_components/model/customtraits.js","webpack://Designer/./src/dom_components/view/ComponentView.js","webpack://Designer/./config/config.js","webpack://Designer/./node_modules/@uppy/core/lib/index.js","webpack://Designer/./src/common/common.js","webpack://Designer/./node_modules/@babel/runtime/regenerator/index.js","webpack://Designer/./node_modules/@babel/runtime/helpers/typeof.js","webpack://Designer/./src/selector_manager/model/Selector.js","webpack://Designer/(webpack)/buildin/global.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://Designer/./src/state_manager/view/DropdownItem.js","webpack://Designer/./src/state_manager/view/StateDropdown.js","webpack://Designer/./src/state_manager/model/States.js","webpack://Designer/./src/state_manager/config/config.js","webpack://Designer/./src/state_manager/view/StateView.js","webpack://Designer/./src/state_manager/index.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/index.js","webpack://Designer/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://Designer/./src/selector_manager/model/Selectors.js","webpack://Designer/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://Designer/./node_modules/@uppy/utils/lib/Translator.js","webpack://Designer/./node_modules/codemirror/lib/codemirror.js","webpack://Designer/./src/utils/dom.js","webpack://Designer/./src/dom_components/view/ToolbarButtonView.js","webpack://Designer/./src/dom_components/view/ToolbarView.js","webpack://Designer/./src/dom_components/model/ToolbarButton.js","webpack://Designer/./src/dom_components/model/Toolbar.js","webpack://Designer/./src/commands/view/SelectComponent.js","webpack://Designer/./node_modules/@uppy/utils/lib/toArray.js","webpack://Designer/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://Designer/./node_modules/@babel/runtime/helpers/createClass.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/index.js","webpack://Designer/./src/domain_abstract/ui/Input.js","webpack://Designer/./node_modules/process/browser.js","webpack://Designer/./node_modules/buffer/index.js","webpack://Designer/./node_modules/classnames/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/icons.js","webpack://Designer/./node_modules/engine.io-parser/lib/browser.js","webpack://Designer/./src/style_manager/view/PropertiesView.js","webpack://Designer/./src/utils/Dragger.js","webpack://Designer/./src/domain_abstract/ui/InputNumber.js","webpack://Designer/./src/dom_components/model/Components.js","webpack://Designer/./src/commands/view/CommandAbstract.js","webpack://Designer/./src/domain_abstract/model/Styleable.js","webpack://Designer/./src/marketplace/config/templateIcons.js","webpack://Designer/./src/marketplace/model/template.js","webpack://Designer/./src/marketplace/view/templateDetail.js","webpack://Designer/./src/marketplace/model/templateList.js","webpack://Designer/./src/marketplace/model/templatesList.js","webpack://Designer/./src/marketplace/view/templateView.js","webpack://Designer/./src/marketplace/view/templatesListView.js","webpack://Designer/./src/marketplace/model/group.js","webpack://Designer/./src/marketplace/model/groups.js","webpack://Designer/./src/marketplace/view/categoryView.js","webpack://Designer/./src/marketplace/view/categoriesView.js","webpack://Designer/./src/marketplace/view/marketPlaceModalView.js","webpack://Designer/./src/marketplace/config/devicesConfig.js","webpack://Designer/./src/marketplace/view/devices.js","webpack://Designer/./src/marketplace/view/previewTemplate.js","webpack://Designer/./src/marketplace/view/overlay.js","webpack://Designer/./src/marketplace/index.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/util.js","webpack://Designer/./node_modules/@uppy/utils/lib/hasProperty.js","webpack://Designer/./node_modules/cuid/index.js","webpack://Designer/./node_modules/cash-dom/dist/cash.js","webpack://Designer/./src/style_manager/model/Property.js","webpack://Designer/./src/style_manager/model/PropertyComposite.js","webpack://Designer/./src/style_manager/model/Layer.js","webpack://Designer/./src/style_manager/model/Layers.js","webpack://Designer/./src/style_manager/model/PropertyStack.js","webpack://Designer/./src/style_manager/view/PropertyView.js","webpack://Designer/./src/style_manager/view/PropertyCompositeView.js","webpack://Designer/./src/style_manager/view/LayerView.js","webpack://Designer/./src/style_manager/view/LayersView.js","webpack://Designer/./src/style_manager/view/PropertyStackView.js","webpack://Designer/./src/style_manager/view/PropertyFileView.js","webpack://Designer/./src/style_manager/view/PropertyIntegerView.js","webpack://Designer/./src/style_manager/view/PropertyColorView.js","webpack://Designer/./src/style_manager/model/PropertyRadio.js","webpack://Designer/./src/style_manager/model/PropertySelect.js","webpack://Designer/./src/style_manager/view/PropertySelectView.js","webpack://Designer/./src/style_manager/model/PropertyDropdownFull.js","webpack://Designer/./src/style_manager/view/PropertyDropdownFullView.js","webpack://Designer/./src/style_manager/view/PropertyRadioView.js","webpack://Designer/./src/style_manager/model/PropertyInteger.js","webpack://Designer/./src/style_manager/model/PropertySlider.js","webpack://Designer/./src/style_manager/view/PropertySliderView.js","webpack://Designer/./src/style_manager/model/Properties.js","webpack://Designer/./src/studioPlugins/cssConverter.js","webpack://Designer/./src/studioPlugins/exportPlugin.js","webpack://Designer/./src/studioPlugins/infoPlugin.js","webpack://Designer/./src/studioPlugins/index.js","webpack://Designer/./node_modules/@transloadit/prettier-bytes/prettierBytes.js","webpack://Designer/./node_modules/@uppy/utils/lib/NetworkError.js","webpack://Designer/./node_modules/@uppy/utils/lib/RateLimitedQueue.js","webpack://Designer/./node_modules/@uppy/utils/lib/emitSocketProgress.js","webpack://Designer/./node_modules/@uppy/utils/lib/getSocketHost.js","webpack://Designer/./node_modules/@uppy/utils/lib/EventTracker.js","webpack://Designer/./node_modules/socket.io-client/node_modules/debug/src/browser.js","webpack://Designer/./node_modules/parseqs/index.js","webpack://Designer/./node_modules/component-inherit/index.js","webpack://Designer/./node_modules/engine.io-client/node_modules/debug/src/browser.js","webpack://Designer/./src/state_manager/model/State.js","webpack://Designer/./src/commands/view/SelectPosition.js","webpack://Designer/./src/utils/fetch.js","webpack://Designer/./src/parser/model/ParserHtml.js","webpack://Designer/./src/domain_abstract/model/TypeableCollection.js","webpack://Designer/./src/domain_abstract/view/DomainViews.js","webpack://Designer/./src/dom_components/view/ComponentsView.js","webpack://Designer/./src/navigator/view/ItemView.js","webpack://Designer/./src/domain_abstract/ui/InputColor.js","webpack://Designer/./src/utils/ColorPicker.js","webpack://Designer/./node_modules/keymaster/keymaster.js","webpack://Designer/./node_modules/promise-polyfill/src/index.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://Designer/./node_modules/postcss/lib/declaration.js","webpack://Designer/./node_modules/postcss/lib/node.js","webpack://Designer/./node_modules/postcss/lib/stringify.js","webpack://Designer/./node_modules/path-browserify/index.js","webpack://Designer/./node_modules/postcss/lib/parse.js","webpack://Designer/./node_modules/postcss/lib/comment.js","webpack://Designer/./node_modules/postcss/lib/at-rule.js","webpack://Designer/./node_modules/postcss/lib/container.js","webpack://Designer/./node_modules/postcss/lib/rule.js","webpack://Designer/./node_modules/lodash.throttle/index.js","webpack://Designer/./node_modules/@uppy/store-default/lib/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js","webpack://Designer/./node_modules/@uppy/status-bar/lib/index.js","webpack://Designer/./node_modules/@uppy/informer/lib/index.js","webpack://Designer/./node_modules/@uppy/thumbnail-generator/lib/index.js","webpack://Designer/./node_modules/@uppy/utils/lib/settle.js","webpack://Designer/./node_modules/@uppy/utils/lib/isNetworkError.js","webpack://Designer/./node_modules/@uppy/tus/lib/index.js","webpack://Designer/./node_modules/socket.io-parser/index.js","webpack://Designer/./node_modules/engine.io-client/lib/xmlhttprequest.js","webpack://Designer/./node_modules/engine.io-client/lib/transport.js","webpack://Designer/./node_modules/engine.io-client/node_modules/component-emitter/index.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars.js","webpack://Designer/./src/studioPlugins/editorEventHandler.js","webpack://Designer/./src/panels/model/Button.js","webpack://Designer/./src/panels/model/Buttons.js","webpack://Designer/./node_modules/grapesjs-style-gradient/dist/grapesjs-style-gradient.min.js","webpack://Designer/(webpack)/buildin/module.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js","webpack://Designer/./node_modules/postcss/lib/css-syntax-error.js","webpack://Designer/./node_modules/postcss/lib/stringifier.js","webpack://Designer/./node_modules/postcss/lib/processor.js","webpack://Designer/./node_modules/postcss/lib/lazy-result.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/source-map.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/source-map-generator.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/base64-vlq.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/array-set.js","webpack://Designer/./node_modules/postcss/lib/list.js","webpack://Designer/./node_modules/postcss/lib/root.js","webpack://Designer/./node_modules/codemirror/mode/css/css.js","webpack://Designer/./src/commands/view/CanvasClear.js","webpack://Designer/./src/commands/view/CanvasMove.js","webpack://Designer/./src/commands/view/ComponentDelete.js","webpack://Designer/./src/commands/view/ComponentDrag.js","webpack://Designer/./src/commands/view/ComponentEnter.js","webpack://Designer/./src/commands/view/ComponentExit.js","webpack://Designer/./src/commands/view/ComponentNext.js","webpack://Designer/./src/commands/view/ComponentPrev.js","webpack://Designer/./src/commands/view/ComponentStyleClear.js","webpack://Designer/./src/commands/view/CopyComponent.js","webpack://Designer/./src/commands/view/DeleteComponent.js","webpack://Designer/./src/commands/view/DeviceManager.js","webpack://Designer/./src/commands/view/Fullscreen.js","webpack://Designer/./src/commands/view/ImportTemplate.js","webpack://Designer/./src/commands/view/MarketplaceCommands.js","webpack://Designer/./src/commands/view/MoveComponent.js","webpack://Designer/./src/commands/view/OpenAssets.js","webpack://Designer/./src/commands/view/OpenBlocks.js","webpack://Designer/./src/commands/view/OpenLayers.js","webpack://Designer/./src/commands/view/OpenStyleManager.js","webpack://Designer/./src/commands/view/OpenTraitManager.js","webpack://Designer/./src/commands/view/PasteComponent.js","webpack://Designer/./src/commands/view/Preview.js","webpack://Designer/./src/commands/view/Resize.js","webpack://Designer/./src/commands/view/ShowOffset.js","webpack://Designer/./src/commands/view/StateManager.js","webpack://Designer/./src/commands/view/StudioCommands.js","webpack://Designer/./src/commands/view/StudioLogo.js","webpack://Designer/./src/commands/view/SwitchVisibility.js","webpack://Designer/./node_modules/namespace-emitter/index.js","webpack://Designer/./node_modules/cuid/lib/pad.js","webpack://Designer/./node_modules/@uppy/utils/lib/getFileType.js","webpack://Designer/./node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack://Designer/./node_modules/@uppy/utils/lib/mimeTypes.js","webpack://Designer/./node_modules/@uppy/utils/lib/generateFileID.js","webpack://Designer/./node_modules/@uppy/utils/lib/findDOMElement.js","webpack://Designer/./node_modules/@uppy/utils/lib/isDOMElement.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/RequestClient.js","webpack://Designer/./node_modules/@uppy/utils/lib/isPreviewSupported.js","webpack://Designer/./node_modules/@uppy/store-redux/lib/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FilePreview.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/AddFiles.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js","webpack://Designer/./node_modules/@uppy/utils/lib/isDragDropSupported.js","webpack://Designer/./node_modules/@uppy/status-bar/lib/StatusBarStates.js","webpack://Designer/./node_modules/@uppy/utils/lib/dataURItoBlob.js","webpack://Designer/./node_modules/@uppy/utils/lib/getDroppedFiles/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js","webpack://Designer/./node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js","webpack://Designer/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://Designer/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://Designer/./node_modules/@uppy/drag-drop/lib/index.js","webpack://Designer/./node_modules/@uppy/file-input/lib/index.js","webpack://Designer/./node_modules/@uppy/progress-bar/lib/index.js","webpack://Designer/./node_modules/@uppy/dropbox/lib/index.js","webpack://Designer/./node_modules/@uppy/google-drive/lib/index.js","webpack://Designer/./node_modules/@uppy/instagram/lib/index.js","webpack://Designer/./node_modules/@uppy/onedrive/lib/index.js","webpack://Designer/./node_modules/@uppy/facebook/lib/index.js","webpack://Designer/./node_modules/@uppy/url/lib/index.js","webpack://Designer/./node_modules/@uppy/webcam/lib/index.js","webpack://Designer/./node_modules/@uppy/utils/lib/getFileTypeExtension.js","webpack://Designer/./node_modules/@uppy/webcam/lib/CameraIcon.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/index.js","webpack://Designer/./node_modules/@uppy/aws-s3/lib/index.js","webpack://Designer/./node_modules/url-parse/index.js","webpack://Designer/./node_modules/@uppy/utils/lib/ProgressTimeout.js","webpack://Designer/./node_modules/@uppy/aws-s3-multipart/lib/index.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/index.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/index.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/isReactNative.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/storage.js","webpack://Designer/./node_modules/component-emitter/index.js","webpack://Designer/./node_modules/parseuri/index.js","webpack://Designer/./node_modules/socket.io-parser/node_modules/isarray/index.js","webpack://Designer/./node_modules/socket.io-parser/is-buffer.js","webpack://Designer/./node_modules/socket.io-client/lib/manager.js","webpack://Designer/./node_modules/engine.io-client/lib/transports/index.js","webpack://Designer/./node_modules/engine.io-client/lib/transports/polling.js","webpack://Designer/./node_modules/has-binary2/index.js","webpack://Designer/./node_modules/yeast/index.js","webpack://Designer/./node_modules/indexof/index.js","webpack://Designer/./node_modules/socket.io-client/lib/socket.js","webpack://Designer/./node_modules/socket.io-client/node_modules/component-emitter/index.js","webpack://Designer/./node_modules/socket.io-client/lib/on.js","webpack://Designer/./node_modules/component-bind/index.js","webpack://Designer/./node_modules/@uppy/xhr-upload/lib/index.js","webpack://Designer/./node_modules/@uppy/form/lib/index.js","webpack://Designer/./node_modules/get-form-data/es/index.js","webpack://Designer/./node_modules/@uppy/golden-retriever/lib/index.js","webpack://Designer/./node_modules/@uppy/redux-dev-tools/lib/index.js","webpack://Designer/./node_modules/moment/locale/af.js","webpack://Designer/./node_modules/moment/locale/ar.js","webpack://Designer/./node_modules/moment/locale/ar-dz.js","webpack://Designer/./node_modules/moment/locale/ar-kw.js","webpack://Designer/./node_modules/moment/locale/ar-ly.js","webpack://Designer/./node_modules/moment/locale/ar-ma.js","webpack://Designer/./node_modules/moment/locale/ar-sa.js","webpack://Designer/./node_modules/moment/locale/ar-tn.js","webpack://Designer/./node_modules/moment/locale/az.js","webpack://Designer/./node_modules/moment/locale/be.js","webpack://Designer/./node_modules/moment/locale/bg.js","webpack://Designer/./node_modules/moment/locale/bm.js","webpack://Designer/./node_modules/moment/locale/bn.js","webpack://Designer/./node_modules/moment/locale/bo.js","webpack://Designer/./node_modules/moment/locale/br.js","webpack://Designer/./node_modules/moment/locale/bs.js","webpack://Designer/./node_modules/moment/locale/ca.js","webpack://Designer/./node_modules/moment/locale/cs.js","webpack://Designer/./node_modules/moment/locale/cv.js","webpack://Designer/./node_modules/moment/locale/cy.js","webpack://Designer/./node_modules/moment/locale/da.js","webpack://Designer/./node_modules/moment/locale/de.js","webpack://Designer/./node_modules/moment/locale/de-at.js","webpack://Designer/./node_modules/moment/locale/de-ch.js","webpack://Designer/./node_modules/moment/locale/dv.js","webpack://Designer/./node_modules/moment/locale/el.js","webpack://Designer/./node_modules/moment/locale/en-au.js","webpack://Designer/./node_modules/moment/locale/en-ca.js","webpack://Designer/./node_modules/moment/locale/en-gb.js","webpack://Designer/./node_modules/moment/locale/en-ie.js","webpack://Designer/./node_modules/moment/locale/en-il.js","webpack://Designer/./node_modules/moment/locale/en-in.js","webpack://Designer/./node_modules/moment/locale/en-nz.js","webpack://Designer/./node_modules/moment/locale/en-sg.js","webpack://Designer/./node_modules/moment/locale/eo.js","webpack://Designer/./node_modules/moment/locale/es.js","webpack://Designer/./node_modules/moment/locale/es-do.js","webpack://Designer/./node_modules/moment/locale/es-us.js","webpack://Designer/./node_modules/moment/locale/et.js","webpack://Designer/./node_modules/moment/locale/eu.js","webpack://Designer/./node_modules/moment/locale/fa.js","webpack://Designer/./node_modules/moment/locale/fi.js","webpack://Designer/./node_modules/moment/locale/fil.js","webpack://Designer/./node_modules/moment/locale/fo.js","webpack://Designer/./node_modules/moment/locale/fr.js","webpack://Designer/./node_modules/moment/locale/fr-ca.js","webpack://Designer/./node_modules/moment/locale/fr-ch.js","webpack://Designer/./node_modules/moment/locale/fy.js","webpack://Designer/./node_modules/moment/locale/ga.js","webpack://Designer/./node_modules/moment/locale/gd.js","webpack://Designer/./node_modules/moment/locale/gl.js","webpack://Designer/./node_modules/moment/locale/gom-deva.js","webpack://Designer/./node_modules/moment/locale/gom-latn.js","webpack://Designer/./node_modules/moment/locale/gu.js","webpack://Designer/./node_modules/moment/locale/he.js","webpack://Designer/./node_modules/moment/locale/hi.js","webpack://Designer/./node_modules/moment/locale/hr.js","webpack://Designer/./node_modules/moment/locale/hu.js","webpack://Designer/./node_modules/moment/locale/hy-am.js","webpack://Designer/./node_modules/moment/locale/id.js","webpack://Designer/./node_modules/moment/locale/is.js","webpack://Designer/./node_modules/moment/locale/it.js","webpack://Designer/./node_modules/moment/locale/it-ch.js","webpack://Designer/./node_modules/moment/locale/ja.js","webpack://Designer/./node_modules/moment/locale/jv.js","webpack://Designer/./node_modules/moment/locale/ka.js","webpack://Designer/./node_modules/moment/locale/kk.js","webpack://Designer/./node_modules/moment/locale/km.js","webpack://Designer/./node_modules/moment/locale/kn.js","webpack://Designer/./node_modules/moment/locale/ko.js","webpack://Designer/./node_modules/moment/locale/ku.js","webpack://Designer/./node_modules/moment/locale/ky.js","webpack://Designer/./node_modules/moment/locale/lb.js","webpack://Designer/./node_modules/moment/locale/lo.js","webpack://Designer/./node_modules/moment/locale/lt.js","webpack://Designer/./node_modules/moment/locale/lv.js","webpack://Designer/./node_modules/moment/locale/me.js","webpack://Designer/./node_modules/moment/locale/mi.js","webpack://Designer/./node_modules/moment/locale/mk.js","webpack://Designer/./node_modules/moment/locale/ml.js","webpack://Designer/./node_modules/moment/locale/mn.js","webpack://Designer/./node_modules/moment/locale/mr.js","webpack://Designer/./node_modules/moment/locale/ms.js","webpack://Designer/./node_modules/moment/locale/ms-my.js","webpack://Designer/./node_modules/moment/locale/mt.js","webpack://Designer/./node_modules/moment/locale/my.js","webpack://Designer/./node_modules/moment/locale/nb.js","webpack://Designer/./node_modules/moment/locale/ne.js","webpack://Designer/./node_modules/moment/locale/nl.js","webpack://Designer/./node_modules/moment/locale/nl-be.js","webpack://Designer/./node_modules/moment/locale/nn.js","webpack://Designer/./node_modules/moment/locale/oc-lnc.js","webpack://Designer/./node_modules/moment/locale/pa-in.js","webpack://Designer/./node_modules/moment/locale/pl.js","webpack://Designer/./node_modules/moment/locale/pt.js","webpack://Designer/./node_modules/moment/locale/pt-br.js","webpack://Designer/./node_modules/moment/locale/ro.js","webpack://Designer/./node_modules/moment/locale/ru.js","webpack://Designer/./node_modules/moment/locale/sd.js","webpack://Designer/./node_modules/moment/locale/se.js","webpack://Designer/./node_modules/moment/locale/si.js","webpack://Designer/./node_modules/moment/locale/sk.js","webpack://Designer/./node_modules/moment/locale/sl.js","webpack://Designer/./node_modules/moment/locale/sq.js","webpack://Designer/./node_modules/moment/locale/sr.js","webpack://Designer/./node_modules/moment/locale/sr-cyrl.js","webpack://Designer/./node_modules/moment/locale/ss.js","webpack://Designer/./node_modules/moment/locale/sv.js","webpack://Designer/./node_modules/moment/locale/sw.js","webpack://Designer/./node_modules/moment/locale/ta.js","webpack://Designer/./node_modules/moment/locale/te.js","webpack://Designer/./node_modules/moment/locale/tet.js","webpack://Designer/./node_modules/moment/locale/tg.js","webpack://Designer/./node_modules/moment/locale/th.js","webpack://Designer/./node_modules/moment/locale/tk.js","webpack://Designer/./node_modules/moment/locale/tl-ph.js","webpack://Designer/./node_modules/moment/locale/tlh.js","webpack://Designer/./node_modules/moment/locale/tr.js","webpack://Designer/./node_modules/moment/locale/tzl.js","webpack://Designer/./node_modules/moment/locale/tzm.js","webpack://Designer/./node_modules/moment/locale/tzm-latn.js","webpack://Designer/./node_modules/moment/locale/ug-cn.js","webpack://Designer/./node_modules/moment/locale/uk.js","webpack://Designer/./node_modules/moment/locale/ur.js","webpack://Designer/./node_modules/moment/locale/uz.js","webpack://Designer/./node_modules/moment/locale/uz-latn.js","webpack://Designer/./node_modules/moment/locale/vi.js","webpack://Designer/./node_modules/moment/locale/x-pseudo.js","webpack://Designer/./node_modules/moment/locale/yo.js","webpack://Designer/./node_modules/moment/locale/zh-cn.js","webpack://Designer/./node_modules/moment/locale/zh-hk.js","webpack://Designer/./node_modules/moment/locale/zh-mo.js","webpack://Designer/./node_modules/moment/locale/zh-tw.js","webpack://Designer/./src/sidebars/config/config.js","webpack://Designer/./src/sidebars/view/menuButtonView.js","webpack://Designer/./src/sidebars/view/menuButtonsView.js","webpack://Designer/./src/sidebars/models/menuButton.js","webpack://Designer/./src/sidebars/models/menuButtons.js","webpack://Designer/./src/sidebars/view/menuGroupView.js","webpack://Designer/./src/sidebars/view/menuGroupsView.js","webpack://Designer/./src/sidebars/models/menuGroup.js","webpack://Designer/./src/sidebars/models/menuGroups.js","webpack://Designer/./src/sidebars/view/simpleMenu.js","webpack://Designer/./src/sidebars/view/parent.js","webpack://Designer/./src/sidebars/index.js","webpack://Designer/./src/commands/view/LeftButtonPanel.js","webpack://Designer/./src/style_manager/config/config.js","webpack://Designer/./src/style_manager/model/PropertyFactory.js","webpack://Designer/./src/style_manager/model/Sector.js","webpack://Designer/./src/style_manager/model/Sectors.js","webpack://Designer/./src/style_manager/view/SectorView.js","webpack://Designer/./src/style_manager/view/SectorsView.js","webpack://Designer/./src/style_manager/index.js","webpack://Designer/./src/navigator/config/config.js","webpack://Designer/./src/navigator/index.js","webpack://Designer/./node_modules/slim-select/dist/slimselect.min.js","webpack://Designer/./node_modules/backbone-undo/Backbone.Undo.js","webpack://Designer/./node_modules/promise-polyfill/src/finally.js","webpack://Designer/./node_modules/postcss/lib/postcss.js","webpack://Designer/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://Designer/./node_modules/regenerator-runtime/runtime.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/base.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js","webpack://Designer/./node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js","webpack://Designer/./src/keymaps/index.js","webpack://Designer/./src/undo_manager/index.js","webpack://Designer/./node_modules/timers-browserify/main.js","webpack://Designer/./node_modules/setimmediate/setImmediate.js","webpack://Designer/./node_modules/postcss/lib/map-generator.js","webpack://Designer/./node_modules/base64-js/index.js","webpack://Designer/./node_modules/ieee754/index.js","webpack://Designer/./node_modules/isarray/index.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/base64.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/mapping-list.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/source-map-consumer.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/binary-search.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/quick-sort.js","webpack://Designer/./node_modules/postcss/node_modules/source-map/lib/source-node.js","webpack://Designer/./node_modules/postcss/lib/warn-once.js","webpack://Designer/./node_modules/postcss/lib/result.js","webpack://Designer/./node_modules/postcss/lib/warning.js","webpack://Designer/./node_modules/postcss/lib/parser.js","webpack://Designer/./node_modules/postcss/lib/tokenize.js","webpack://Designer/./node_modules/postcss/lib/input.js","webpack://Designer/./node_modules/postcss/lib/previous-map.js","webpack://Designer/./node_modules/postcss/lib/vendor.js","webpack://Designer/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://Designer/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://Designer/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://Designer/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://Designer/./node_modules/codemirror/mode/xml/xml.js","webpack://Designer/./node_modules/codemirror/mode/javascript/javascript.js","webpack://Designer/./node_modules/codemirror-formatting/formatting.js","webpack://Designer/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://Designer/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://Designer/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://Designer/./src/navigator/view/ItemsView.js","webpack://Designer/./src/commands/view sync ^\\.\\/.*$","webpack://Designer/./src/marketplace/view/common.js","webpack://Designer/./node_modules/uppy/index.mjs","webpack://Designer/./node_modules/cuid/lib/fingerprint.browser.js","webpack://Designer/./node_modules/cuid/lib/getRandomValue.browser.js","webpack://Designer/./node_modules/mime-match/index.js","webpack://Designer/./node_modules/wildcard/index.js","webpack://Designer/./node_modules/@uppy/core/lib/supportsUploadProgress.js","webpack://Designer/./node_modules/@uppy/core/lib/loggers.js","webpack://Designer/./node_modules/@uppy/utils/lib/getTimeStamp.js","webpack://Designer/./node_modules/@uppy/core/lib/Plugin.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/AuthError.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/Provider.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/tokenStorage.js","webpack://Designer/./node_modules/@uppy/companion-client/lib/Socket.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/AuthView.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Browser.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Breadcrumbs.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Filter.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/ItemList.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Item/index.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Item/components/ItemIcon.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Item/components/GridLi.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Item/components/ListLi.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/FooterActions.js","webpack://Designer/./node_modules/@uppy/provider-views/lib/Loader.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/Dashboard.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileList.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/index.js","webpack://Designer/./node_modules/is-shallow-equal/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/PauseResumeCancelIcon.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/truncateString.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/VirtualList.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/components/FileCard/index.js","webpack://Designer/./node_modules/preact-css-transition-group/dist/preact-css-transition-group.js","webpack://Designer/./node_modules/@uppy/status-bar/lib/StatusBar.js","webpack://Designer/./node_modules/@uppy/utils/lib/prettyETA.js","webpack://Designer/./node_modules/@uppy/utils/lib/secondsToTime.js","webpack://Designer/./node_modules/@uppy/utils/lib/getSpeed.js","webpack://Designer/./node_modules/@uppy/utils/lib/getBytesRemaining.js","webpack://Designer/./node_modules/@uppy/utils/lib/isObjectURL.js","webpack://Designer/./node_modules/math-log2/index.js","webpack://Designer/./node_modules/exifr/dist/mini.legacy.umd.js","webpack://Designer/./node_modules/@uppy/utils/lib/findAllDOMElements.js","webpack://Designer/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js","webpack://Designer/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getRelativePath.js","webpack://Designer/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js","webpack://Designer/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/trapFocus.js","webpack://Designer/./node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js","webpack://Designer/./node_modules/lodash.debounce/index.js","webpack://Designer/./node_modules/@uppy/google-drive/lib/DriveProviderViews.js","webpack://Designer/./node_modules/@uppy/url/lib/UrlUI.js","webpack://Designer/./node_modules/@uppy/url/lib/utils/forEachDroppedOrPastedUrl.js","webpack://Designer/./node_modules/@uppy/utils/lib/canvasToBlob.js","webpack://Designer/./node_modules/@uppy/webcam/lib/supportsMediaRecorder.js","webpack://Designer/./node_modules/@uppy/webcam/lib/CameraScreen.js","webpack://Designer/./node_modules/@uppy/webcam/lib/SnapshotButton.js","webpack://Designer/./node_modules/@uppy/webcam/lib/RecordButton.js","webpack://Designer/./node_modules/@uppy/webcam/lib/RecordingLength.js","webpack://Designer/./node_modules/@uppy/webcam/lib/formatSeconds.js","webpack://Designer/./node_modules/@uppy/webcam/lib/PermissionsScreen.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/ScreenRecIcon.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/CaptureScreen.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/RecordButton.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/SubmitButton.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/StopWatch.js","webpack://Designer/./node_modules/@uppy/screen-capture/lib/StreamStatus.js","webpack://Designer/./node_modules/requires-port/index.js","webpack://Designer/./node_modules/querystringify/index.js","webpack://Designer/./node_modules/qs-stringify/index.js","webpack://Designer/./node_modules/@uppy/aws-s3/lib/MiniXHRUpload.js","webpack://Designer/./node_modules/@uppy/aws-s3-multipart/lib/MultipartUploader.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/upload.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/error.js","webpack://Designer/./node_modules/extend/index.js","webpack://Designer/./node_modules/js-base64/base64.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/request.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/source.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/uriToBlob.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/isCordova.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/readAsByteArray.js","webpack://Designer/./node_modules/tus-js-client/lib.es5/browser/fingerprint.js","webpack://Designer/./node_modules/@uppy/tus/lib/getFingerprint.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/Assembly.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/parseUrl.js","webpack://Designer/./node_modules/socket.io-client/lib/index.js","webpack://Designer/./node_modules/socket.io-client/lib/url.js","webpack://Designer/./node_modules/socket.io-client/node_modules/debug/src/debug.js","webpack://Designer/./node_modules/socket.io-client/node_modules/ms/index.js","webpack://Designer/./node_modules/socket.io-parser/node_modules/debug/src/browser.js","webpack://Designer/./node_modules/socket.io-parser/node_modules/debug/src/debug.js","webpack://Designer/./node_modules/socket.io-parser/node_modules/ms/index.js","webpack://Designer/./node_modules/socket.io-parser/node_modules/component-emitter/index.js","webpack://Designer/./node_modules/socket.io-parser/binary.js","webpack://Designer/./node_modules/engine.io-client/lib/index.js","webpack://Designer/./node_modules/engine.io-client/lib/socket.js","webpack://Designer/./node_modules/has-cors/index.js","webpack://Designer/./node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack://Designer/./node_modules/engine.io-parser/lib/keys.js","webpack://Designer/./node_modules/has-binary2/node_modules/isarray/index.js","webpack://Designer/./node_modules/arraybuffer.slice/index.js","webpack://Designer/./node_modules/after/index.js","webpack://Designer/./node_modules/engine.io-parser/lib/utf8.js","webpack://Designer/./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack://Designer/./node_modules/blob/index.js","webpack://Designer/./node_modules/engine.io-client/node_modules/debug/src/debug.js","webpack://Designer/./node_modules/engine.io-client/node_modules/ms/index.js","webpack://Designer/./node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack://Designer/./node_modules/engine.io-client/lib/transports/websocket.js","webpack://Designer/./node_modules/to-array/index.js","webpack://Designer/./node_modules/backo2/index.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/Client.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/AssemblyOptions.js","webpack://Designer/./node_modules/@uppy/transloadit/lib/AssemblyWatcher.js","webpack://Designer/./node_modules/@uppy/golden-retriever/lib/ServiceWorkerStore.js","webpack://Designer/./node_modules/@uppy/golden-retriever/lib/IndexedDBStore.js","webpack://Designer/./node_modules/@uppy/golden-retriever/lib/MetaDataStore.js","webpack://Designer/./node_modules/moment/locale sync ^\\.\\/.*$","webpack://Designer/./src/dom_components/config/config.js","webpack://Designer/./src/dom_components/model/ComponentTableCell.js","webpack://Designer/./src/dom_components/view/ComponentTableCellView.js","webpack://Designer/./src/dom_components/model/ComponentTableRow.js","webpack://Designer/./src/dom_components/view/ComponentTableRowView.js","webpack://Designer/./src/dom_components/model/ComponentTable.js","webpack://Designer/./src/dom_components/view/ComponentTableView.js","webpack://Designer/./src/dom_components/model/ComponentTableBody.js","webpack://Designer/./src/dom_components/model/ComponentTableHead.js","webpack://Designer/./src/dom_components/view/ComponentTableHeadView.js","webpack://Designer/./src/dom_components/view/ComponentTableBodyView.js","webpack://Designer/./src/dom_components/model/ComponentTableFoot.js","webpack://Designer/./src/dom_components/view/ComponentTableFootView.js","webpack://Designer/./src/dom_components/model/ComponentImage.js","webpack://Designer/./src/dom_components/model/ComponentMap.js","webpack://Designer/./src/dom_components/view/ComponentImageView.js","webpack://Designer/./src/dom_components/view/ComponentMapView.js","webpack://Designer/./src/dom_components/model/ComponentText.js","webpack://Designer/./src/dom_components/model/ComponentLink.js","webpack://Designer/./src/dom_components/view/ComponentTextView.js","webpack://Designer/./src/dom_components/view/ComponentLinkView.js","webpack://Designer/./src/dom_components/model/ComponentLabel.js","webpack://Designer/./src/dom_components/view/ComponentLabelView.js","webpack://Designer/./src/dom_components/model/ComponentVideo.js","webpack://Designer/./src/dom_components/view/ComponentVideoView.js","webpack://Designer/./src/dom_components/model/ComponentScript.js","webpack://Designer/./src/dom_components/view/ComponentScriptView.js","webpack://Designer/./src/dom_components/model/ComponentSvg.js","webpack://Designer/./src/dom_components/view/ComponentSvgView.js","webpack://Designer/./src/dom_components/model/ComponentTextNode.js","webpack://Designer/./src/dom_components/model/ComponentComment.js","webpack://Designer/./src/dom_components/view/ComponentTextNodeView.js","webpack://Designer/./src/dom_components/view/ComponentCommentView.js","webpack://Designer/./src/dom_components/model/ComponentWrapper.js","webpack://Designer/./src/dom_components/model/ComponentInput.js","webpack://Designer/./src/dom_components/view/ComponentInputView.js","webpack://Designer/./src/dom_components/model/ComponentNavblock.js","webpack://Designer/./src/dom_components/index.js","webpack://Designer/./src/trait_manager/config/config.js","webpack://Designer/./src/trait_manager/view/TraitView.js","webpack://Designer/./src/trait_manager/view/TraitSelectView.js","webpack://Designer/./src/trait_manager/view/TraitDropdownView.js","webpack://Designer/./src/trait_manager/view/TraitCheckboxView.js","webpack://Designer/./src/trait_manager/view/TraitNumberView.js","webpack://Designer/./src/trait_manager/view/TraitModernToggle.js","webpack://Designer/./src/trait_manager/view/TraitColorView.js","webpack://Designer/./src/trait_manager/view/TraitButtonView.js","webpack://Designer/./src/trait_manager/view/TraitsView.js","webpack://Designer/./src/trait_manager/index.js","webpack://Designer/./src/editor/config/config.js","webpack://Designer/./src/editor/model/Editor.js","webpack://Designer/./src/utils/extender.js","webpack://Designer/./src/editor/view/EditorView.js","webpack://Designer/./src/editor/index.js","webpack://Designer/./src/studioAssetManager/index.js","webpack://Designer/./src/plugin_manager/config/config.js","webpack://Designer/./src/utils/polyfills.js","webpack://Designer/./src/index.js","webpack://Designer/./src/plugin_manager/index.js","webpack://Designer/./src/asset_manager/config/config.js","webpack://Designer/./src/asset_manager/model/Asset.js","webpack://Designer/./src/asset_manager/model/AssetImage.js","webpack://Designer/./src/asset_manager/view/AssetImageView.js","webpack://Designer/./src/asset_manager/view/AssetView.js","webpack://Designer/./src/asset_manager/model/Assets.js","webpack://Designer/./src/asset_manager/view/AssetsView.js","webpack://Designer/./src/asset_manager/view/FileUploader.js","webpack://Designer/./src/asset_manager/index.js","webpack://Designer/./src/block_manager/config/config.js","webpack://Designer/./src/block_manager/model/Category.js","webpack://Designer/./src/block_manager/model/Block.js","webpack://Designer/./src/block_manager/model/Blocks.js","webpack://Designer/./src/block_manager/model/Categories.js","webpack://Designer/./src/block_manager/view/BlockView.js","webpack://Designer/./src/block_manager/view/CategoryView.js","webpack://Designer/./src/block_manager/view/BlocksView.js","webpack://Designer/./src/block_manager/index.js","webpack://Designer/./src/code_manager/config/config.js","webpack://Designer/./src/code_manager/model/HtmlGenerator.js","webpack://Designer/./src/code_manager/model/CssGenerator.js","webpack://Designer/./src/code_manager/model/JsonGenerator.js","webpack://Designer/./src/code_manager/model/JsGenerator.js","webpack://Designer/./src/code_manager/model/CodeMirrorEditor.js","webpack://Designer/./src/code_manager/view/EditorView.js","webpack://Designer/./src/code_manager/index.js","webpack://Designer/./src/panels/config/config.js","webpack://Designer/./src/panels/model/Panel.js","webpack://Designer/./src/panels/model/Panels.js","webpack://Designer/./src/panels/view/ButtonView.js","webpack://Designer/./src/panels/view/ButtonsView.js","webpack://Designer/./src/panels/view/PanelView.js","webpack://Designer/./src/panels/view/PanelsView.js","webpack://Designer/./src/panels/index.js","webpack://Designer/./src/css_composer/config/config.js","webpack://Designer/./src/css_composer/model/CssRule.js","webpack://Designer/./src/css_composer/model/CssRules.js","webpack://Designer/./src/css_composer/view/CssRuleView.js","webpack://Designer/./src/css_composer/view/CssGroupRuleView.js","webpack://Designer/./src/css_composer/view/CssRulesView.js","webpack://Designer/./src/css_composer/index.js","webpack://Designer/./src/canvas/view/CanvasView.js","webpack://Designer/./src/utils/Droppable.js","webpack://Designer/./src/canvas/config/config.js","webpack://Designer/./src/canvas/model/Frame.js","webpack://Designer/./src/canvas/model/Canvas.js","webpack://Designer/./src/canvas/view/FrameView.js","webpack://Designer/./src/canvas/index.js","webpack://Designer/./src/control_manager/model/Control.js","webpack://Designer/./src/control_manager/model/Controls.js","webpack://Designer/./src/control_manager/view/ControlView.js","webpack://Designer/./src/control_manager/view/ControlsView.js","webpack://Designer/./src/control_manager/view/ControlListView.js","webpack://Designer/./src/control_manager/config/config.js","webpack://Designer/./src/control_manager/index.js","webpack://Designer/./src/device_manager/config/config.js","webpack://Designer/./src/device_manager/model/Device.js","webpack://Designer/./src/device_manager/model/Devices.js","webpack://Designer/./src/device_manager/view/DevicesView.js","webpack://Designer/./src/device_manager/index.js","webpack://Designer/./src/parser/model/CustomCssParser.js","webpack://Designer/./src/parser/config/config.js","webpack://Designer/./src/parser/model/BrowserParserCss.js","webpack://Designer/./src/parser/model/ParserCss.js","webpack://Designer/./src/parser/index.js","webpack://Designer/./src/storage_manager/config/config.js","webpack://Designer/./src/storage_manager/model/LocalStorage.js","webpack://Designer/./src/storage_manager/model/RemoteStorage.js","webpack://Designer/./src/storage_manager/index.js","webpack://Designer/./src/selector_manager/config/config.js","webpack://Designer/./src/selector_manager/view/ClassTagView.js","webpack://Designer/./src/selector_manager/view/ClassTagsView.js","webpack://Designer/./src/selector_manager/index.js","webpack://Designer/./src/modal_dialog/config/config.js","webpack://Designer/./src/modal_dialog/model/Modal.js","webpack://Designer/./src/modal_dialog/view/ModalView.js","webpack://Designer/./src/modal_dialog/index.js","webpack://Designer/./src/utils/Sorter.js","webpack://Designer/./src/utils/Resizer.js","webpack://Designer/./src/utils/index.js","webpack://Designer/./src/rich_text_editor/model/RichTextEditor.js","webpack://Designer/./src/rich_text_editor/config/config.js","webpack://Designer/./src/rich_text_editor/index.js","webpack://Designer/./src/commands/config/config.js","webpack://Designer/./src/commands/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","self","global","this","previousUnderscore","_","ArrayProto","Array","ObjProto","SymbolProto","push","slice","toString","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","Ctor","obj","_wrapped","nodeType","VERSION","builtinIteratee","optimizeCb","func","context","argCount","index","collection","accumulator","apply","arguments","cb","iteratee","identity","isFunction","isObject","matcher","Infinity","restArguments","startIndex","length","Math","max","rest","args","baseCreate","result","shallowProperty","has","path","deepGet","MAX_ARRAY_INDEX","pow","getLength","isArrayLike","each","forEach","map","collect","results","currentKey","createReduce","dir","reducer","memo","initial","reduce","foldl","inject","reduceRight","foldr","find","detect","predicate","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","contains","includes","include","item","fromIndex","guard","values","indexOf","invoke","contextPath","method","pluck","where","attrs","findWhere","computed","lastComputed","v","min","shuffle","sample","random","clone","last","rand","temp","sortBy","criteria","sort","left","right","a","b","group","behavior","partition","groupBy","indexBy","countBy","reStrSymbol","toArray","isString","match","size","pass","first","head","take","array","tail","drop","compact","Boolean","flatten","input","shallow","strict","output","idx","isArguments","j","len","without","otherArrays","difference","uniq","unique","isSorted","isBoolean","seen","union","arrays","intersection","argsLength","unzip","zip","createPredicateIndexFinder","findLastIndex","sortedIndex","low","high","mid","floor","createIndexFinder","predicateFind","isNaN","lastIndexOf","range","start","stop","step","ceil","chunk","count","executeBound","sourceFunc","boundFunc","callingContext","TypeError","bound","callArgs","concat","partial","boundArgs","placeholder","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","throttled","remaining","clearTimeout","trailing","cancel","debounce","immediate","debounced","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","collectNonEnumProps","nonEnumIdx","constructor","proto","prop","allKeys","mapObject","pairs","invert","functions","methods","names","createAssigner","keysFunc","defaults","source","extend","extendOwn","assign","eq","deepEq","keyInObj","pick","omit","String","props","tap","interceptor","isMatch","aStack","bStack","type","className","valueOf","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isElement","nodelist","document","childNodes","Int8Array","isFinite","isSymbol","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","unescapeMap","createEscaper","escaper","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","escapeRegExp","escapeChar","template","text","settings","oldSettings","render","offset","variable","Function","e","data","argument","chain","instance","_chain","chainResult","mixin","toJSON","$","Backbone","previousBackbone","emulateHTTP","emulateJSON","addUnderscoreMethods","Class","attribute","defaultVal","unshift","addMethod","_isModel","modelMatcher","model","attributes","Events","eventSplitter","eventsApi","events","callback","opts","split","on","internalOn","listening","_events","onApi","ctx","_listeners","listenTo","_listenId","listeningTo","_listeningTo","thisId","objId","handlers","off","offApi","listeners","stopListening","ids","handler","_callback","onceMap","listenToOnce","offer","trigger","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","Model","cid","cidPrefix","parse","set","changed","initialize","validationError","idAttribute","sync","attr","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","current","prev","_pending","clear","hasChanged","changedAttributes","diff","old","previousAttributes","fetch","success","resp","serverAttrs","wrapError","save","validate","isNew","patch","xhr","destroy","url","base","urlError","encodeURIComponent","isValid","error","Collection","models","comparator","_reset","reset","setOptions","add","remove","merge","addOptions","splice","insert","at","singular","removed","_removeModels","added","merged","toAdd","toMerge","toRemove","modelMap","sortable","sortAttr","existing","_prepareModel","_addReference","orderChanged","_removeReference","previousModels","shift","_byId","modelId","callbackOpts","_onModelEvent","event","prevId","View","viewOptions","_ensureElement","delegateEventSplitter","tagName","selector","$el","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","listener","undelegate","_createElement","createElement","_setAttributes","methodMap","params","dataType","contentType","JSON","stringify","_method","beforeSend","setRequestHeader","processData","textStatus","errorThrown","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","route","isRegExp","_routeToRegExp","router","history","fragment","_extractParameters","execute","navigate","optional","exec","param","decodeURIComponent","History","checkUrl","location","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","rootPath","iframe","src","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","hash","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","removeEventListener","detachEvent","removeChild","clearInterval","title","_updateHash","protoProps","staticProps","child","parent","__super__","configurable","writable","hookCallback","hooks","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isDate","arr","fn","res","createUTC","format","locale","createLocalOrUTC","utc","getParsingFlags","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","from","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","stack","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","formatMoment","expandFormat","mom","makeFormatFunction","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","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","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","y","parseTwoDigitYear","parseInt","getSetYear","createDate","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","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","getLocale","defineLocale","abbr","_config","parentLocale","next","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","getDay","checkWeekday","obsOffset","militaryOffset","numOffset","hm","calculateOffset","setUTCMinutes","getUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","currentDateArray","weekYear","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","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","separator","utcOffset","sign","offsetFromString","chunkOffset","parts","cloneWithOffset","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","diffRes","parseIso","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","time","formats","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","properties","isMomentInputObject","isCalendarSpec","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","toObject","toDate","toISOString","keepOffset","inspect","suffix","zone","isLocal","for","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","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","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","_eras","isFormat","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","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","posNegDuration","relativeTime$1","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","elProt","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","shallowDiff","objOrig","objNew","keysNew","origValue","newValue","elem","getUnitFromValue","upFirst","camelCase","normalizeFloat","valueDef","stepDecimals","side","hasDnd","em","nativeDnD","getElement","isTextNode","getEl","isTaggableNode","isCommentNode","getModel","getElRect","rectText","def","top","width","height","createRange","selectNode","getBoundingClientRect","detach","getPointerEvent","touches","getKeyCode","which","keyCode","getKeyChar","fromCharCode","isEscKey","capitalize","str","substring","VNode","EMPTY_CHILDREN","nodeName","lastSimple","simple","children","vnode","Promise","resolve","then","cloneElement","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","getNodeProps","defaultProps","removeNode","parentNode","setAccessor","isSvg","cssText","innerHTML","__html","useCapture","eventProxy","setProperty","removeAttribute","removeAttributeNS","setAttributeNS","setAttribute","mounts","diffLevel","isSvgMode","flushMounts","afterMount","componentDidMount","dom","mountAll","componentRoot","ownerSVGElement","idiff","appendChild","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","isOwner","_parentComponent","setComponentProps","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","fc","vchildren","nextSibling","isHydrating","f","vchild","originalChildren","keyed","keyedLen","childrenLen","vlen","_child","__key","trim","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","unmountOnly","ref","removeChildren","lastChild","previousSibling","components","inst","Component","doRender","state","_disable","__ref","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","shouldComponentUpdate","componentWillUpdate","getChildContext","toUnmount","childComponent","childProps","baseParent","componentRef","componentDidUpdate","afterUpdate","_renderCallbacks","beforeUnmount","componentWillUnmount","inner","collectComponent","setState","forceUpdate","preact","label","target","default","visible","changeProp","conditions","requires","targetEvent","targetUpdated","getTargetValue","fromTarget","getAttributes","setTargetValue","validateTrait","specialCharacterTest","removeClass","addClass","setValueFromInput","final","toSet","avoidStore","getInitValue","validateUnique","validateTraitsWithDependency","editor","getHtml","executeCondition","con","evaluateCondition","condition","performOperation","cond","op","fromCondition","Trait","coll","handleAdd","handleReset","setTarget","opt","tm","tf","build","objs","labelPlhText","labelPlhHref","optionsTarget","TraitFactory","getConfig","Styleable","removable","draggable","droppable","badgable","stylable","unstylable","highlightable","copyable","resizable","editable","layerable","selectable","hoverable","void","status","content","icon","classes","script","isStateRecording","recordingStateName","customStates","recordedState","traits","customtrait","actionable","bg_property","bg_title","propagate","dmode","toolbar","init","updated","parentAttr","newAttr","toPropagate","voidElements","ccid","createId","initClasses","initTraits","initComponents","initToolbar","scriptUpdated","tagUpdated","attrUpdated","_idUpdated","emitUpdate","temporary","is","setDragMode","query","view","$els","findType","closest","replaceWith","class","setClass","setStyle","attrPrev","pr","setAttributes","addAttributes","newAttrs","getStyle","rule","getIdRule","getId","parseStyle","cc","propOrig","setIdRule","hasStyle","sm","cls","avoidInline","Selector","TYPE_ID","selectors","TYPE_CLASS","classe","getClasses","classStr","getClassesForStates","classArr","Config","privateClasses","toListen","clsArr","normalizeClasses","Selectors","comps","Components","addChild","avoidChildren","loadTraits","trait","append","ppfx","tb","command","ed","runCommand","force","Traits","trt","tr","getTrait","updateTrait","getTraitIndex","removeTrait","addTrait","clm","md","cloned","getName","customName","tag","getIcon","toHTML","sTag","customAttr","getAttrToHTML","attrString","code","comp","setId","setCssRule","styles","setRule","resetCustomState","getView","getScriptString","scr","scrStr","tagVarStart","tagVarEnd","reg","onAll","clb","resetId","oldId","newId","_getStyleRule","idS","_getStyleSelector","idUpdate","idPrev","getList","isComponent","nextId","getIncrementId","getNewId","ilen","uid","counter","domc","componentsById","checkId","sel","bindable","true","false","datasource","fieldname","datatype","font_property","font_title","modelOpt","draggableComponents","pfx","stylePrefix","pStylePrefix","updateStyle","renderAttributes","updateHighlight","updateStatus","updateState","updateContent","handleChange","onActive","avoidRender","dragstart","_clbObj","getEditor","handleDragStart","preventDefault","stopPropagation","run","updateClasses","importClasses","childrenView","renderChildren","cl","selectedCls","selectedParentCls","freezedCls","hoveredCls","actualCls","getAttribute","avoidHover","hl","styleToString","removeAttr","updateAttributes","textable","defaultAttr","contenteditable","getChildrenContainer","prevDef","updateScript","getCanvasView","container","getChildrenSelector","querySelector","getTemplate","ComponentsView","componentTypes","postRender","onRender","rootDir","montserrat","mavenpro","roboto","studioUrl","_extends","_defineProperties","descriptor","_wrapNativeSuper","_cache","Map","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","setPrototypeOf","__proto__","getPrototypeOf","Translator","ee","cuid","prettierBytes","DefaultStore","getFileType","getFileNameAndExtension","generateFileID","supportsUploadProgress","_require","justErrorsLogger","debugLogger","Plugin","RestrictionError","_Error","subClass","superClass","_this","_len","_key","isRestriction","Uppy","_this2","defaultLocale","strings","addBulkFilesFailed","0","1","youCanOnlyUploadX","youHaveToAtLeastSelectX","exceedsSize2","exceedsSize","youCanOnlyUploadFileTypes","noNewAlreadyUploading","noDuplicates","companionError","companionUnauthorizeHint","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","selectX","selectAllFilesFromFolderNamed","unselectAllFilesFromFolderNamed","selectFileNamed","unselectFileNamed","openFolderNamed","logOut","resetFilter","loading","authenticateWithTitle","authenticateWith","emptyFolderAdded","folderAdded","defaultOptions","autoProceed","allowMultipleUploads","debug","restrictions","maxFileSize","maxNumberOfFiles","minNumberOfFiles","allowedFileTypes","meta","onBeforeFileAdded","currentFile","files","onBeforeUpload","store","logger","log","i18nInit","plugins","getState","getPlugin","setFileMeta","setFileState","info","hideInfo","addFile","removeFile","pauseResume","_calculateProgress","updateOnlineStatus","resetProgress","pauseAll","resumeAll","retryAll","cancelAll","retryUpload","upload","emitter","emit","preProcessors","uploaders","postProcessors","currentUploads","allowNewUpload","capabilities","uploadProgress","individualCancellation","resumableUploads","totalProgress","isHidden","message","_storeUnsubscribe","subscribe","nextState","updateAll","_addListeners","Constructor","_proto","iteratePlugins","plugin","update","fileID","_extends2","translator","i18n","translate","i18nArray","translateArray","newOpts","setMeta","defaultProgress","percentage","bytesUploaded","uploadComplete","uploadStarted","updatedFiles","updatedFile","progress","addPreProcessor","removePreProcessor","addPostProcessor","removePostProcessor","addUploader","removeUploader","updatedMeta","newMeta","getFile","getFiles","_checkMinNumberOfFiles","smart_count","_checkRestrictions","file","_this$opts$restrictio","extension","allowedFileTypesString","types","backwardsCompat","_showOrLogErrorAndThrow","err","_temp","_ref","_ref$showInformer","showInformer","_ref$file","_ref$throwErr","throwErr","details","logMessageWithDetails","_assertNewUploadAllowed","_checkAndCreateFileStateObject","fileType","fileName","onBeforeFileAddedResult","fileExtension","isRemote","newFile","bytesTotal","remote","preview","_startIfAutoProceed","_this3","scheduledAutoProceed","catch","_extends3","addFiles","fileDescriptors","_this4","newFiles","errors","subError","removeFiles","fileIDs","_this5","_this$getState4","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","uploadsToRemove","uploadID","newFileIDs","stateUpdate","_calculateTotalProgress","removedFileIDs","isPaused","filesToRetry","_createUpload","forceAllowNewUpload","_runUpload","canHavePercentage","inProgress","preprocess","postprocess","sizedFiles","unsizedFiles","totalSize","acc","averageSize","uploadedSize","progressMax","currentProgress","_totalProgress","_this6","errorMsg","response","newError","uploadResp","uploadURL","navigator","onLine","wasOffline","getID","use","pluginId","existsPluginAlready","_msg","install","foundPlugin","_this7","pluginType","removePlugin","uninstall","updatedState","_this8","isComplexMessage","infoTimeoutID","newInfo","restore","_removeUpload","_extends4","_opts$forceAllowNewUp","_this$getState6","_getUpload","addResultData","_extends5","currentUpload","_this9","restoreStep","steps","lastStep","_extends6","updatedUpload","successful","failed","_this10","uploader","onBeforeUploadResult","currentlyUploadingFiles","curr","waitingFileIDs","fnAjaxRequest","ajaxURL","ajaxReqMethod","ajaxReqData","onSuccess","onError","ex","ShowVSAlert","alertType","alertMessage","html","fadeIn","fadeOut","merge_object_arrays","obj1","same","obj2","showLoader","hideLoader","hide","_typeof2","iterator","_typeof","active","private","protected","namePreEsc","escapeName","nameEsc","getFullName","g","escapeExpression","possible","badChars","createFrame","frame","_parent","blockParams","appendContextPath","chr","deleteState","itemClicked","resetToDefault","startRecordingState","GConfig","stateSelected","stateDeleted","getSelected","cssc","CssComposer","getAll","getRule","resetState","dropdownClicked","toggleClass","addState","addToCollection","fragmentEl","DropdonItem","createDocumentFragment","State","stopRecordingState","states","isActive","defaultstates","statesCollection","States","stateDropdown","StateDropdown","blockChanged","blockName","enableState","disableState","openState","$icon","hasClass","$stateInput","stateName","setBlockName","statesObj","blockID","blockWithStates","DomComponents","getStateView","StateView","stateJson","componentsid","StudioStates","block_id","block_name","getJson","RequestClient","Provider","Socket","arrayWithoutHoles","iterableToArray","nonIterableSpread","getStyleable","getValid","getFullString","asyncGeneratorStep","gen","_next","_throw","done","errorProps","Exception","loc","line","endLineNumber","column","endColumn","end","captureStackTrace","lineNumber","nop","pluralize","_apply","prevLocale","phrase","_String$prototype","dollarRegex","interpolated","replacement","insertReplacement","rx","newParts","raw","plural","userAgent","platform","gecko","ie_upto10","ie_11up","edge","ie","ie_version","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","rmClass","removeChildrenAndAdd","elt","eltP","host","activeElt","activeElement","shadowRoot","joinClasses","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","copyObj","overwrite","countColumn","tabSize","startValue","search","nextTab","selectionStart","selectionEnd","_e","Delayed","scrollerGap","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","col","spaceStrs","spaceStr","lst","nothing","createObj","nonASCIISingleCaseWordChar","isWordCharBasic","ch","isWordChar","helper","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","findFirst","pred","midF","bidiOther","getBidiPartAt","order","sticky","found","cur","bidiOrdering","lowTypes","arabicTypes","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","level","outerType","i$1","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","replace$1","j$1","i$7","j$2","nstart","reverse","getOrder","noHandlers","map$$1","_handlers","getHandlers","signal","signalDOMEvent","cm","override","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","range$$1","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","modes","mimeModes","defineMode","dependencies","resolveMode","spec","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","copyState","nstate","innerMode","startState","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","lines","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","lineNo","no","lineAtHeight","outer","lh","isLine","lineNumberFor","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","maxPos","minPos","clipLine","clipPos","linelen","clipToLen","clipPosArray","eol","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","indentation","pattern","consume","caseInsensitive","cased","hideFirstChars","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","maxHighlightLength","stateAfter","styleClasses","highlightFrontier","modeFrontier","precise","minindent","minline","lim","indented","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","copy","Token","takeToken","asArray","extractLineClasses","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","sawReadOnlySpans","sawCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","stretchSpansOverChange","change","full","oldFirst","markedSpans","oldLast","startCh","endCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansBefore","startsBefore","markedSpansAfter","sameLine","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","detachMarkedSpans","detachLine","attachMarkedSpans","attachLine","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","lineNo$$1","visualLine","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","defaultSpecialCharPlaceholder","startStyle","endStyle","css","displayText","trailingBefore","spaceBefore","special","specialChars","mustWrap","txt$1","tabWidth","specialCharPlaceholder","fullStyle","part","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","visualLineContinued","hidden","buildViewArray","nextPos","operationGroup","orphanDelayedCallbacks","signalLater","delayedCallbacks","fireOrphanDelayed","delayed","updateLineForChanges","dims","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","zIndex","getLineContent","ext","built","background","updateLineBackground","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","markers","gutterMarkers","lineNumbers","wrap$1","gutterWrap","gutterLeft","gutterSpecs","gutterWidth","alignable","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","marginLeft","widgetHeight","parentStyle","gutters","clientWidth","eventInWidget","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","paddingRight","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","mapFromLineView","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","lineMeasure","updateExternalMeasurement","rect","hasHeights","prepared","varHeight","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","ensureLineHeights","place","nodeAndOffsetInLineMap","coverStart","coverEnd","getUsefulRect","screen","logicalXDPI","deviceXDPI","normal","fromRange","hasBadZoomedRects","scaleX","scaleY","logicalYDPI","deviceYDPI","maybeUpdateRectForZooming","rSpan","charWidth","nullRect","rtop","rbot","bot","bogus","singleCursorHeightPerLine","rbottom","measureCharInner","measureText","mStart","mEnd","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","widgetHeight$$1","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","closestDist","endX","dist","textHeight","clientLeft","offsetLeft","compensateForHScroll","perLine","widgetsHeight","estimateLineHeights","est","estHeight","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","ranges","primIndex","showCursorWhenSelecting","drawSelectionCursor","drawSelectionRange","cursor","cursorHeight","otherCursor","cmpCoords","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","extent","iterateBidiSections","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","blinker","cursorDiv","visibility","cursorBlinkRate","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","onBlur","readOnly","selForContextMenu","receivedFocus","updateHeightsInViewport","prevBottom","lineDiv","updateWidgetHeight","chWidth","visibleLines","viewport","ensure","ensureFrom","ensureTo","calculateScrollPos","snapMargin","screentop","docBottom","atTop","atBottom","newTop","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","margin","cursorScrollMargin","scrollToCoords","scrollToCoordsRange","sPos","updateScrollTop","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","setScrollLeft","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","checkedZeroWidth","minHeight","minWidth","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","cursorActivityCalled","selectionChanged","updateMaxLine","ops","ownsGroup","endOperation","endCb","callbacks","fireCallbacksForOps","finishOperation","endOperation_R1","updatedDisplay","mustUpdate","updateDisplayIfNeeded","endOperation_R2","endOperation_W2","endOperation_finish","endOperations","scrollbarsClipped","marginBottom","borderRightWidth","maybeClipScrollbars","DisplayUpdate","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","doScroll","innerHeight","scrollNode","scrollIntoView","maybeScrollWindow","endCoords","scrollPos","startTop","startLeft","scrollPosIntoView","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","editorIsHidden","wrapperHeight","oldDisplayWidth","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","adjustView","toUpdate","selSnapshot","hasFocus","anchorNode","anchorOffset","focusNode","focusOffset","selectionSnapshot","updateNumbersFrom","rm","currentWheelTarget","updateNumber","patchDisplay","snapshot","removeAllRanges","addRange","restoreSelection","selectionDiv","reportedViewFrom","reportedViewTo","updateGutterSpace","alignWidgets","align","innerW","lineGutter","lineNumInnerWidth","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","wheelDX","wheelDY","activeTouch","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","canScrollX","canScrollY","pixels","movedX","movedY","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","estimateHeight$$1","spansFor","updateLine","linesFor","firstLine","lastText","lastSpans","nlines","added$1","added$2","linkedDocs","sharedHistOnly","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","startGen","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","addChangeToHistory","selAfter","opId","hist","historyEventDelay","lastChangeEvent","pushSelectionToHistory","addSelectionToHistory","selectionEventCanBeMerged","clearRedo","dest","removeClearedSpans","explicitlyCleared","mergeOldSpans","getOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","setSelectionReplaceHistory","setSelectionNoUndo","filterSelectionChange","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","makeChange","ignoreReadOnly","suppressEdits","mark","mk","dfrom","dto","removeReadOnlyRanges","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","recomputeMaxLength","checkWidthStart","retreatFrontier","changesHandler","changeHandler","makeChangeSingleDocInEditor","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","oldHeight","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","adjustScrollWhenAboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","cloneNode","isParent","SharedTextMarker","markTextShared","replacedWith","addToHistory","curLine","addMarkedSpan","clearOnEnter","clearHistory","withOp","visual","dHeight","findSharedMarkers","findMarks","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","hint","oldPrev","newPrev","computeReplacedSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","removeLineClass","addLineWidget","insertAt","aboveVisible","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","mFrom","mTo","subMark","copySharedMarkers","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","dataTransfer","isReadOnly","FileReader","File","read","loadFile","allowDropFileTypes","reader","onload","readAsText","draggingText","text$1","getData","selected","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","resizeTimer","onResize","setSize","keyNames","3","8","9","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","44","45","46","59","61","91","92","93","106","107","109","110","111","145","173","186","187","188","189","190","191","192","219","220","221","222","63232","63233","63234","63235","63272","63273","63275","63276","63277","63302","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","visualLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","dropShift","ensurePolled","prevShift","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","keyMaps","extraKeys","lookupKeyForEditor","handleKeyBinding","motion","lastStoppedKey","onKeyDown","handled","up","showCrossHair","onKeyUp","onKeyPress","charCode","handleCharBinding","lastClick","lastDoubleClick","PastClick","onMouseDown","supportsTouch","clickInGutter","repeat","compare","clickRepeat","selectingText","handleMappedButton","contained","option","addNew","moveOnDrag","configureMouse","dragDrop","moved","dragEnd","mouseMove","dragStart","e2","leftButtonStartDrag","ourRange","ourIndex","startSel","rangeForUnit","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","anchorLine","boundary","headIndex","usePart","bidiSimplify","editorSize","move","buttons","curCount","leftButtonSelect","leftButtonDown","onContextMenu","findWordAt","gutterEvent","prevent","mX","mY","lineBox","contextMenuInGutter","themeChanged","theme","Init","optionHandlers","dragDropChanged","funcs","dragFunctions","toggle","enter","over","leave","wrappingChanged","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","word","touchFinished","prevTouch","finishTouch","farAway","touch","radiusX","radiusY","isMouseLikeTouchEvent","pageX","pageY","frag","onDragOver","setData","effectAllowed","setDragImage","img","_top","onDragStart","getField","registerEventHandlers","finishInit","initHooks","textRendering","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","spellcheck","autocorrect","autocapitalize","hiddenTextarea","border","findPosH","origDir","moveOnce","boundToLine","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","nextCh","moveVisually","sawType","getHelper","hitSide","findPosV","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","badPos","bad","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","textContent","dist$1","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","blur","pollSelection","pollInterval","poll","scan","isInGutter","triggerOnKeyDown","pollContent","fromNode","toNode","toIndex","newText","closing","extraLinebreak","addText","walk","cmText","markerID","isBlock","domTextBetween","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","contentEditable","readOnlyChanged","resetPosition","TextareaInput","prevInput","pollingFast","createField","textarea","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","headPos","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","scrollTo","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","attach","integer","defineOptions","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","insertSorted","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelpers","help","_global","getStateAfter","defaultTextHeight","defaultCharWidth","getViewport","addWidget","vspace","hspace","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","amount","rtlMoveVisually","goalColumn","goals","startChar","check","getScrollInfo","scrollToRange","interpret","swapDoc","phraseText","phrases","getWrapperElement","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","addEditorMethods","dontDelegate","defineMIME","mime","defineExtension","defineDocExtension","fromTextArea","tabindex","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","cmpPos","addLegacyProps","oldEl","newEl","appendAtIndex","appendVNodes","vNodes","vNodesArr","mousedown","handleClick","DomainViews","itemView","ToolbarButtonView","ToolbarButton","showOffsets","enable","frameOff","canvasOff","adjScroll","startSelectComponent","updateAttached","toggleSelectComponent","stopSelectComponent","getCanvasBody","win","getContentWindow","onHover","onOut","onClick","onFrameScroll","onSelect","onHovered","trg","setHovered","forceChange","getElementPos","updateBadge","updateHighlighter","showElementOffset","hideBadge","hideHighlighter","hideElementOffset","elPos","stopCommand","showFixedElementOffset","hideFixedElementOffset","canvas","getHighlighter","multiple","selectToggle","clearSelection","Canvas","getWindow","getSelectedAll","selColl","selIndex","selectAdd","initResize","customeLabel","customBadgeLabel","cacheEl","badge","getBadge","clsBadge","badgeLabel","bStyle","canvasPos","getCanvasPosition","canvasTop","canvasLeft","posTop","badgeW","hlStyle","updateToolbar","modelToStyle","resizeClass","toggleBodyClass","docs","onStart","resizer","keyHeight","keyWidth","currentUnit","keepAutoHeight","keepAutoWidth","getModelToStyle","computedStyle","modelStyle","currentWidth","autoWidth","currentHeight","autoHeight","startDim","unitHeight","unitWidth","onMove","onEnd","updateTarget","selectedHandler","onlyHeight","onlyWidth","bodyw","getBody","updateEvent","toolbarEl","getToolbarEl","toolbarStyle","showToolbar","opacity","Toolbar","toolbarView","ToolbarView","updateToolbarPos","getTargetToElementDim","frameOffset","getFrameOffset","elementHeight","targetHeight","elementTop","elRight","elementLeft","elementWidth","targetWidth","canvasWidth","getPosition","clean","selEl","hoverClass","getBadgeEl","viewEl","updateContainer","cleanPrevious","frameEl","sender","preserveSelected","setSelected","_class","AuthView","Browser","LoaderView","isPreviewSupported","CloseWrapper","_Component","onUnmount","ProviderView","provider","viewType","showTitles","showFilter","showBreadcrumbs","filterItems","filterQuery","toggleSearch","getFolder","getNextFolder","logout","preFirstRender","handleAuth","sortByTitle","sortByDate","isActiveRow","isChecked","toggleCheckbox","handleError","handleScroll","listAllFiles","donePicking","cancelPicking","_proto2","tearDown","_updateFilesAndFolders","folders","nextPagePath","isFolder","setPluginState","didFirstRender","onFirstRender","_loaderWrapper","updatedDirectories","getPluginState","directories","username","folder","requestPath","lastCheckbox","tagFile","providerFileToId","mimeType","fileId","companionUrl","fileUrl","providerOptions","thumbnail","uppy","currentSelection","revoked","manual_revoke_url","authenticated","filterInput","inputEl","isSearchVisible","sorting","sortedFiles","fileA","fileB","localeCompare","sortedFolders","folderA","folderB","modifiedDate","sortBySize","getItemData","activeRow","getItemId","addFolder","folderId","selectedFolders","currentTarget","_this$plugin$getPlugi3","_currentSelection","prevIndex","currentIndex","authState","btoa","protocol","hostname","port","clientVersion","link","authUrl","authWindow","handleToken","_isOriginAllowed","companionAllowedHosts","setAuthToken","allowedOrigin","getRegex","isAuthError","_isHandlingScroll","_this5$plugin$getPlug","moreFiles","promises","dashboard","hideAllPanels","promise","catch_","_this$plugin$getPlugi6","pluginName","pluginIcon","targetViewOptions","browserProps","holderClass","inputClass","handleModelChange","elementUpdated","getInputEl","fromInput","plh","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","nextTick","browser","env","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","Uint8Array","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","isBuffer","checked","buffer","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","hexWrite","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","fill","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","_arr","toHex","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","hasOwn","classNames","argType","defaultPickerIcon","focusable","viewBox","iconCopy","iconResume","transform","points","iconPause","iconRetry","localIcon","xmlns","iconMyDevice","checkIcon","iconImage","cx","cy","iconAudio","iconVideo","iconPDF","iconArchive","iconFile","iconText","iconCopyLink","iconPencil","iconCross","iconPlus","base64encoder","hasBinary","sliceBuffer","utf8","isAndroid","isPhantomJS","dontSendBlobs","packets","ping","pong","upgrade","packetslist","Blob","ary","eachWithIndex","encodePacket","packet","supportsBinary","utf8encode","encodeBase64Packet","contentArray","resultBuffer","encodeArrayBuffer","fr","readAsArrayBuffer","encodeBlobAsArrayBuffer","blob","encodeBlob","encodeBase64Object","encoded","encode","b64data","b64","readAsDataURL","typed","decodePacket","binaryType","utf8decode","decodeBase64Packet","decode","tryDecode","encodePayload","isBinary","encodePayloadAsBlob","encodePayloadAsArrayBuffer","doneCallback","setLengthHeader","decodePayload","decodePayloadAsBinary","encodedPackets","totalLength","resultArray","bufferIndex","ab","lenStr","binaryIdentifier","lengthAry","bufferTail","buffers","tailArray","msgLength","propTarget","onChange","onInputRender","customValue","addTo","appendTo","typeView","resetPos","Dragger","onDrag","setPosition","guidesStatic","guidesTarget","snapOffset","scale","getDocumentEl","getContainerEl","getWindowEl","drag","keyHandle","lastScroll","actualScroll","scrollDiff","lastScrollDiff","toggleDrag","startPointer","getPointerPos","startPosition","getStartPosition","globScrollDiff","currentPos","glDiff","lockedAxis","detectAxisLock","moveDelta","co","deltaPre","currentPointer","snapGuides","newDelta","trgX","trgY","stat","isY","axs","trgPoint","statPoint","deltaPoint","trgGuide","isPointIn","trgValue","setGuideLock","lock","ofst","guide","trgName","cancelled","xPos","yPos","defaultView","parentWindow","getPos","getPointerPosition","pEv","relX","relY","absX","absY","Input","contClass","valid","validateInputValue","deepCheck","validObj","handleUnitChange","getUnitEl","unitEl","upArrowClick","normalizeValue","downArrowClick","downIncrement","moveIncrement","upIncrement","prValue","defValue","fixed","regFixed","valCopy","uN","onAdd","df","it","logWarning","parseString","parseHtml","require","addCollection","isMult","processDef","mdl","processor","modelPr","$$typeof","parserHtml","splitPropsFromAttr","getType","setClassRule","editorModel","badgeClass","plhClass","freezClass","getCanvas","$canvas","$wrapper","getCanvasWrapper","getFrameEl","canvasTool","getCanvasTools","bodyEl","getWrapperEl","getToolsEl","callRun","abort","callStop","ParserHtml","extendStyle","propNew","addStyle","removeStyle","imp","important","getSelectors","template_id","is_active","control_id","keywords","image","description","js","templateConfig","commonFunction","sourceFile","icons","iconFolder","defaulticon","templateData","formatData","modelData","groupsData","groups","TemplateModel","isNewTemplate","$templateName","$keywords","$groupID","$imageUrl","$uploadLoader","$description","$update","$add","$active","openFilePicker","closeModal","addToMarketPlaceTemplate","submitButtonClicked","updateMarketplaceTemplate","uploadImage","fileData","uploadImagetoS3","createTags","prefilltheValues","bindDragEvents","dropArea","preventDefaults","formData","FormData","image_url","showErrors","hideErrors","templateName","groupID","imageUrl","getCss","payload","Commands","renderTemplate","group_name","getGroupName","viewObject","templateView","groupName","is_selected","deactivateAll","updateActive","categorySelected","categoryView","is_rendering","templateListData","template_list","categoriesView","categoryModel","loadTemplates","markup","templatesList","templatelist","setTemplateListView","templateList","templatesListview","templatesListModel","resolution","deviceList","DeviceConfig","previewFrame","siblings","previewFrameContainer","deviceChanged","dataset","changeDevice","deviceID","device","previewFramWidth","outerWidth","deviceScale","devices","loadTemplateInIframe","getGeneratedPageURL","addTemplateToBlock","BlockManager","category","closePreview","getBlobURL","URL","createObjectURL","cssURL","jsURL","openMarketPlace","getAllTemplates","get_all_templates","viewMarketplaceModal","addupdateTemplate","controlID","templateDetailModal","openPreview","templateID","previewTemplateModal","getArg","aArgs","aName","aDefaultValue","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","urlGenerate","aParsedUrl","normalize","aPath","isAbsolute","aRoot","aPathUrl","aRootUrl","joined","relative","supportsNullProto","isProtoString","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","fingerprint","pad","getRandomValue","blockSize","discreteValues","randomBlock","safeCounter","slug","print","isCuid","stringToCheck","startsWith","isSlug","idMatch","classMatch","htmlMatch","singlet","getElementsByTagName","querySelectorAll","parseHTML","implementation","createHTMLDocument","onReady","readyState","cash","elems","getElementById","oMatchesSelector","getCompareFunction","isNumeric","getDataCache","removeData","notWhiteMatch","classList","removeProp","camelRegex","whiteSpace","letter","getPrefixedProp","ucProp","removeEvent","eventCache","selectedIndex","getSelectSingle_","getSelectMultiple_","insertContent","prepend","insertAdjacentHTML","insertElement","prefixedProp","lower","margins","runOnce","originalCallback","finalCallback","registerEvent","one","ready","evt","createEvent","initEvent","serialize","elements","insertAfter","outerHTML","prependTo","docEl","clientTop","nextElementSibling","not","parents","previousElementSibling","Property","functionName","fixedValues","toRequire","requiresParent","requirecss","callInit","clearValue","complete","parseValue","valueStr","numeric","num","getDefaultValue","getFullValue","hasValue","callParentInit","skipInit","detached","Properties","updateValues","getSplitSeparator","getPropertyAt","getPropertyValue","Layer","onReset","noIncrement","getSeparator","getLayersFromValue","layers","cleaned","layerValue","getLayersFromStyle","styleObj","propModel","layer","propertyObj","layerProprs","propertyName","getPropertyValues","layerSeparator","layersColl","Layers","getLayers","getCurrentLayer","getLayersFromTarget","templateLabel","templateInput","inputHolderId","sector","modelValueChanged","updateVisibility","updatedCls","computedCls","labelEl","clearStyleEl","getClearEl","clearStyle","clearProperties","clearEl","getTarget","getTargetModel","getHelperModel","inputValueChanged","getInputValue","setStatus","emitUpdateTarget","checkVisibility","targetValue","ignoreDefault","defaultValue","computedValue","getComputedValue","highlightChanged","showComputed","highlightComputed","hideNotStylable","isTargetStylable","isComponentStylable","show","customFetchValue","ignoreCustomValue","computedDef","computedDefault","avoid","avoidComputed","notToSkip","fromParent","updateTargetStyle","resetwhen","stylableReq","sectors","parentEl","setRawValue","cleanValue","clearCached","$input","targetUpdate","PropertyView","propView","$props","propsView","PropertiesView","getPropsConfig","mIndex","valueOnIndex","click","textLayer","stackModel","sorter","propsConfig","customPreview","onPreview","updatePreview","initSorter","startSort","stackIndex","valueInt","previewEl","getPreviewEl","getPropertiesWrapper","propsWrapEl","wrapEl","deselectAll","utils","Sorter","ignoreViewChildren","containerSel","itemSel","LayerView","PropertyCompositeView","indexChanged","refreshLayers","addLayer","deepClone","getLayerValues","layersObj","fieldEl","subModel","subProp","LayersView","assetsLabel","modal","am","$preview","$previewBox","componentValue","setPreviewView","setPreview","pv","spreadUrl","openAssetManager","accept","onDblClick","asset","inputInst","$unit","PropertyIntegerView","InputColor","$color","colorEl","onOptionChange","getOptions","addOption","updateOptions","optionsStr","styleAttr","inputH","InputNumber","itemCls","inputStr","labelTxt","titleAttr","inputHld","inputChk","getCheckedEl","inputIn","showInput","getSliderEl","slider","inputValueChangedSoft","TypeableCollection","PropertyStack","PropertyStackView","isType","PropertyComposite","PropertyFileView","PropertyColorView","PropertySelect","PropertySelectView","PropertyDropdown","PropertyDropdownView","PropertyRadio","PropertyRadioView","PropertySlider","PropertySliderView","PropertyInteger","control_label_css_for_handlebars","processCSS","styleText","action","dataToProcess","sass","Sass","compile","tab","getStudioHtml","ht","$ht","$divWithId","idReplaced","idToReplace","replaceIdFromScripts","getCoffeeHtml","$html","getRfTag","coffeehtml","getCoffeeConfig","edithtml","getDefaultStyleForEditProp","fontweight","fontsize","textcolor","textalign","backgroundcolor","getEditPropAttr","formulaflag","data_source","getCoffeeAttr","getDefaultAttr","data_type","editorFormat","getDataTypeAttrForEachCompositComp","getDataTypeAttr","event_items","getActionsAttr","getActionEventItemsAttr","$component","idrule","classrule","getCoffeeEdit","dispaly_name","getStudioCss","cssfor","rawCSS","processMediaCss","styleConverter","processedResponse","processedCSS","getEditStylePropertyCss","mediaCss","media","mediastr","getCoffeeScript","setcode","tagType","getIfConBasedOnFieldTypeForCoffee","getCoffee","control_name","display_name","viewHtml","edit","StateManager","getJs","getcode","getset","getIfConBasedOnFieldType","createObjectForGetValue","actionEventListner","getActionsJs","getActionEventListner","getHB","validateCss","removePopup","placeAndShowPopup","popHeight","popWidth","windowHeight","windowWidth","outerHeight","innerWidth","CF","links_arr","Links_array_new_1591782873","uid1_1591782873","Title_1591782873","Sub_title","sub_title_1591782873","links","banner_url_1591782873","rich_text","Rich_text_description_1591782873","documentation","showPopUp","$this","timeout_value","docId","Ldiv","linkObj","link_count","Handlebars","controlsMeta","isControlListEmpty","designerCodeForFirstControl","getAllControlIcons","iconsHTML","fnHandlebars","getControlsGroup","groupList","getMkpControlsGroup","SlimSelect","storeDesignerCodeForFirstControl","validateField","$element","hasSpecialCharacter","hasSpace","validationList","defaultCheckList","checkIsEmpty","checkSpecialChar","checkSpace","ignoreSpecialCharacter","checkList","startsWithCharRegex","formatWithoutComma","$errMsgBox","starWithChar","showErrorInAddScriptModal","devLog","startLoader","stopLoader","saveButtonClicked","saveButton","Panels","getButton","current_control_json","current_control","c_name","dis_name","exportPlugin","cssScript","coffeeScript","reqObj","tags","icon_url","coffee","handlebars","states_data","angular_js","angular_css","angular_ts","designer_html","designer_css","ControlManager","refreshList","hideTabShowCurrent","datasetId","clearAddNewComponentFields","$nameContainer","$summary","$definition","$example","clearUpdateComponentFields","slim","closeSidebar","ErrText","tempId","tempHTML","fnHandle","clearModalContentForAll","PublishCode","$releaseNotes","release_notes","group_id","getComponent","dev_document","getWrapper","setComponents","currentDocumentMeta","isDeprecated","isOnMarketplace","v1","v2","inverse","addControlMarketplaceImgSuccess","editControlMarketplaceImgSuccess","errorForControlMarketplaceImg","bindClickEvent","$loader","$droparea","$group","$iconPicker","$marketplace","$mkpgrp","$mkpimgupload","$supdevice","$status","$depricated","getPanel","clicked","searchText","keydown","$dispNameContainer","$searchTagContainer","$groupContainer","$IconContainer","f_name","SearchTag","IconURL","isValidFname","isValidDisplayName","isValidSearchTag","isFilledGroup","isIconPicked","is_designer","addNewComponent","$MarketplaceToggle","$MarketplaceGroup","$MarketplaceImage","$supdevices","imageurl","supdevices","marketplaceGroup","isMarketGroupFilled","isImageUploaded","isdeviceselected","marketplace_data","onMarketplace","mkpgroup","mkpimageurl","dependencyJSON","localDependencies","updateControlMetaData","imageURL","currentTab","shiftTabToLeft","infoPlugin","editorEventHandler","initEventHandler","addControl","elm","editControl","saveControl","openSidebar","export","stateManager","neg","exponent","NetworkError","isNetworkError","request","createCancelError","RateLimitedQueue","activeRequests","queuedHandlers","_call","cancelActive","_done","_queueNext","_queue","_dequeue","queueOptions","wrapPromiseFunction","queuedRequest","outerPromise","cancelError","innerPromise","progressData","EventTracker","_emitter","load","storage","DEBUG","formatArgs","useColors","namespace","color","lastC","namespaces","removeItem","WebkitAppearance","firebug","exception","table","$1","localStorage","localstorage","colors","formatters","qs","qry","pair","startSelectPosition","isPointed","placer","getPlacerEl","wmargin","nested","canvasRelative","getZoomDecimal","getOffsetDim","stopSelectPosition","posTargetCollection","posIndex","posMethod","cDim","endMove","posIsLastEl","posTargetEl","outsideElem","posTargetModel","nearFloat","isLast","rej","req","XMLHttpRequest","withCredentials","credentials","headers","statusText","responseText","onerror","onProgress","onprogress","send","compTypes","modelAttrStart","modelAttr","valueLen","valStr","firstChar","lastChar","decls","decl","parseClass","parseNode","nodes","attrsLen","nodePrev","nodeChild","ct","compType","keepEmptyTextNodes","allTxt","foundTextNode","ci","cType","textTags","parserCss","scripts","allowScripts","styleStr","baseType","getBaseType","typeFound","recognizeType","getTypes","addType","definition","ModelInst","ViewInst","itemsView","itemType","itemViewNotFound","reuseView","typeField","resetChildren","tempComp","tempRemove","scriptContainer","allRules","hasSign","optStyle","triggerAdd","compView","dt","ItemsView","clsNoEdit","hidable","countChildren","clsNoChild","clsTitle","clsTitleC","clsCaret","clsInput","inputNameCls","gut","clsBase","isVisible","clsCount","clsMove","clsChildren","checkChildren","updateOpening","clsEdit","viewLayer","getVisibilityEl","eyeEl","hClass","toggleVisibility","handleEdit","getInputName","setEditing","handleEditEnd","inputName","opened","getCaret","toggleOpening","handleSelect","fromLayers","scrollCanvas","handleHover","showHover","freeze","unfreeze","ComponentView","highlightHover","noChildCls","cnt","isCountable","hideTextnode","caret","setRoot","showWrapper","defaultOpts","beforeShow","flat","allowEmpty","showButtons","clickoutFiresChange","showInitial","showPalette","showPaletteOnly","hideAfterPaletteSelect","togglePaletteOnly","showSelectionPalette","localStorageKey","maxSelectionSize","cancelText","chooseText","togglePaletteMoreText","togglePaletteLessText","clearText","noColorSelectedText","preferredFormat","containerClassName","replacerClassName","showAlpha","palette","selectionPalette","spectrums","IE","rgbaSupport","backgroundColor","replaceInput","gradientFix","paletteTemplate","tiny","tinycolor","toHsl","formattedString","swatchStyle","toRgbString","toFilter","spectrum","callbackContext","instanceOptions","resize","reflow","throttler","isDragging","dragWidth","dragHeight","dragHelperHeight","slideHeight","alphaWidth","alphaSlideHelperWidth","slideHelperHeight","currentHue","currentSaturation","currentValue","currentAlpha","paletteArray","paletteLookup","draggingClass","shiftMovementDirection","boundElement","pickerContainer","dragger","dragHelper","slideHelper","alphaSliderInner","alphaSlider","alphaSlideHelper","textInput","paletteContainer","initialColorContainer","cancelButton","clearButton","chooseButton","toggleButton","isInput","isInputTypeColor","inputTypeColorSupport","shouldReplace","replacer","offsetElement","previewElement","initialColor","colorOnShow","currentPreferredFormat","applyOptions","rgb","updateSelectionPaletteFromStorage","oldPalette","addColorToSelectionPalette","inArray","drawPalette","currentColor","getUniqueSelectionPalette","drawInitial","dragStop","setFromTextInput","updateOriginalInput","isDefaultPrevented","hideAll","$doc","onkeydown","clickout","updateUI","revert","ignoreFormatChange","newColor","newHsv","toHsv","getFormat","fromRatio","updateHelperLocations","flatColor","toHexString","realColor","displayColor","realHex","realRgb","alpha","toRgb","realAlpha","gradient","gradientType","dragX","dragY","alphaX","slideY","fireCallback","picker","dpWidth","dpHeight","inputHeight","docElem","cW","cH","scL","scT","getOffset","disable","paletteElementClick","ignore","oldDragX","oldDragY","furtherFromX","paletteEvent","spect","optionName","optionValue","coord","onmove","onstart","onstop","dragging","maxHeight","maxWidth","hasTouch","duringDragEvents","t0","dataID","extra","loadOpts","_cachedResult","colorInput","localization","palettes","processNativeColorInputs","colorInputs","trimLeft","trimRight","tinyCounter","math","mathRound","mathMin","mathMax","mathRandom","named","matchers","rgba","hsl","hsla","hsv","hsva","hex8","parseIntFromHex","hex6","hex3","stringInputToObject","bound01","convertToPercentage","q","hsvToRgb","hue2rgb","hslToRgb","boundAlpha","inputToRGB","_originalInput","_r","_g","_b","_roundA","_format","_gradientType","_ok","_tc_id","rgbToHsl","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToHex","desaturate","clamp01","saturate","greyscale","lighten","brighten","darken","spin","hue","complement","triad","tetrad","splitcomplement","analogous","slices","monochromatic","modification","isDark","getBrightness","isLight","getOriginalInput","getAlpha","setAlpha","toHsvString","toHslString","toHex8","toHex8String","toPercentageRgb","toPercentageRgbString","toName","hexNames","secondColor","hex8String","secondHex8String","formatSet","hasAlpha","_applyModification","_applyCombination","color1","color2","mix","w1","rgb1","rgb2","w2","readability","c1","c2","brightnessA","brightnessB","colorDiff","brightness","isReadable","mostReadable","baseColor","colorList","bestColor","bestScore","bestIsReadable","readable","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","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","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","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","rebeccapurple","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","flipped","flip","isOnePointZero","processPercent","isPercentage","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","ColorPicker","getColorEl","valueClr","noneColor","previousColor","cpStyle","elToAppend","colorPickerConfig","getColor","_mods","_scope","_MODIFIERS","control","_MAP","backspace","esc","down","del","home","pageup","pagedown","'","_downKeys","compareArray","modifierMap","updateModifierKey","assignKey","scope","mods","getKeys","getMods","shortcut","getScope","mi","addEvent","modifiersMatch","dispatch","previousKey","setScope","deleteScope","isPressed","getPressedKeyCodes","multipleKeys","setTimeoutFunc","_state","_handled","_value","_deferreds","doResolve","deferred","_immediateFn","onFulfilled","onRejected","finale","thisArg","_unhandledRejectionFn","Handler","reason","prom","promiseFinally","race","setImmediate","_interopRequireDefault","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","2","4","5","6","7","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","unregisterHelper","registerPartial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","_default","_Node","Declaration","_cssSyntaxError","_stringifier","_stringify","Node","raws","positionBy","stringifier","overrides","cloneBefore","cloneAfter","_nodes","defaultType","cleanRaws","keepBetween","between","positionInside","normalizeArray","allowAboveRoot","xs","resolvedPath","resolvedAbsolute","trailingSlash","paths","fromParts","toParts","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","matchedSlash","basename","extname","startDot","startPart","preDotState","_parser","_input","parser","Comment","_Container","AtRule","_Container$prototype$","_Container$prototype$2","_len2","_key2","_declaration","_comment","Container","lastEach","indexes","postcssNode","walkDecls","walkRules","walkAtRules","walkComments","_children","_iterator","_isArray","_i2","_iterator2","_isArray2","_i3","_ref2","_iterator3","_isArray3","_i4","_ref3","_iterator4","_isArray4","_i5","_ref4","exist","_iterator5","_isArray5","_i6","_ref5","_iterator6","_isArray6","_i7","_ref6","removeAll","_iterator7","_isArray7","_i8","_ref7","replaceValues","fast","cleanSource","_iterator8","_isArray8","_i9","_ref8","_iterator9","_isArray9","_i10","_ref9","_i11","_container","_list","Rule","comma","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","isInvoking","leadingEdge","toNumber","flush","isObjectLike","_publish","defaultChoice","fileTypeGeneral","fileTypeSpecific","_assertThisInitialized","ReferenceError","StatusBarUI","statusBarStates","getSpeed","getBytesRemaining","_Plugin","StatusBar","startUpload","uploading","uploadFailed","paused","retry","pause","resume","filesUploadedOfTotal","dataUploadedOfTotal","xTimeLeft","uploadXFiles","uploadXNewFiles","xMoreFilesAdded","hideUploadButton","hideRetryButton","hidePauseResumeButton","hideCancelButton","showProgressDetails","hideAfterFinish","getTotalSpeed","totalSpeed","getTotalETA","totalBytesRemaining","getUploadingState","isAllErrored","isAllComplete","STATE_ERROR","STATE_COMPLETE","STATE_WAITING","STATE_UPLOADING","STATE_PREPROCESSING","STATE_POSTPROCESSING","filesArray","pausedFiles","completeFiles","erroredFiles","inProgressFiles","inProgressNotPausedFiles","startedFiles","processingFiles","totalETA","totalUploadedSize","isUploadStarted","isAllPaused","isUploadInProgress","uploadState","numUploads","isTargetDOMEl","mount","unmount","Informer","_state$info","role","onclick","alert","onMouseOver","onMouseLeave","dataURItoBlob","isObjectURL","MathLog2","exifr","ThumbnailGenerator","onFileAdded","addToQueue","onCancelRequest","onFileRemoved","revokeObjectURL","onRestored","isRestored","waitUntilAllProcessed","emitPreprocessCompleteForAll","queueProcessing","defaultThumbnailDimension","generatingThumbnails","thumbnailWidth","thumbnailHeight","waitForThumbnailsBeforeUpload","lazy","createThumbnail","originalUrl","Image","orientationPromise","rotation","_err","orientation","dimensions","getProportionalDimensions","deg","rotatedImage","rotateImage","resizedImage","resizeImage","canvasToBlob","aspect","protect","ratio","maxW","sqrt","maxH","getContext","drawImage","sW","sH","rotate","rad","quality","getImageData","toBlob","toDataURL","setPreviewURL","processQueue","requestThumbnail","resolutions","rejections","resolved","rejected","tus","_require2","emitSocketProgress","getSocketHost","settle","hasProperty","getFingerprint","tusDefaultOptions","endpoint","onChunkComplete","uploadUrl","uploadSize","overridePatchMethod","retryDelays","Tus","autoRetry","useFastRemoteRetry","requests","uploaderEvents","uploaderSockets","handleResetProgress","handleUpload","tusState","resetUploaderReferences","optsTus","originalRequest","onReceiveUploadUrl","copyProp","srcProp","destProp","metaFields","metadata","Upload","onFileRemove","targetFileID","onPause","onPauseAll","onCancelAll","onResumeAll","uploadRemote","serverToken","connectToServerSocket","post","socket","autoOpen","onRetry","isOpen","onRetryAll","errData","cause","uploadFiles","filesToUpload","Emitter","binary","isBuf","Encoder","CONNECT","DISCONNECT","EVENT","ACK","ERROR","BINARY_EVENT","BINARY_ACK","Decoder","ERROR_PACKET","encodeAsString","attachments","nsp","tryStringify","reconstructor","BinaryReconstructor","reconPack","removeBlobs","bloblessData","deconstruction","deconstructPacket","pack","encodeAsBinary","tryParse","decodeString","takeBinaryData","finishedReconstruction","binData","reconstructPacket","hasCORS","xdomain","xscheme","enablesXDR","XDomainRequest","Transport","secure","timestampParam","timestampRequests","agent","passphrase","cert","ca","ciphers","rejectUnauthorized","forceNode","isReactNative","extraHeaders","localAddress","desc","doOpen","doClose","onClose","onOpen","onData","onPacket","_callbacks","hasListeners","_handlebarsRuntime2","_handlebarsCompilerAst2","_handlebarsCompilerBase","_handlebarsCompilerCompiler","_handlebarsCompilerJavascriptCompiler2","_handlebarsCompilerVisitor2","_handlebarsNoConflict2","_create","hb","precompile","AST","Compiler","JavaScriptCompiler","Parser","parseWithoutProcessing","Visitor","privateCls","togglable","runDefaultCommand","stopDefaultCommand","Buttons","Button","deactivateAllExceptOne","except","fromCollection","disableAllButtons","disableAllButtonsExceptOne","HTMLElement","colorPicker","getColorValue","getDirection","sandEl","getPrefixedValues","backgroundImage","setType","addHandler","isSelected","getSafeValue","offsetX","offsetY","createLinearGradient","addColorStop","fillStyle","fillRect","wrapperEl","initEvents","gp","deselect","getSelectedCls","setColor","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","StyleManager","onCustomInputChange","grapickOpts","O","flexWrap","createType","inputDirection","inputType","initBaseColorPicker","setColorPicker","webpackPolyfill","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","lookupLevel","levelMap","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","whitelist","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","allowProtoPropertiesByDefault","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","checkWhiteList","loggedProperties","newObj","_interopRequireWildcard","protoAccessControlForType","logUnexpecedPropertyAccessOnce","$Handlebars","helperExpression","scopedId","original","simpleId","depth","_exception","visitSubExpression","mustache","acceptRequired","acceptArray","acceptKey","visitBlock","block","visitPartial","mutating","Program","program","MustacheStatement","Decorator","BlockStatement","DecoratorBlock","PartialStatement","PartialBlockStatement","ContentStatement","CommentStatement","SubExpression","PathExpression","StringLiteral","NumberLiteral","BooleanLiteral","UndefinedLiteral","NullLiteral","Hash","HashPair","_supportsColor","_chalk","_terminalHighlight","isNativeReflectConstruct","CssSyntaxError","setMessage","showSourceCode","stdout","bold","aside","spacing","DEFAULT_RAW","colon","beforeDecl","beforeRule","beforeOpen","beforeClose","beforeComment","emptyBody","commentLeft","commentRight","semicolon","Stringifier","comment","rawValue","ownSemicolon","atrule","afterName","own","rawCache","beforeAfter","rawSemicolon","rawEmptyBody","rawIndent","rawBeforeComment","rawBeforeDecl","rawBeforeRule","rawBeforeClose","rawBeforeOpen","rawColon","_lazyResult","Processor","_process","_x","normalized","postcss","_mapGenerator","_stringify2","_result","_parse","isPromise","LazyResult","stringified","processed","inline","syntax","warnings","async","finally","onFinally","postcssVersion","postcssPlugin","asyncTick","processing","lastPlugin","generate","messages","SourceMapGenerator","SourceMapConsumer","SourceNode","base64VLQ","util","ArraySet","MappingList","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","generator","eachMapping","mapping","newMapping","generated","addMapping","sources","sourceRelative","sourceContentFor","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","mappings","_generateSourcesContent","aSources","aSourceRoot","sourcesContent","aValue","digit","vlq","toVLQSigned","VLQ_BASE","aIndex","aOutParam","continuation","shifted","hasNativeMap","_array","_set","fromArray","aArray","aAllowDuplicates","sStr","isDuplicate","aIdx","separators","quote","Root","toResult","keySet","parserConfig","propertyKeywords","tokenHooks","documentTypes","mediaTypes","mediaFeatures","mediaValueKeywords","nonStandardPropertyKeywords","fontProperties","counterDescriptors","colorKeywords","valueKeywords","allowNested","lineComment","supportsAtComponent","tp","tokenBase","tokenize","tokenString","tokenParenthesized","escaped","pushContext","popContext","popAndPass","wordAsValue","stateArg","_stream","atBlock","textAfter","blockCommentStart","blockCommentEnd","blockCommentContinue","fold","documentTypes_","mediaTypes_","mediaFeatures_","mediaValueKeywords_","propertyKeywords_","nonStandardPropertyKeywords_","colorKeywords_","valueKeywords_","allWords","tokenCComment","maybeEnd","canvasModel","toggleMove","disableDragger","enableDragger","toggleDragger","methodCls","methodEv","methodsEv","setupGuides","isTran","guidesContainer","getGuidesContainer","getGuidesTarget","getGuidesStatic","drg","guides","guidesEl","elInfoX","elInfoY","guideContent","elGuideInfoX","elGuideInfoY","elGuideInfoContentX","elGuideInfoContentY","updateGuides","renderGuide","getElementGuides","getGuidePosUpdate","getRect","topScroll","frameTop","un","guideSize","numEl","originRect","getTranslate","itemStr","setTranslate","en","adds","center","getMouseRelativeCanvas","guidesInfo","renderGuideInfo","hideGuidesInfo","rectOrigin","origEdge1","origEdge1Raw","origEdge2","origEdge2Raw","elGuideInfo","elGuideInfoCnt","guideInfoStyle","statEdge2","isEdge1","statEdge1","statEdge1Raw","statEdge2Raw","sizeRaw","toSelect","snd","dc","rules","toClear","selectorsToString","SelectComponent","mouseover","startDelete","mouseout","stopDelete","onDelete","attachBadge","removeBadge","updateBadgeLabel","isEnabled","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","fsChanged","targetEl","getContainer","Modal","CodeManager","$editors","oHtmlEd","buildEditor","oCsslEd","htmlEditor","cssEditor","$button","$importButton","codeEditorHeading","setContent","onImportClick","codeName","codeMirror","getViewer","EditorView","command_type","Marketplace","SelectPosition","noSelClass","getHighlighterEl","wp","toggleClipboard","contentDocument","onEndMove","rollback","initSorterFromModel","onEndMoveFromModel","initSorterFromModels","lastModel","toMove","$badge","$hl","AssetManager","amContainer","modalTitle","assets","uploadEl","bm","pn","blocks","panels","addPanel","lm","LayerManager","$cn","$cn2","SelectorManager","stm","smConfig","$header","textNoElement","panel","toggleSm","TraitManager","tmView","getTraitsViewer","confTm","labelContainer","toggleTm","clp","cop","getPanels","getPanelsEl","tglPointers","elP","stopDefault","editorEl","canvasS","runDefault","canvasResizer","canvasView","getResizerEl","posFetcher","mousePosFetcher","getMouseRelativePos","forceNew","Utils","Resizer","getOffsetMethod","zoom","showOffsetsSelected","stateVar","offsetViewer","marginT","marginB","marginL","marginR","padT","padB","padL","padR","stateLow","marginName","paddingName","marginV","paddingV","paddingEls","fullMargName","fullPadName","marginLeftSt","marginRightSt","marginRight","marginTopSt","marginBottomSt","mtStyle","mbStyle","mlStyle","mrStyle","ptStyle","pbStyle","plStyle","prStyle","posLeft","widthEl","marginSideH","marginSideT","padTop","padBot","padSideH","padSideT","padRight","idRule","getClassRule","openConrolList","studioPlugin","sendor","_fns","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","getListeners","fns","emitAll","keep","mimeTypes","fullFileName","lastDot","markdown","mp4","mp3","svg","jpg","png","gif","heic","heif","yaml","yml","csv","tsv","avi","mks","mkv","mov","docm","docx","dot","dotm","dotx","xla","xlam","xlc","xlf","xlm","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xlw","conf","pdf","encodeFilename","character","encodeCharacter","relativePath","lastModified","isDOMElement","ELEMENT_NODE","AuthError","onReceiveResponse","allowedHeaders","preflightDone","userHeaders","companionHeaders","serverHeaders","defaultHeaders","_getPostResponseFunc","companion","_getUrl","_json","errMsg","json","requestId","preflight","headerName","preflightAndHeaders","header","skipPostResponse","delete","Accept","STATE_UPDATE","defaultSelector","ReduxStore","_store","_id","_selector","nextKeys","getPatch","newState","middleware","DashboardUI","findAllDOMElements","getDroppedFiles","trapFocus","ResizeObserver","createSuperFocus","TAB_KEY","ESC_KEY","createPromise","Dashboard","_opts","removeTarget","newTargets","targets","addTarget","callerPluginId","callerPluginName","callerPluginType","activePickerPanel","showAddFilesPanel","activeOverlayType","showPanel","openModal","_createPromise","savedScrollPosition","savedActiveElement","disablePageScrollWhenModalOpen","animateOpenClose","isClosing","browserBackButtonClose","updateBrowserHistory","handleKeyDownInModal","_opts2$manualClose","manualClose","_this$getPluginState2","_createPromise2","superFocus","modalName","go","isModalOpen","requestCloseModal","onRequestCloseModal","setDarkModeCapability","isDarkModeOn","darkMode","handleSystemDarkModeChange","isDarkModeOnNow","toggleFileCard","fileCardFor","toggleAddFilesPanel","descriptors","startListeningToResize","resizeObserver","entries","observer","_uppyDashboardInnerEl","contentRect","containerWidth","containerHeight","areInsidesReadyToBeVisible","observe","makeDashboardInsidesVisibleAnywayTimeout","pluginState","isModalAndClosed","stopListeningToResize","disconnect","recordIfFocusedOnUppyRecently","ifFocusedOnUppyRecently","handlePopState","forModal","handleClickOutside","closeModalOnClickOutside","handleRootPaste","handleInputChange","handleDragOver","dropEffect","removeDragOverClassTimeout","isDraggingOver","handleDragLeave","handleDrop","dropCategory","handleRootDrop","executedDropErrorOnce","logDropError","handleRequestThumbnail","handleCancelThumbnail","handleKeyDownInInline","forInline","handlePasteOnBody","handleComplete","closeAfterFinish","showModalTrigger","removeEvents","superFocusOnEachUpdate","isFocusInUppy","isFocusNowhere","isInformerHidden","isModal","cancelUpload","saveFileCard","_attachRenderFunctionToTarget","_isTargetSupported","isSupported","_getAcquirers","_getProgressIndicators","uploadStartedFiles","acquirers","progressindicators","totalFileCount","note","isMobileDevice","pauseUpload","showLinkToFileUploadResult","proudlyDisplayPoweredByUppy","showRemoveButtonAfterComplete","showSelectedFiles","discoverProviderPlugins","_this$opts","pluginID","disableStatusBar","hideProgressAfterFinish","disableInformer","disableThumbnailGenerator","darkModeMediaQuery","matchMedia","isDarkModeOnFromTheStart","informer","statusBar","importFrom","addingMoreFiles","addMoreFiles","dashboardWindowTitle","dashboardTitle","copyLinkToClipboardSuccess","copyLinkToClipboardFallback","copyLink","fileSource","back","addMore","editFile","editing","finishEditingFile","saveChanges","myDevice","dropPaste","dropPasteImport","dropHint","browse","uploadPaused","resumeUpload","xFilesSelected","uploadingXFiles","processingXFiles","poweredBy2","poweredBy","hidePauseResumeCancelButtons","getFileTypeIcon","_getFileTypeIcon","AddFiles","triggerFileInputClick","fileInput","onFileInputChange","renderCloudIcon","renderHiddenFileInput","onchange","renderMyDeviceAcquirer","renderDropPasteBrowseTagline","numberOfAcquirers","renderAcquirer","acquirer","renderAcquirers","acquirersWithoutLastTwo","lastTwoAcquirers","renderPoweredByUppy","uppyBranding","linkText","dataURI","toFile","atob","webkitGetAsEntryApi","fallbackApi","_ref$logDropError","dashboardEl","overlayEl","MapShim","getIndex","entry","class_1","__entries__","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","trailingTimeout","REFRESH_DELAY","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","WeakMap","areInputsEqual","newInputs","lastInputs","resultFn","lastResult","calledOnce","newArgs","isDragDropSupported","DragDrop","dropHereOr","onInputChange","fileInputRef","renderArrowSvg","renderLabel","renderNote","dragDropClass","dragDropStyle","onDragLeave","FileInput","chooseFiles","pretty","ProgressBar","replaceTargetContent","ProviderViews","Dropbox","initPlugin","DriveProviderViews","GoogleDrive","authProvider","hasTeamDrives","teamDrives","teamDriveId","Instagram","OneDrive","Facebook","UrlUI","forEachDroppedOrPastedUrl","UrlIcon","Url","import","enterUrlToImport","failedToFetch","enterCorrectUrl","getMeta","client","getFileNameFromUrl","checkIfCorrectURL","addProtocolToURL","getFileTypeExtension","supportsMediaRecorder","CameraIcon","CameraScreen","PermissionsScreen","toMimeType","isVideoMimeType","isImageMimeType","Webcam","mediaDevices","getUserMedia","_getUserMedia","mozGetUserMedia","webkitGetUserMedia","getMediaDevices","supportsUserMedia","smile","takePicture","startRecording","stopRecording","allowAccessTitle","allowAccessDescription","noCameraTitle","noCameraDescription","recordingStoppedMaxSize","recordingLength","onBeforeSnapshot","countdown","mirror","facingMode","preferredImageMimeType","preferredVideoMimeType","showRecordingLength","_start","_stop","_takeSnapshot","_startRecording","_stopRecording","_oneTwoThreeSmile","_focus","webcamActive","hasCameraCheck","enumerateDevices","kind","getConstraints","audio","video","constraints","hasCamera","cameraReady","cameraError","_getMediaRecorderOptions","MediaRecorder","isTypeSupported","preferredVideoMimeTypes","acceptableMimeTypes","candidateType","recorder","recordingChunks","stoppingBecauseOfMaxSize","expectedEndChunkSize","recordingLengthTimer","currentRecordingLength","recordingLengthSeconds","isRecording","getVideo","getAudioTracks","track","getVideoTracks","_getVideoElement","countDown","captureInProgress","_getImage","videoWidth","videoHeight","preferredImageMimeTypes","webcamState","onSnapshot","onStartRecording","onStopRecording","onStop","supportsRecording","recording","mimeToExtensions","ScreenRecIcon","CaptureScreen","ScreenCapture","getDisplayMedia","startCapturing","stopCapturing","submitRecordedFile","streamActive","streamPassive","micDisabled","displayMediaConstraints","frameRate","ideal","displaySurface","userMediaConstraints","streamInterrupted","streamInactivated","captureActive","capturedMediaFile","audioStreamActive","videoStream","selectAudioStreamSource","selectVideoStreamSource","screenRecError","userDenied","audioStream","tracks","outputStream","MediaStream","_this$getPluginState","recordedVideo","recorderState","onSubmit","URL_","qsStringify","MiniXHRUpload","isXml","rawContentType","getResponseHeader","getXmlValue","assertServerError","warnedSuccessActionStatus","AwsS3","getUploadParameters","filename","validateParameters","fields","paramsPromises","onremove","numberOfFiles","_params$method","xhrOpts","xhrUpload","_uploader","uploadFile","settled","xhrOptions","fieldName","responseUrlFieldName","__queue","responseType","getResponseData","responseURL","bucket","etag","getResponseError","required","slashes","protocolre","lolcation","finaldestination","extractProtocol","extracted","instruction","instructions","password","char","ins","ProgressTimeout","timeoutHandler","_timeout","_onTimedOut","_isDone","_aliveTimer","Uploader","AwsS3Multipart","createMultipartUpload","listParts","prepareUploadPart","abortMultipartUpload","completeMultipartUpload","really","assertHost","uploadId","uploadIdEnc","getChunkSize","cFile","s3Multipart","onPartComplete","onFilePause","Assembly","Client","AssemblyOptions","AssemblyWatcher","defaultGetAssemblyOptions","signature","COMPANION","TL_COMPANION","TL_UPPY_SERVER","Transloadit","creatingAssembly","creatingAssemblyFailed","service","errorReporting","waitForEncoding","waitForMetadata","alwaysRunAssembly","importFromUploadURLs","getAssemblyOptions","_prepareUpload","_afterUpload","_onError","_onTusError","_onCancelAll","_onFileUploadURLAvailable","_onRestored","_getPersistentData","hasCustomAssemblyOptions","validateParams","_getClientVersion","activeAssemblies","assemblyWatchers","completedFiles","addPluginVersion","versionName","_attachAssemblyMetadata","assembly_url","tus_url","newHost","companion_url","transloadit","assembly","assembly_id","_createAssembly","createAssembly","expectedFiles","newAssembly","assemblyID","_this3$getPluginState","assemblies","uploadsAssemblies","_createAssemblyWatcher","watcher","getAssemblyFiles","_shouldWaitAfterUpload","_reserveFiles","reserveFile","_findFile","uploadedFile","tus_upload_url","is_tus_file","_onFileUploadComplete","assemblyId","getAssembly","_onResult","stepName","original_id","localId","_onAssemblyFinished","assembly_ssl_url","getAssemblyStatus","finalStatus","_cancelAssembly","cancelAssembly","cancelPromises","_setData","pluginData","savedState","previousAssemblies","restored","uploads","_this10$getPluginStat","assemblyIDs","fileIDsInUpload","fileIDsInAssembly","_connectAssembly","restoreAssemblies","updateAssemblies","_this11","newStatus","connect","_extends7","_this12","createdAssembly","createdAssemblies","_this13","_this14","submitError","UPPY_SERVER","COMPANION_PATTERN","_upload","_upload2","moduleExport","canStoreURLs","_window","FileStorage","product","_createClass","getStorage","hasStorage","LocalStorage","setItem","getItem","SECURITY_ERR","QUOTA_EXCEEDED_ERR","_classCallCheck","re","uri","authority","ipv6uri","withNativeBuffer","withNativeArrayBuffer","eio","Backoff","Manager","nsps","subs","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","jitter","connecting","lastPing","packetBuffer","encoder","decoder","autoConnect","updateSocketIds","generateId","engine","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","maybeReconnectOnOpen","reconnecting","attempts","reconnect","skipReconnect","openSub","onopen","errorSub","cleanup","timer","onping","onpong","ondata","ondecoded","onConnecting","processPacketQueue","subsLength","onclose","onreconnect","attempt","XHR","JSONP","websocket","xd","jsonp","isSSL","forceJSONP","parseqs","inherit","yeast","Polling","hasXHR2","forceBase64","doPoll","callbackfn","doWrite","schema","sid","withNativeBlob","withNativeFile","alphabet","seed","decoded","hasBin","connect_error","connect_timeout","reconnect_attempt","reconnect_failed","reconnect_error","io","acks","receiveBuffer","sendBuffer","connected","disconnected","subEvents","compress","onpacket","sameNamespace","rootNamespaceError","onconnect","onevent","onack","ondisconnect","ack","sent","emitBuffered","buildResponseError","setTypeInBlob","XHRUpload","timedOut","bundle","parsedResponse","validateStatus","addMetadata","createFormDataUpload","formPost","dataWithUpdatedType","createBundledUpload","createBareUpload","loaded","lengthComputable","_body","httpMethod","useFormData","uploadBundle","optsFromState","emitError","findDOMElement","getFormData","Form","resultName","getMetaFromForm","addResultToForm","multipleResults","submitOnSuccess","triggerUploadOnSubmit","handleFormSubmit","handleUploadStart","handleSuccess","disabledByUppy","resultInput","updatedResult","formMeta","NODE_LIST_CLASSES","IGNORED_ELEMENT_TYPES","CHECKED_INPUT_TYPES","TRIM_RE","elementName","elementNames","elementNameLookup","getFieldData","getFormElementValue","allRadios","ServiceWorkerStore","IndexedDBStore","MetaDataStore","GoldenRetriever","expires","serviceWorker","storeName","indexedDB","saveFilesStateToLocalStorage","loadFilesStateFromLocalStorage","loadFileBlobsFromServiceWorker","loadFileBlobsFromIndexedDB","onBlobsLoaded","savedPluginData","getWaitingFiles","waitingFiles","getUploadingFiles","uploadingFiles","filesToSave","blobs","numberOfFilesRecovered","obsoleteBlobs","originalFile","deleteBlobs","put","ReduxDevTools","handleStateChange","initDevTools","devTools","devToolsExtension","devToolsUnsubscribe","computedStates","nextLiftedState","withDevTools","__REDUX_DEVTOOLS_EXTENSION__","handleStateUpdate","moment","symbolMap","numberMap","pluralForm","plurals","weekdaysParseExact","suffixes","70","80","50","100","10","30","60","90","relativeTimeWithPlural","forms","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","minWeekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$2","isUpper","eifelerRegelAppliesToNumber","translateSingular","relativeTimeWithSingular","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","12","numbersNouns","numberNoun","hundred","ten","numberAsNoun","processHoursFunction","nominative","accusative","genitive","admkp","vwmkp","MarketPlaceMenu","secondmenu","renderElement","rootConfig","menuClicked","commandName","MenuButtonView","MenuButtonModel","menuButtonView","MenuButonsView","MenuButtonsModel","MenuGroupView","MenuGroup","menuType","menu_type","menu","menuGroupsView","MenuGroupsView","MenuGroupsModel","closeMenu","alreadyVisible","openSimpleMenu","simpleMenu","paremt","closeSimpleMenu","sidebars","fonts","font","buildProps","extendBuilded","builded","buildProperties","extendProperties","propsModel","moProps","pLen","mProps","isolated","mProp","mPProps","buildP","propFactory","PropertyFactory","Sector","caretR","caretD","updateOpen","getPropertiesEl","$caret","renderProperties","dummy","pt","devicePreviewMode","stateStr","helperCls","helperRule","appendStateRule","targetIsClass","selectorsAdd","SectorView","SectView","Sectors","SectorsView","onLoad","elTo","addSector","getSector","_logNoSector","removeSector","getSectors","addProperty","sectorId","getProperty","removeProperty","getProperties","um","cssC","hasClasses","deviceW","getCurrentMedia","avoidInlineStyle","getEmitter","scrollLayers","ItemView","componentChanged","getRoot","bubbles","cancelable","initCustomEvent","hasClassInTree","ensureElementInView","putContent","isValueInArrayOfObjects","CustomEvent","newOption","parseSelectData","main","pullOptionData","placeholderText","setSelectedFromSelect","isMultiple","getObjectFromData","shouldBeSelected","addToSelected","removeFromSelected","onDataChange","isOnChangeEnabled","searchValue","searchFilter","filtered","contentOpen","contentPosition","Data","validateData","validateOption","isAjax","addData","multiSelected","plus","singleSelected","arrowIcon","arrow","openAbove","openBelow","addToBody","scrollX","showContent","moveContentAbove","moveContentBelow","searchFocus","afterOpen","timeoutDelay","afterClose","transformOrigin","triggerMutationObserver","isSearching","setSearchText","ssid","addable","beforeOnChange","showSearch","searchPlaceholder","searchingText","searchHighlight","closeOnSelect","allowDeselect","allowDeselectOption","hideSelectedOption","deselectLabel","valuesUseText","showOptionTooltips","selectByGroup","Select","Slim","valueText","valueDelete","searchHighlighter","optgroup","optgroupLabel","optgroupLabelSelectable","optionSelected","addEventListeners","addMutationObserver","mutationObserver","attributeName","updateContainerDivClass","observeMutationObserver","disconnectMutationObserver","createOption","containerDiv","singleSelectedDiv","multiSelectedDiv","insertAdjacentElement","valueDiv","contentDiv","searchDiv","highlightUp","highlightDown","onkeyup","onfocus","listDiv","core_slice","hasKeys","callstackWasIndexed","magicFusionIndex","getMagicFusionIndex","ObjectRegistry","registeredObjects","cidIndexes","onoff","objects","objectRegistry","register","unregister","actionUndoRedo","undoTypes","managerUndoRedo","manager","magic","everything","isCurrentlyUndoRedoing","pointer","actions","isUndo","addToStack","undoTypesType","validateUndoActionCreation","maximumStackLength","isRegistered","UndoTypes","unsetData","afterAttributes","keysAfter","keysPrevious","OwnedUndoTypes","manipulateUndoType","manipType","undoType","undoTypesInstance","Action","UndoStack","setMaxLength","UndoManager","startTracking","stopTracking","isTracking","_addToStack","unregisterAll","undoAll","redoAll","isAvailable","undoManager","addUndoType","changeUndoType","removeUndoType","defaultAttributes","finallyConstructor","_processor","_atRule","_vendor","_rule","_root","initializer","creator","transformer","processOpts","pluginOpts","atRule","arrayWithHoles","iterableToArrayLimit","nonIterableRest","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_handlebarsSafeString2","_handlebarsException2","SafeString","VM","priorKey","execIteration","newContext","conditional","includeZero","lookupProperty","_decoratorsInline2","_decoratorsInline","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","lookup","depths","lambda","invokePartial","resolvePartial","extendedOptions","compilerOptions","programs","declaredBlockParams","programWrapper","wrapProgram","mergeIfNeeded","common","nullContext","seal","_setup","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","currentPartialBlock","partialBlock","prog","currentDepths","transformOptionsFn","ast","_whitespaceControl2","_parser2","Helpers","locInfo","SourceLocation","srcName","trace","symbols_","terminals_","14","15","23","29","47","48","51","54","55","65","68","72","73","75","77","81","82","83","84","85","87","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","prepareProgram","stripComment","strip","stripFlags","prepareRawBlock","prepareBlock","chained","prepareMustache","preparePartialBlock","preparePath","11","24","78","79","86","56","64","49","52","25","43","28","57","26","21","63","69","71","53","58","66","31","22","62","67","74","41","76","42","defaultActions","101","104","116","119","122","135","136","parseError","vstack","lstack","recovering","lexer","setInput","yylloc","yyloc","symbol","preErrorSymbol","expected","yyval","lex","errStr","showPosition","first_line","last_line","first_column","last_column","EOF","_more","_less","conditionStack","unput","oldLines","more","less","pastInput","upcomingInput","tempMatch","_currentRules","flex","popState","topState","yy_","$avoiding_name_collisions","YY_START","_visitor","_visitor2","WhitespaceControl","isPrevWhitespace","isRoot","isNextWhitespace","omitRight","rightStripped","omitLeft","leftStripped","doStandalone","ignoreStandalone","isRootSeen","_isPrevWhitespace","_isNextWhitespace","openStandalone","closeStandalone","inlineStandalone","firstInverse","lastInverse","openStrip","closeStrip","inverseStrip","dig","isLiteral","escapeFlag","openRawBlock","contents","validateClose","openBlock","inverseAndProgram","inverted","statements","firstLoc","lastLoc","errorNode","compat","environment","compiled","compileInput","execOptions","setupOptions","_ast2","argEquals","transformLiteralToPath","sexpr","literal","opcodes","opcode","otherOpcode","guid","sourceNode","stringParams","trackIds","knownHelpers","helperMissing","blockHelperMissing","unless","compileProgram","bodyLength","isSimple","classifySexpr","helperSexpr","simpleSexpr","ambiguousSexpr","setupFullMustacheParams","explicitPartialContext","partialName","isDynamic","preventIndent","noEscape","knownHelpersOnly","falsy","addDepth","scoped","blockParamId","blockParamIndex","bool","pushParam","isBlockParam","isHelper","isEligible","_name","pushParams","blockParamChild","omitEmpty","_codeGen2","Literal","nameLookup","internalNameLookup","depthedLookup","aliasable","revision","appendToBuffer","explicit","initializeBuffer","quotedString","lookupPropertyFunctionIsUsed","asObject","environments","preamble","stackSlot","stackVars","registers","hashes","compileStack","inlineStack","compileChildren","currentLocation","pushSource","lookupPropertyFunctionVarDeclaration","createFunctionContext","_context","objectLiteral","toStringWithSourceMap","destName","lastContext","varDeclarations","locals","aliasCount","referenceCount","mergeSource","appendOnly","forceBuffer","appendFirst","sourceSeen","bufferStart","bufferEnd","blockValue","contextName","setupHelperArgs","popStack","functionCall","ambiguousBlockValue","flushInline","topStack","lastHelper","appendContent","pendingContent","pendingLocation","isInline","replaceStack","appendEscaped","pushStackLiteral","lookupOnContext","resolvePath","lookupBlockParam","lookupData","assumeObjects","requireTerminal","strictLookup","resolvePossibleLambda","pushStringParam","pushString","emptyHash","pushHash","contexts","popHash","pushLiteral","pushProgram","programExpression","paramSize","foundDecorator","invokeHelper","nonHelper","setupHelper","possibleFunctionCalls","functionLookupCode","itemsSeparatedBy","callParams","invokeKnownHelper","invokeAmbiguous","helperCall","useRegister","paramsInit","setupParams","assignToHash","pushId","matchExistingProgram","programParams","expr","createdStack","usedLiteral","incrStack","topStackName","wrapped","blockHelper","objectArgs","hashIds","hashTypes","hashContexts","generateArray","reservedWords","compilerWords","RESERVED_WORDS","isValidJavaScriptVariableName","castChunk","codeGen","CodeGen","srcFile","chunks","generateList","keymaps","configDef","keymaster","defKeys","pk","isEditing","isInputFocused","beforeCache","customUndoType","bf","af","entity","hasUndo","hasRedo","getStack","Timeout","clearFn","_clearFn","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","onreadystatechange","task","_sourceMap","_path","MapGenerator","mapOpts","isMap","previousMaps","annotation","isSourcesContent","withContent","clearAnnotation","setSourcesContent","already","applyPrevMaps","consumer","isAnnotation","toBase64","addAnnotation","outputFile","generateMap","generateString","sourcePath","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","LN2","intToCharMap","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","aSourceMapURL","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","_absoluteSources","_sourceMapURL","Mapping","lastOffset","_sections","offsetLine","offsetColumn","generatedOffset","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findSourceIndex","_findMapping","lastColumn","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","cachedSegments","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","generatedPosition","sectionMappings","adjustedMapping","aHaystack","aCompare","recursiveSearch","aLow","aHigh","doQuickSort","pivot","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","addMappingWithCode","aChunk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","walkSourceContents","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","printed","_warning","Result","warning","Warning","_tokenize","createTokenizer","tokenizer","endOfFile","nextToken","freeSemicolon","emptyRule","endFile","bracket","brackets","unclosedBracket","unknownWord","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","precheckMissedSemicolon","stringFrom","spacesFromEnd","_type","checkMissedSemicolon","unnamedAtrule","unexpectedClose","unclosedBlock","lastTokenType","doubleColon","founded","nextOffset","escapePos","currentToken","ignoreErrors","unclosed","what","ignoreUnclosed","NEWLINE","FEED","CR","SPACE","TAB","OPEN_SQUARE","CLOSE_SQUARE","OPEN_CURLY","CLOSE_CURLY","COLON","SEMICOLON","CLOSE_PARENTHESES","controlChar","OPEN_PARENTHESES","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","RE_BAD_BRACKET","AT","RE_AT_END","SLASH","RE_HEX_ESCAPE","ASTERISK","RE_WORD_END","_previousMap","sequence","hasBOM","mapResolve","_fs","PreviousMap","loadAnnotation","startWith","loadMap","consumerCache","decodeInline","lastMatch","prevPath","existsSync","readFileSync","unprefixed","defaultTags","attrRegexpCache","getAttrValue","regexp","getAttrRegexp","getTagRegexp","anchored","addTags","htmlMode","multilineTagIndentFactor","multilineTagIndentPastTag","configTags","configScript","scriptTypes","htmlState","inTag","tagInfo","tagText","findMatchingMode","endTagA","endTag","localState","localMode","pat","maybeBackup","htmlConfig","autoSelfClosers","implicitlyClosed","contextGrabbers","doNotIndent","allowUnquoted","allowMissing","caseFold","xmlConfig","allowMissingTagName","editorConf","config_","inText","inBlock","doctype","closure","baseState","tagStart","isInAttribute","stringStartCol","terminator","startOfLine","noIndent","maybePopContext","nextTagName","parentTagName","tagNameState","closeTagNameState","attrState","matchClosing","closeState","closeStateErr","attrEqState","attrValueState","attrContinuedState","isInText","baseIndent","fullLine","alignCDATA","tagAfter","grabbers","configuration","skipAttribute","statementIndent","jsonldMode","jsonld","jsonMode","isTS","typescript","wordRE","wordCharacters","kw","A","B","C","D","operator","atom","isOperatorChar","isJsonldKeyword","cont","tokenComment","expressionAllowed","inSet","readRegexp","tokenQuasi","lexical","lastType","findFatArrow","fatArrowAt","sawSomething","atomicTypes","JSLexical","inScope","varname","localVars","vars","marked","inList","registerVarScoped","Var","globalVars","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","poplex","expect","wanted","exp","statement","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","enumdef","typename","typeexpr","expression","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","targetNoComma","maybeTypeArgs","maybeTarget","continueQuasi","getterSetter","afterprop","maybetype","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprop","typearg","maybeReturnType","functiondecl","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","basecolumn","parseJS","isContinuedStatement","doubleIndentSwitch","closeBrackets","skipExpression","commentStart","commentEnd","newlineAfterToken","inlineElements","isComment","curMode","selText","endIndex","cmInstance","atSol","newline","_n","_s","sortContainer","created","srcModel","getSourceModel","avoidSelectOnEnd","webpackContext","webpackContextResolve","views","globalCount","clientId","crypto","msCrypto","getRandomValues","Uint32Array","wildcard","reMimePartSplit","WildcardMatcher","hasWild","testParts","partsCount","_edgeVersion$split","major","minor","getTimeStamp","_console","_console2","_len3","_key3","_console3","_len4","_key4","getHours","getMinutes","getSeconds","_updateUI","onMount","calling","latestArgs","targetPlugin","targetElement","Target","tokenStorage","_getName","_RequestClient","tokenKey","getAuthToken","directory","serverUrl","serverPattern","UppySocket","_queued","_handleMessage","WebSocket","pluginNameComponent","Breadcrumbs","Filter","ItemList","FooterActions","filteredFolders","filteredFiles","breadcrumbsIcon","columns","handleFolderClick","Breadcrumb","preventEnterPress","onkeypress","oninput","getSharedProps","fileOrFolder","getItemIcon","onscroll","isDisabled","ItemIcon","GridLi","ListLi","itemIconString","itemIconEl","FileIcon","FolderIcon","VideoIcon","getAriaLabelOfCheckbox","FileList","AddFilesPanel","PickerPanelContent","PanelTopBar","FileCard","PreactCSSTransitionGroup","TransitionWrapper","transitionName","transitionEnterTimeout","transitionLeaveTimeout","noFiles","isSizeMD","dashboardClassName","itemsPerRow","showFileList","onpaste","FileItem","VirtualList","chunked","currentChunk","dashboardFilesClass","rowHeight","fileProps","isWide","rows","renderRow","row","shallowEqual","FilePreviewAndLink","FileProgress","FileInfo","nextProps","isProcessing","isUploaded","uploadInProgressOrComplete","uploadInProgress","showRemoveButton","dashboardItemClass","FilePreview","PauseResumeCancelIcon","progressIndicatorTitle","onPauseResumeCancelRetry","circleLength","PI","truncateString","renderFileSource","renderAcquirerIcon","maxNameLength","renderFileName","renderFileSize","maxLength","charsToShow","frontChars","backChars","copyToClipboard","EditButton","RemoveButton","copyLinkToClipboard","preventScroll","CopyLinkButton","ErrorButton","textToCopy","fallbackString","textArea","outline","boxShadow","magicCopyFailed","prompt","STYLE_INNER","STYLE_CONTENT","handleResize","focusElement","_ref$overscanCount","overscanCount","excluded","sourceKeys","_objectWithoutPropertiesLoose","_this$state","visibleRowCount","styleInner","styleContent","onScroll","ignoreEvent","onPaste","uploadStates","STATE_PAUSED","UploadStatus","saveOnEnter","formState","updateMeta","newVal","handleSave","handleCancel","renderMetaFields","fieldCSSClasses","_metaFields","storedMetaData","getKey","getComponentBase","filterNullChildren","inChildrenByKey","inChildren","isShownInChildrenByKey","showProp","isShownInChildren","RE_CLASS","norm","elemClass","_elem$classList","_elem$classList2","EVENT_NAME_MAP","transitionend","transition","WebkitTransition","MozTransition","OTransition","msTransition","animationend","animation","WebkitAnimation","MozAnimation","OAnimation","msAnimation","endEvents","baseEventName","baseEvents","styleName","detectEvents","classCallCheck","inherits","possibleConstructorReturn","CSSTransitionGroupChild","flushClassNameQueue","classNameQueue","animationType","finishCallback","activeClassName","endListener","eventListener","endEvent","removeEndEventListener","transitionTimeouts","addEndEventListener","queueClass","componentWillEnter","enterTimeout","componentWillLeave","leaveTimeout","CSSTransitionGroup","renderChild","_this$props","transitionEnter","transitionLeave","refs","currentlyTransitioningKeys","keysToEnter","keysToLeave","nextChildrenPending","pendingChildren","exclusive","nextChildMapping","prevChildMapping","_cloneElement","hasPrev","showInPrev","showInNow","hasNext","showInNext","performEnter","_handleDoneEntering","currentChildMapping","performLeave","_handleDoneLeaving","objectWithoutProperties","prettyETA","progressMode","progressBarContent","_props","progressValue","progresses","_progresses$","calculateProcessingProgress","ProgressBarProcessing","ProgressBarComplete","ProgressBarUploading","ProgressBarError","showUploadBtn","showCancelBtn","showPauseResumeBtn","showRetryBtn","progressClassNames","statusBarClassNames","UploadBtn","RetryBtn","PauseResumeButton","CancelBtn","uploadBtnClassNames","togglePauseResume","LoadingSpinner","UnknownProgressDetails","UploadNewlyAddedFiles","ThrottledProgressDetails","ifShowFilesUploadedOfTotal","showUploadNewlyAddedFiles","errorMessage","secondsToTime","hoursStr","minutesVal","minutesStr","secondsVal","rawSeconds","fileProgress","timeElapsed","log2","LOG2E","fromEntries","S","endsWith","arrayBuffer","_map","_keys","P","U","HTMLImageElement","BigInt","I","V","T","ifd0","enabled","exif","makerNote","userComment","gps","interop","ifd1","jfif","xmp","iptc","icc","z","TextDecoder","F","le","DataView","_swapDataView","dataView","toUint8","_lengthToEnd","getUint8Array","getUint16","getInt8","getUint8","getInt16","getInt32","getUint32","getFloat32","getFloat64","getUint64","N","R","K","X","H","onloadend","Y","G","J","Q","Z","allValues","ne","se","ae","ue","oe","fe","he","ce","translateKeys","translateValues","reviveValues","de","applyInheritables","canBeFiltered","dict","translateTagSet","deps","tagKeys","tagValues","pe","tiff","multiSegment","sanitize","mergeOutput","silentErrors","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkLimit","ve","ye","setupFromTrue","setupFromUndefined","setupFromArray","setupFromObject","filterNestedSegmentTags","traverseTiffDependencyTree","checkLoadedPlugins","setupGlobalFilters","ke","batchEnableWithBool","batchEnableWithUserValue","ge","needed","finalizeFilters","be","we","Ae","Oe","Se","Pe","Ue","Ce","useCached","fileParser","isTiff","isJpeg","getString","isHeic","parsers","setup","assignToOutput","getOrFindSegment","ensureSegmentChunk","extractThumbnail","xe","Be","je","rotateCanvas","rotateCss","ze","Ie","latitude","longitude","Ve","Te","Le","dimensionSwapped","Fe","Ee","De","Me","Ne","Re","We","Ke","thumbnailUrl","rotations","Exifr","fileParsers","segmentParsers","fileReaders","tagRevivers","createDictionary","extendDictionary","fetchUrlAsArrayBuffer","readBlobAsArrayBuffer","chunkedProps","otherSegments","segments","tiffBlocks","segmentsAndBlocks","tiffExtractables","inheritables","allFormatters","Options","disableAllOptions","gpsOnlyOptions","orientationOnlyOptions","thumbnailOnlyOptions","Xe","He","Ye","_extend","uintView","_tryExtend","available","readChunk","Ge","Je","qe","Qe","Ze","_swapArrayBuffer","nextChunkOffset","fullyRead","chunksRead","safeWrapAddress","_readChunk","readChunked","readWhole","$e","extendOptions","et","normalizeInput","globalOptions","localOptions","canTranslate","headerLength","translated","translateBlock","translateValue","assignObjectToOutput","tt","nt","ut","ot","ft","lt","canHandle","findAppSegments","readSegments","mergeMultiSegments","createParsers","appSegments","findAll","keyList","unfinishedMultiSegment","setupSegmentFinderArgs","_findAppSegments","onlyTiff","canReadNextChunk","readNextChunk","findPosition","chunkNumber","chunkCount","recordUnknownSegments","unknownSegments","stopAfterSos","recordJpegSegments","jpegSegments","mergedAppSegments","handleMultiSegments","getSegment","vt","yt","gt","kt","parseHeader","parseIfd0Block","saveParseBlock","createOutput","ifd0Offset","ifd1Offset","findIfd0Offset","parseTags","ensureChunk","parseBlock","exifOffset","interopOffset","gpsOffset","unpack","mt","parseExifBlock","ifd1Parsed","findIfd1Offset","headerParsed","parseThumbnailBlock","parseTag","parseTagValue","Uint16Array","Int16Array","Int32Array","Float32Array","Float64Array","getFloat","getDouble","getRelativePath","getFilesAndDirectoriesFromDirectory","rootPromises","webkitGetAsEntry","createPromiseToAddFileOrParseDirectory","isFile","isDirectory","directoryReader","createReader","fileEntry","fullPath","oldEntries","readEntries","newEntries","getActiveOverlayEl","FOCUSABLE_ELEMENTS","focusOnFirstNode","activeOverlayEl","focusableNodes","focusedItemIndex","isFocusInOverlay","focusOnLastNode","lastFocusWasOnSuperFocusableEl","superFocusableEl","firstEl","_ProviderViews","custom","isTeamDrive","isSharedDrive","handleKeyPress","isDropOrPaste","urlItems","getAsString","urlString","SnapshotButton","RecordButton","RecordingLength","isModeAvailable","shouldShowRecordButton","shouldShowSnapshotButton","shouldShowRecordingLength","autoplay","muted","playsinline","srcObject","formatSeconds","formattedRecordingLengthSeconds","recording_length","padStart","SubmitButton","StopWatch","StreamStatus","RecorderScreen","videoProps","controls","videoElement","Stopwatch","elapsedTime","wrapperStyle","overlayStyle","infoContainerStyle","infotextStyle","fontSize","timeStyle","fontWeight","fontFamily","startTimer","timerTick","timerRunning","resetTimer","fmtMSS","minAndSec","undef","queryStringify","enkey","_getOptions","_uploadRemoteFile","_uploadLocalFile","_addMetadata","_createFormDataUpload","_createBareUpload","_onFileRemoved","_onRetry","_onRetryAll","MultipartUploader","createdPromise","chunkState","_initChunks","desiredChunkSize","minChunkSize","uploaded","busy","_uploadParts","_resumeUpload","PartNumber","Size","ETag","need","_completeUpload","candidates","_uploadPart","_uploadPartBytes","_onPartProgress","totalUploaded","_onPartComplete","_abortUpload","_error2","_extend2","_jsBase","_request","_source","_storage","removeFingerprintOnSuccess","uploadLengthDeferred","urlStorage","fileReader","uploadDataDuringCreation","_xhr","_fingerprint","_aborted","_size","_retryAttempt","_retryTimeout","_offsetBeforeRetry","getSource","_emitError","errorCallback","isOnline","isServerError","inStatusCategory","_hasStorage","fingerprintValue","resumedUrl","shouldTerminate","terminate","causingErr","bytesSent","bytesAccepted","setupXHR","newRequest","resolveUrl","_emitSuccess","_handleUploadResponse","_startUpload","_emitXhrError","_setupXHR","Base64","encodeMetadata","_addChunkToRequest","_emitProgress","_emitChunkComplete","DetailedError","_possibleConstructorReturn","causingError","_inherits","toStr","gOPD","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","copyIsArray","deep","_Base64","eval","b64chars","b64tab","bin","cb_utob","re_utob","utob","cb_encode","ccc","padlen","ord","_encode","urisafe","m0","encodeURI","re_btou","cb_btou","cccc","btou","cb_decode","chars","_atob","_decode","fromBase64","__buffer__","noEnum","extendString","_urlParse2","_urlParse","_isReactNative2","_uriToBlob2","FileSource","StreamSource","_isCordova2","_readAsByteArray2","_chunkSize","_buffer","_bufferOffset","_reader","_readUntilEnoughDataOrDone","hasEnoughData","_getDataFromBuffer","hasAllDataBeenRead","blobOrArray","PhoneGap","Cordova","cordova","exifHash","hashCode","reactNativeFingerprint","_isReactNative","uppyFileObj","socketIo","parseUrl","statusOrder","isStatus","TransloaditAssembly","_Emitter","closed","_connectSocket","_beginPolling","_onFinished","websocket_url","transports","_fetchStatus","_ref$diff","_diffStatus","prevStatus","nextStatus","nowExecuting","nextResults","prevResults","slashIndex","managers","multiplex","parseuri","createDebug","prevTime","coerce","formatter","selectColor","instances","skips","long","fmtShort","packetData","_deconstructPacket","_placeholder","newData","_reconstructPacket","pendingBlobs","_removeBlobs","curKey","containingObject","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","onlyBinaryUpgrades","perMessageDeflate","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","priorWebsocketSuccess","createTransport","EIO","transport","requestTimeout","protocols","setTransport","onDrain","probe","onTransportOpen","upgradeLosesBinary","upgrading","freezeTransport","onTransportClose","onupgrade","onHandshake","setPing","filterUpgrades","onHeartbeat","sendPacket","waitForUpgrade","cleanupAndClose","filteredUpgrades","Request","sendXhr","pollXhr","setDisableHeaderCheck","hasXDR","requestsCount","fromError","unloadHandler","terminationEvent","arraybuffer","abv","err_cb","bail","byteCount","byteIndex","stringFromCharCode","ucs2decode","checkScalarValue","createByte","encodeCodePoint","readContinuationByte","continuationByte","decodeSymbol","byte1","byteString","ucs2encode","encoded1","encoded2","encoded3","encoded4","bufferLength","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","getBlob","mapArrayBufferViews","BlobBuilderConstructor","bb","BlobConstructor","JSONPPolling","rNewline","rEscapedNewline","glob","___eio","area","iframeId","initIframe","BrowserWebSocket","NodeWebSocket","MozWebSocket","WebSocketImpl","WS","usingBrowserWebSocket","supports","factor","deviation","_reportError","_headers","templateId","_normalizeAssemblyOptions","assemblyOptions","fieldNames","_getAssemblyOptions","_dedupe","dedupeMap","_dedupeMap$id$fileIDs","TransloaditAssemblyWatcher","_uppy","_assemblyIDs","_remaining","_resolve","_reject","_onAssemblyComplete","_onAssemblyCancel","_onAssemblyError","_onImportError","_watching","_checkAllComplete","_removeListeners","onMessage","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","DB_NAME","STORE_NAME","DEFAULT_EXPIRY","DB_VERSION","dbName","onupgradeneeded","db","transaction","oldVersion","createObjectStore","keyPath","createIndex","objectStore","openCursor","onsuccess","migrateExpiration","oncomplete","waitForRequest","cleanedUp","maxTotalSize","createConnection","IDBKeyRange","only","getSize","continue","upperBound","maybeParse","instanceIDs","findUppyInstances","wrapperId","wrapperName","storeWrapper","cells","rowsToAdd","columnsToAdd","ComponentTableBody","ratioDefault","cmdName","hasButtonBool","getSrcResult","isDefaultSrc","parseUri","qrs","mapUrl","mapType","frameborder","OComponent","parseFromSrc","updateSrc","getMapUrl","addr","qr","dblclick","classEmpty","fetchFile","FileUploader","srcExists","studioAssetManager","selectImages","fileRestritions","noDrag","getIframe","ifrm","frameBorder","onmousedown","compProt","disableEditing","updateContentText","syncContent","rte","fromDisable","rteEnabled","activeRte","toggleEvents","contentOpt","customRte","onInput","disablePropagation","mixins","elDocs","ComponentLinkView","vi","ytnc","videoId","ytUrl","ytncUrl","viUrl","poster","modestbranding","allowfullscreen","prov","getYoutubeTraits","getVimeoTraits","getSourceTraits","updateTraits","getYoutubeSrc","getYoutubeNoCookieSrc","getVimeoSrc","getProviderTrait","getAutoplayTrait","getLoopTrait","getControlsTrait","isYtProv","isYtncProv","isViProv","isExtProv","OComponentView","updateVideo","updateProvider","renderByProvider","videoEl","renderYoutube","renderYoutubeNoCookie","renderVimeo","renderSource","initVideoEl","scriptCount","svar","svarNext","createComment","transEndAdded","isAnimating","transitEndEvent","transitions","getTransitionEvent","toggleSlide","elMaxHeight","elDisplay","getElHeight","elStyle","transitProp","overflowY","navParent","navItems","navitem","itemsStyle","componentView","ComponentTableCell","ComponentTableCellView","ComponentTableRow","ComponentTableRowView","ComponentTable","ComponentTableView","ComponentTableHead","ComponentTableHeadView","ComponentTableBodyView","ComponentTableFoot","ComponentTableFootView","ComponentMap","ComponentMapView","ComponentLink","ComponentLabel","ComponentLabelView","ComponentVideo","ComponentVideoView","ComponentImage","ComponentImageView","ComponentScript","ComponentScriptView","ComponentSvg","ComponentSvgView","ComponentComment","ComponentCommentView","ComponentTextNode","ComponentTextNodeView","ComponentNavblock","ComponentInput","ComponentInputView","ComponentText","ComponentTextView","ComponentWrapper","storageKey","storeHtml","storeComponents","componentHovered","selectRemove","postLoad","handleChanges","handleUpdates","handleChangesColl","handleRemoves","evn","els","getCacheLoad","logError","isObj","getComponents","noStore","toStore","addComponent","extendView","extendFn","extendFnView","extendType","extendViewType","typeToExtend","modelToExt","viewToExt","getExtendedObj","srcToExt","parentFn","removeType","eventCapture","appendInput","getLabel","clsField","onValueChange","visibilityChanged","removeView","validationChanged","getClbOpts","elInput","getInputElem","initTrait","onUpdate","onEvent","getValueForTarget","setInputValue","postUpdate","tpl","createLabel","getModelValue","getElInput","renderField","inputs","createInput","hasLabel","noLabel","tmpl","TraitView","getCheckedValue","valueTrue","valueFalse","toInit","inputNumber","HTML","initValue","$toggleEl","triggerVisibility","labelButton","TraitNumberView","TraitSelectView","dropdown","TraitDropdownView","checkbox","TraitCheckboxView","TraitColorView","TraitButtonView","MToggle","TraitModernCheckBox","updatedCollection","TraitsViewer","TraitsView","fromElement","noticeOnUnload","forceClass","baseCss","protectedCss","canvasCss","defaultCommand","showDevices","mediaCondition","jsInHtml","multipleSelection","exportWrapper","wrapperIsBody","avoidDefaults","clearStyles","dragMode","assetManager","storageManager","richTextEditor","domComponents","codeManager","cssComposer","selectorManager","deviceManager","widthMedia","styleManager","blockManager","traitManager","keepUnusedStyles","multiFrames","timedInterval","updateItr","ViewProt","eventNsMap","vid","eventMap","getEvents","getNamespaces","bval","baseVal","Window","ar","Extender","logs","clipboard","previousModel","changesCount","storables","toLoad","toLog","attrsOrig","loadModule","updateChanges","listenLog","eventFrom","eventTo","loadOnStart","canAutoload","onbeforeunload","isAutosave","getStepsBeforeSave","moduleName","Mod","cfgParent","cfg","removeSelected","addSelected","toggleSelected","wrp","getCode","avoidProt","avoidProtected","protCss","cacheLoad","getDeviceModel","defaultRunning","refreshCanvas","getDirtyCount","inAbsoluteMode","destroyAll","Keymaps","logNs","logInfo","disableButtons","contEl","$imageUploadModal","EditorModel","editorView","StorageManager","DeviceManager","RichTextEditor","addComponents","getSelectedToStyle","setDevice","getDevice","setCustomRte","setCustomParserCss","fetched","dbAuthToken","hfUploadToken","allowedExtArr","imageUploadMarkup","hfPluginUrl","fnFetchUserImages","reqUrl","respData","fnManipulateAndDisplayData","displyFilteredTile","arryForFilter","replaceAll","$parentListing","unique_key","isImageFileUrl","getIconFromExt","allImageList","sortByTimestamp","allDocList","$imageTiles","$DocTiles","fileExt","arrfileUrl","imageExt","getImageExt","checkArryExt","getDocExt","isUppyMimeType","compareWithExt","tempArrfileUrl","row1","row2","comparison","fnFetchUnsplashImages","imgObj","imgUrl","rowData","fnFetchIconFinderImages","raster_sizes","preview_url","slashedUrl","is_premium","uppyFileRestriction","allowedFiles","checkRestrictionType","restrictionType","hideAllFileTile","showImageFileTile","showDocFileTile","allowedFile","getDefaultExtForUppy","showSpecificFileTile","defaultFileType","showDefaultFileTile","docExt","isDocFile","isImageFile","keyup","searchTerm","$parentImgListing","Core","pertype","newImg","newDoc","totalSelected","successCallback","errCallback","maxLimit","alreadySelected","isIE","originalCreateHTMLDocument","DOMImplementation","polyfills","defaultConfig","autorender","Gradient","pluginsOpts","Editor","plgOptions","wplg","noAssets","uploadName","multiUpload","autoAdd","uploadText","addBtnText","customFetch","embedAsBase64","dropzone","openAssetsOnDrop","dropzoneContent","inputPlaceholder","beforeUpload","getFilename","getExtension","Asset","unitDim","AssetView","getPreview","getInfo","dim","onRemove","stopImmediatePropagation","AssetImage","AssetImageView","renderAssets","addToAsset","removedAsset","handleSubmit","getAddInput","getAssetsEl","globalCollection","inputUrl","toggleNoAssets","addAsset","assetsEl","fuRendered","fu","disableUpload","onUploadStart","onUploadEnd","onUploadError","onUploadResponse","fetchOpts","initDrop","uploadForm","ondragover","ondragleave","ondrop","initDropzone","addedCls","edEl","dropzoneCls","cleanEditorElCls","mimeTypeMatcher","Assets","FileUpload","AssetsView","getAllVisible","toRender","appendOnClick","activate","Category","Block","dragend","endDrag","getSorter","setDropContent","validTarget","startDrag","setDragHelper","handleDrag","handleDragEnd","oldActive","dragResult","dragContent","iconClass","activeClass","getIconEl","getBlocksEl","iconEl","blocksEl","categories","renderedCategories","noCatClass","blockContClass","catsClass","tac","grabbingCls","updateConfig","BlockView","ignoreCategories","catModel","catId","catView","getCategoriesEl","CategoryView","catsEl","blocksVisible","blocksView","Blocks","BlockCategories","BlocksView","getCategories","external","inlineCss","buildModels","maxValue","MAX_VALUE","compCls","buildFromModel","isWrapper","atRules","dump","getAtRule","mRules","buildFromRule","sortMediaObject","rulesStr","ruleStr","selectorStrNoAdd","skipAdd","singleAtRule","getDeclaration","getQueryLength","mediaQuery","itemsArr","isMobFirst","mquery","beforeEach","mapModel","mapJs","getContent","autoFormatRange","noRefresh","generators","defGenerators","viewers","defViewers","gHtml","gCss","gJson","gJs","eCM","loadDefaultGenerators","loadDefaultViewers","addGenerator","getGenerator","getGenerators","addViewer","viewer","getViewers","createViewer","txtarea","updateViewer","genId","swv","ola","obl","ful","prv","cgdev","delayBtnsShow","btn","Panel","activeCls","disableCls","btnsVisCls","checkActive","updateBtnsVis","updateClassName","updateDisable","markupChanged","attrCls","$buttons","noStop","toogleForMarkupUrl","$image","$img","toogleActive","parentM","ButtonView","prependContent","toggleVisible","tc","cr","bc","resz","resLen","tl","bl","br","silentFrames","avoidContainerUpdate","forContainer","styleWidth","styleHeight","ButtonsView","PanelView","PanelsViewObj","PanelsView","removePanel","addButton","panelId","removeButton","staticRules","mediaText","atRuleType","slct","typeStr","addSelector","isBody","toCSS","ruleProps","wd","CssRule","parseCss","toTrack","selModel","CssRuleView","getBlockId","renderStarted","atRuleEl","styleEl","CssGroupRuleView","appendData","clsName","defaultBlockId","blockId","getMediaWidth","contRules","prs","rulesView","storeCss","storeStyles","CssRules","CssRulesView","sl","newSels","selec","modelExists","avoidUpdateStyle","styleUpdate","atRuleParams","checkNode","timerZoom","Droppable","handleDragEnter","updateCounter","endDrop","autoscrollLimit","notTextable","getHead","setHead","addHeadItem","getHeadByAttr","removeHeadByAttr","addLink","removeLink","addScript","removeScript","rulers","Frame","onZoomChange","motionsEv","updateHead","updateDim","headEl","currW","currH","newW","newH","noChanges","wheel","clearOff","updateFrames","toggleListeners","FrameView","_parentEvent","onWheel","getZoom","defOpts","mpl","framesArea","isElInViewport","frameRect","rTop","rLeft","toolsEl","renderScripts","appendScript","renderBody","getDocument","externalStyles","frameCss","getJsContainer","fdoc","oEvent","keyCodeVal","createCustomEvent","docBody","frmOff","cvsOff","getCanvasOffset","eo","frmTop","avoidFrameOffset","frmLeft","getElementOffsets","bEl","fo","jsContainer","$frames","hlEl","badgeEl","placerEl","ghostEl","resizerEl","offsetEl","fixedOffsetEl","CanvasView","setWrapper","startAutoscroll","stopAutoscroll","autoscroll","updateClientY","getFrame","getGhostEl","getOffsetViewerEl","getFixedOffsetViewerEl","setCustomBadgeLabel","leftScroll","toRight","eventToTrigger","elTop","elLeft","topPos","canvasHeight","addTop","addLeft","subWinOffset","frameElement","yOffset","xOffset","toIgnore","cv","getScrollListeners","lastClientY","frameWindow","nextTop","limitTop","limitBottom","setZoom","getZoomMultiplier","getFrameWrapperEl","isFromDesigner","Control","gconfig","getControlStatus","opencontrol","CommonFunction","closeControlList","mongoData","addNewControl","ControlView","ControlsView","rootdir","Controls","ControlsColl","ControlListView","ajaxUrl","parameter","URLSearchParams","openControl","ctrlmdl","controlListSucces","deviceLabel","checkUnit","Device","getSorted","startAdd","updateSelect","updateDevice","devEl","devicesEl","Devices","DevicesView","createRule","declarations","createAtRule","atRuleKeys","singleAtRules","singleAtRulesNames","parseSelector","stl","propName","propValue","getPropertyPriority","parseCondition","conditionText","selectorText","createNode","selLen","lastClass","stateArr","sheet","cssRules","keyText","isSingleAtRule","subRules","subRule","selsParsed","selsAdd","lastRule","len3","selsAddStr","BrowserCssParser","classSets","classSet","pHtml","pCss","autosave","autoload","stepsBeforeSave","checkLocal","urlStore","urlLoad","jqXHR","onComplete","contentTypeJson","fetchOptions","checkStorageEnvironment","clbErr","onResponse","typeJson","reqHead","typeHead","bodyObj","bodyKey","addOpts","storages","defaultStorages","RemoteStorage","currentStorage","loadDefaultProviders","setCurrent","setAutosave","setStepsBeforeSave","getStorages","getCurrent","keysF","itemKey","itemKeyR","getCurrentStorage","statesLabel","selectedLabel","startEditTag","endEditTag","innerText","changeStatus","removeTag","chkOn","$chk","addBtnId","newInputId","stateInputId","stateInputC","getStyleEmitter","updateSelector","renderClasses","tagRemoved","updateStateVis","getStateOptions","strInput","addToClasses","startNewTag","$addBtn","endNewTag","onInputKeyUp","addNewTag","compTarget","validSelectors","getStates","getStatesC","elSel","stateChanged","$states","ClassTagView","$statesC","$classes","isId","isClass","selectorTags","ClassTagsView","cname","getSelector","backdrop","updateTitle","getCollector","$collector","$content","getTitle","$title","triggerEvent","ModalM","enb","ModalView","setTitle","onceClose","onceOpen","getContentEl","elT","elL","borderOffset","freezeClass","onMoveClb","ignoreModels","offTop","offLeft","$document","dropContent","selectOnEnd","activeTextModel","getScale","getDocuments","canvasDoc","dropModel","updateTextViewCursorPosition","targetDoc","caretRangeFromPoint","poiner","rangeParent","rangeOffset","setContentEditable","toggleSortCursor","clonedEl","moveDragHelper","posY","posX","dragHelperStyle","useBody","createPlaceholder","contSel","eV","isTextable","isTextableActive","tempModel","selectTargetModel","prevModel","targetModel","dsp","eO","rY","rX","mousePos","eventMove","sourceModel","dimsFromTarget","lastDims","disableTextable","movePlaceholder","prevTargetDim","$plh","isInFlow","styleInFlow","$parent","trgModel","dragInfo","dropInfo","prevTarget","targetP","validResult","getDim","cacheDimsP","getChildrenDim","cacheDims","nearBorders","targetParent","getTargetFromEl","targetPrev","nearElBorders","getCurrentPos","elOffsets","elIndex","indexEl","leftLimit","xLimit","dimRight","yLimit","xCenter","yCenter","dimDown","trgDim","elDim","borderColor","borderWidth","brd","marg","brdCol","margI","srcEl","modelToDrop","modelTemp","warns","targetCollection","viewActive","modelEl","insertHTML","minDim","maxDim","getBoundingRect","hdl","createHandler","frames","forceShow","handleMouseDown","attrName","handlerAttr","clickedHandler","rectDim","startPos","handleKeyDown","toggleFrames","mouseFetch","calc","updateRect","getSelectedHandler","rectEl","isHandler","deltaX","deltaY","startW","startH","ratioActive","RTE_KEY","defActions","italic","underline","strikethrough","setEl","updateActiveActions","settAct","actionbar","actionbarCont","actionbarContainer","addAction","styleWithCSS","syncActions","getActions","queryCommandSupported","queryCommandState","actionbarEl","deleteContents","nd","insertNode","adjustToolbar","lastEl","globalRte","hideToolbar","initRte","updatePosition","defaultCommands","commandsDef","CommandAbstract","selAll","nativeDrag","defComOptions","hideTlb","cmdMove","oldCmd","loadDefaultCommands","cmdObj","getActive"],"mappings":"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ACXA,EAAKrmP,MAAQomP,EAAMn8O,GACnBo8O,EAAK/mP,KAAO8mP,EAAMn8O,GAAG4M,MAAM,KAAK,GAChC5U,EAAI6D,KAAKtE,KAAK6kP,GAEhB,MACF,IAAK,cACHpkP,EAAI6D,KAAO,CACT,CACE9F,MAAO,MACPV,KAAM,QAER,CACEU,MAAO,MACPV,KAAM,eAER,CACEU,MAAO,MACPV,KAAM,SAER,CACEU,MAAO,MACPV,KAAM,UAER,CACEU,MAAO,MACPV,KAAM,UAER,CACEU,MAAO,MACPV,KAAM,aAER,CACEU,MAAO,MACPV,KAAM,QAER,CACEU,MAAO,MACPV,KAAM,cAER,CACEU,MAAO,MACPV,KAAM,eAGV,MACF,IAAK,aACH2C,EAAI6D,KAAO,CACT,CACE9F,MAAO,QAET,CACEA,MAAO,UAET,CACEA,MAAO,SAET,CACEA,MAAO,YAGX,MACF,IAAK,eACHiC,EAAI6D,KAAO,CACT,CACE9F,MAAO,QAET,CACEA,MAAO,SAET,CACEA,MAAO,UAET,CACEA,MAAO,UAET,CACEA,MAAO,UAET,CACEA,MAAO,UAET,CACEA,MAAO,SAET,CACEA,MAAO,SAET,CACEA,MAAO,WAGX,MACF,IAAK,kBACHiC,EAAI6D,KAAO,CACT,CACE9F,MAAO,GACPV,KAAM,WAER,CACEU,MAAO,QACPV,KAAM,WAGV,MACF,IAAK,oBACH2C,EAAI6D,KAAO,CACT,CACE9F,MAAO,UAET,CACEA,MAAO,YAET,CACEA,MAAO,YAET,CACEA,MAAO,cAGX,MACF,IAAK,sBACHiC,EAAI6D,KAAO,CACT,CACE9F,MAAO,YAET,CACEA,MAAO,eAET,CACEA,MAAO,eAET,CACEA,MAAO,aAET,CACEA,MAAO,gBAET,CACEA,MAAO,gBAET,CACEA,MAAO,cAET,CACEA,MAAO,iBAET,CACEA,MAAO,kBAGX,MACF,IAAK,wBACHiC,EAAI6D,KAAO,CACT,CACE9F,MAAO,UAET,CACEA,MAAO,SAET,CACEA,MAAO,UAGX,MACF,IAAK,kBACHiC,EAAI6D,KAAO,CACT,CACE9F,MAAO,QAET,CACEA,MAAO,SAET,CA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","file":"dist/grapes.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Designer\"] = factory();\n\telse\n\t\troot[\"Designer\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 538);\n","// Underscore.js 1.9.1\n// http://underscorejs.org\n// (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n(function() {\n\n // Baseline setup\n // --------------\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n this ||\n {};\n\n // Save the previous value of the `_` variable.\n var previousUnderscore = root._;\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // All **ECMAScript 5** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create;\n\n // Naked function reference for surrogate-prototype-swapping.\n var Ctor = function(){};\n\n // Create a safe reference to the Underscore object for use below.\n var _ = function(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n };\n\n // Export the Underscore object for **Node.js**, with\n // backwards-compatibility for their old module API. If we're in\n // the browser, add `_` as a global object.\n // (`nodeType` is checked to ensure that `module`\n // and `exports` are not HTML elements.)\n if (typeof exports != 'undefined' && !exports.nodeType) {\n if (typeof module != 'undefined' && !module.nodeType && module.exports) {\n exports = module.exports = _;\n }\n exports._ = _;\n } else {\n root._ = _;\n }\n\n // Current version.\n _.VERSION = '1.9.1';\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n var optimizeCb = function(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n };\n\n var builtinIteratee;\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n var cb = function(value, context, argCount) {\n if (_.iteratee !== builtinIteratee) return _.iteratee(value, context);\n if (value == null) return _.identity;\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\n if (_.isObject(value) && !_.isArray(value)) return _.matcher(value);\n return _.property(value);\n };\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only argCount argument.\n _.iteratee = builtinIteratee = function(value, context) {\n return cb(value, context, Infinity);\n };\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n var restArguments = function(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n };\n\n // An internal function for creating a new object that inherits from another.\n var baseCreate = function(prototype) {\n if (!_.isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n };\n\n var shallowProperty = function(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n };\n\n var has = function(obj, path) {\n return obj != null && hasOwnProperty.call(obj, path);\n }\n\n var deepGet = function(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n };\n\n // Helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n var getLength = shallowProperty('length');\n var isArrayLike = function(collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n // Collection Functions\n // --------------------\n\n // The cornerstone, an `each` implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n _.each = _.forEach = function(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var keys = _.keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n iteratee(obj[keys[i]], keys[i], obj);\n }\n }\n return obj;\n };\n\n // Return the results of applying the iteratee to each element.\n _.map = _.collect = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Create a reducing function iterating left or right.\n var createReduce = function(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[keys ? keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = keys ? keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n };\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n _.reduce = _.foldl = _.inject = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n _.reduceRight = _.foldr = createReduce(-1);\n\n // Return the first value which passes a truth test. Aliased as `detect`.\n _.find = _.detect = function(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n };\n\n // Return all the elements that pass a truth test.\n // Aliased as `select`.\n _.filter = _.select = function(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n _.each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n };\n\n // Return all the elements for which a truth test fails.\n _.reject = function(obj, predicate, context) {\n return _.filter(obj, _.negate(cb(predicate)), context);\n };\n\n // Determine whether all of the elements match a truth test.\n // Aliased as `all`.\n _.every = _.all = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n };\n\n // Determine if at least one element in the object matches a truth test.\n // Aliased as `any`.\n _.some = _.any = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = !isArrayLike(obj) && _.keys(obj),\n length = (keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = keys ? keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n };\n\n // Determine if the array or object contains a given item (using `===`).\n // Aliased as `includes` and `include`.\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return _.indexOf(obj, item, fromIndex) >= 0;\n };\n\n // Invoke a method (with arguments) on every item in a collection.\n _.invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (_.isFunction(path)) {\n func = path;\n } else if (_.isArray(path)) {\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return _.map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `map`: fetching a property.\n _.pluck = function(obj, key) {\n return _.map(obj, _.property(key));\n };\n\n // Convenience version of a common use case of `filter`: selecting only objects\n // containing specific `key:value` pairs.\n _.where = function(obj, attrs) {\n return _.filter(obj, _.matcher(attrs));\n };\n\n // Convenience version of a common use case of `find`: getting the first object\n // containing specific `key:value` pairs.\n _.findWhere = function(obj, attrs) {\n return _.find(obj, _.matcher(attrs));\n };\n\n // Return the maximum element (or element-based computation).\n _.max = function(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Return the minimum element (or element-based computation).\n _.min = function(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : _.values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n _.each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n };\n\n // Shuffle a collection.\n _.shuffle = function(obj) {\n return _.sample(obj, Infinity);\n };\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `map`.\n _.sample = function(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = _.values(obj);\n return obj[_.random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = _.random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n };\n\n // Sort the object's values by a criterion produced by an iteratee.\n _.sortBy = function(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return _.pluck(_.map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n };\n\n // An internal function used for aggregate \"group by\" operations.\n var group = function(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n _.each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n };\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n _.groupBy = group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\n // when you know that your index values will be unique.\n _.indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n _.countBy = group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n });\n\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n // Safely create a real, live array from anything iterable.\n _.toArray = function(obj) {\n if (!obj) return [];\n if (_.isArray(obj)) return slice.call(obj);\n if (_.isString(obj)) {\n // Keep surrogate pair characters together\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return _.map(obj, _.identity);\n return _.values(obj);\n };\n\n // Return the number of elements in an object.\n _.size = function(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\n };\n\n // Split a collection into two arrays: one whose elements all satisfy the given\n // predicate, and one whose elements all do not satisfy the predicate.\n _.partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Array Functions\n // ---------------\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. Aliased as `head` and `take`. The **guard** check\n // allows it to work with `_.map`.\n _.first = _.head = _.take = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[0];\n return _.initial(array, array.length - n);\n };\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n _.initial = function(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n };\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n _.last = function(array, n, guard) {\n if (array == null || array.length < 1) return n == null ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return _.rest(array, Math.max(0, array.length - n));\n };\n\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\n // Especially useful on the arguments object. Passing an **n** will return\n // the rest N values in the array.\n _.rest = _.tail = _.drop = function(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n };\n\n // Trim out all falsy values from an array.\n _.compact = function(array) {\n return _.filter(array, Boolean);\n };\n\n // Internal implementation of a recursive `flatten` function.\n var flatten = function(input, shallow, strict, output) {\n output = output || [];\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (shallow) {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n } else {\n flatten(value, shallow, strict, output);\n idx = output.length;\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n };\n\n // Flatten out an array, either recursively (by default), or just one level.\n _.flatten = function(array, shallow) {\n return flatten(array, shallow, false);\n };\n\n // Return a version of the array that does not contain the specified value(s).\n _.without = restArguments(function(array, otherArrays) {\n return _.difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n // Aliased as `unique`.\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\n if (!_.isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!_.contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!_.contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n };\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n _.union = restArguments(function(arrays) {\n return _.uniq(flatten(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n _.intersection = function(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (_.contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!_.contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n };\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n _.difference = restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return _.filter(array, function(value){\n return !_.contains(rest, value);\n });\n });\n\n // Complement of _.zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n _.unzip = function(array) {\n var length = array && _.max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = _.pluck(array, index);\n }\n return result;\n };\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n _.zip = restArguments(_.unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of _.pairs.\n _.object = function(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n };\n\n // Generator function to create the findIndex and findLastIndex functions.\n var createPredicateIndexFinder = function(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n };\n\n // Returns the first index on an array-like that passes a predicate test.\n _.findIndex = createPredicateIndexFinder(1);\n _.findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n _.sortedIndex = function(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n };\n\n // Generator function to create the indexOf and lastIndexOf functions.\n var createIndexFinder = function(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n };\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\n _.range = function(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n };\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n _.chunk = function(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n };\n\n // Function (ahem) Functions\n // ------------------\n\n // Determines whether to execute a function as a constructor\n // or a normal function with the provided arguments.\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (_.isObject(result)) return result;\n return self;\n };\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\n // available.\n _.bind = restArguments(function(func, context, args) {\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n _.partial = restArguments(function(func, boundArgs) {\n var placeholder = _.partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n _.partial.placeholder = _;\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n _.bindAll = restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = _.bind(obj[key], obj);\n }\n });\n\n // Memoize an expensive function by storing its results.\n _.memoize = function(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n };\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n _.delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n _.defer = _.partial(_.delay, _, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n _.throttle = function(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : _.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var now = _.now();\n if (!previous && options.leading === false) previous = now;\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) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n };\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n _.debounce = function(func, wait, immediate) {\n var timeout, result;\n\n var later = function(context, args) {\n timeout = null;\n if (args) result = func.apply(context, args);\n };\n\n var debounced = restArguments(function(args) {\n if (timeout) clearTimeout(timeout);\n if (immediate) {\n var callNow = !timeout;\n timeout = setTimeout(later, wait);\n if (callNow) result = func.apply(this, args);\n } else {\n timeout = _.delay(later, wait, this, args);\n }\n\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n };\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n _.wrap = function(func, wrapper) {\n return _.partial(wrapper, func);\n };\n\n // Returns a negated version of the passed-in predicate.\n _.negate = function(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n };\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n _.compose = function() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n };\n\n // Returns a function that will only be executed on and after the Nth call.\n _.after = function(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n };\n\n // Returns a function that will only be executed up to (but not including) the Nth call.\n _.before = function(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n };\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n _.once = _.partial(_.before, 2);\n\n _.restArguments = restArguments;\n\n // Object Functions\n // ----------------\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n var collectNonEnumProps = function(obj, keys) {\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = _.isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\n keys.push(prop);\n }\n }\n };\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n _.keys = function(obj) {\n if (!_.isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve all the property names of an object.\n _.allKeys = function(obj) {\n if (!_.isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n };\n\n // Retrieve the values of an object's properties.\n _.values = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[keys[i]];\n }\n return values;\n };\n\n // Returns the results of applying the iteratee to each element of the object.\n // In contrast to _.map it returns an object.\n _.mapObject = function(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var keys = _.keys(obj),\n length = keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n };\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of _.object.\n _.pairs = function(obj) {\n var keys = _.keys(obj);\n var length = keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [keys[i], obj[keys[i]]];\n }\n return pairs;\n };\n\n // Invert the keys and values of an object. The values must be serializable.\n _.invert = function(obj) {\n var result = {};\n var keys = _.keys(obj);\n for (var i = 0, length = keys.length; i < length; i++) {\n result[obj[keys[i]]] = keys[i];\n }\n return result;\n };\n\n // Return a sorted list of the function names available on the object.\n // Aliased as `methods`.\n _.functions = _.methods = function(obj) {\n var names = [];\n for (var key in obj) {\n if (_.isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n };\n\n // An internal function for creating assigner functions.\n var createAssigner = function(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n };\n\n // Extend a given object with all the properties in passed-in object(s).\n _.extend = createAssigner(_.allKeys);\n\n // Assigns a given object with all the own properties in the passed-in object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n _.extendOwn = _.assign = createAssigner(_.keys);\n\n // Returns the first key on an object that passes a predicate test.\n _.findKey = function(obj, predicate, context) {\n predicate = cb(predicate, context);\n var keys = _.keys(obj), key;\n for (var i = 0, length = keys.length; i < length; i++) {\n key = keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n };\n\n // Internal pick helper function to determine if `obj` has key `key`.\n var keyInObj = function(value, key, obj) {\n return key in obj;\n };\n\n // Return a copy of the object only containing the whitelisted properties.\n _.pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (_.isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = _.allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the blacklisted properties.\n _.omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (_.isFunction(iteratee)) {\n iteratee = _.negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = _.map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !_.contains(keys, key);\n };\n }\n return _.pick(obj, iteratee, context);\n });\n\n // Fill in a given object with default properties.\n _.defaults = createAssigner(_.allKeys, true);\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n _.create = function(prototype, props) {\n var result = baseCreate(prototype);\n if (props) _.extendOwn(result, props);\n return result;\n };\n\n // Create a (shallow-cloned) duplicate of an object.\n _.clone = function(obj) {\n if (!_.isObject(obj)) return obj;\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\n };\n\n // Invokes interceptor with the obj, and then returns obj.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n _.tap = function(obj, interceptor) {\n interceptor(obj);\n return obj;\n };\n\n // Returns whether an object has a given set of `key:value` pairs.\n _.isMatch = function(object, attrs) {\n var keys = _.keys(attrs), length = keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n };\n\n\n // Internal recursive comparison function for `isEqual`.\n var eq, deepEq;\n eq = function(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n };\n\n // Internal recursive comparison function for `isEqual`.\n deepEq = function(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\n _.isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var keys = _.keys(a), key;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (_.keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n };\n\n // Perform a deep comparison to check if two objects are equal.\n _.isEqual = function(a, b) {\n return eq(a, b);\n };\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n _.isEmpty = function(obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n // Is a given value a DOM element?\n _.isElement = function(obj) {\n return !!(obj && obj.nodeType === 1);\n };\n\n // Is a given value an array?\n // Delegates to ECMA5's native Array.isArray\n _.isArray = nativeIsArray || function(obj) {\n return toString.call(obj) === '[object Array]';\n };\n\n // Is a given variable an object?\n _.isObject = function(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n };\n\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet.\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) {\n _['is' + name] = function(obj) {\n return toString.call(obj) === '[object ' + name + ']';\n };\n });\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n if (!_.isArguments(arguments)) {\n _.isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\n // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n _.isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n // Is a given object a finite number?\n _.isFinite = function(obj) {\n return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj));\n };\n\n // Is the given value `NaN`?\n _.isNaN = function(obj) {\n return _.isNumber(obj) && isNaN(obj);\n };\n\n // Is a given value a boolean?\n _.isBoolean = function(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n };\n\n // Is a given value equal to null?\n _.isNull = function(obj) {\n return obj === null;\n };\n\n // Is a given variable undefined?\n _.isUndefined = function(obj) {\n return obj === void 0;\n };\n\n // Shortcut function for checking if an object has a given property directly\n // on itself (in other words, not on a prototype).\n _.has = function(obj, path) {\n if (!_.isArray(path)) {\n return has(obj, path);\n }\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (obj == null || !hasOwnProperty.call(obj, key)) {\n return false;\n }\n obj = obj[key];\n }\n return !!length;\n };\n\n // Utility Functions\n // -----------------\n\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\n // previous owner. Returns a reference to the Underscore object.\n _.noConflict = function() {\n root._ = previousUnderscore;\n return this;\n };\n\n // Keep the identity function around for default iteratees.\n _.identity = function(value) {\n return value;\n };\n\n // Predicate-generating functions. Often useful outside of Underscore.\n _.constant = function(value) {\n return function() {\n return value;\n };\n };\n\n _.noop = function(){};\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indexes.\n _.property = function(path) {\n if (!_.isArray(path)) {\n return shallowProperty(path);\n }\n return function(obj) {\n return deepGet(obj, path);\n };\n };\n\n // Generates a function for a given object that returns a given property.\n _.propertyOf = function(obj) {\n if (obj == null) {\n return function(){};\n }\n return function(path) {\n return !_.isArray(path) ? obj[path] : deepGet(obj, path);\n };\n };\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n _.matcher = _.matches = function(attrs) {\n attrs = _.extendOwn({}, attrs);\n return function(obj) {\n return _.isMatch(obj, attrs);\n };\n };\n\n // Run a function **n** times.\n _.times = function(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n };\n\n // Return a random integer between min and max (inclusive).\n _.random = function(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n };\n\n // A (possibly faster) way to get the current timestamp as an integer.\n _.now = Date.now || function() {\n return new Date().getTime();\n };\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = _.invert(escapeMap);\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + _.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n _.escape = createEscaper(escapeMap);\n _.unescape = createEscaper(unescapeMap);\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n _.result = function(obj, path, fallback) {\n if (!_.isArray(path)) path = [path];\n var length = path.length;\n if (!length) {\n return _.isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = _.isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n };\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n // By default, Underscore uses ERB-style template delimiters, change the\n // following template settings to use alternative delimiters.\n _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n var escapeChar = function(match) {\n return '\\\\' + escapes[match];\n };\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n _.template = function(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = _.defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n // If a variable is not specified, place data values in local scope.\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(settings.variable || 'obj', '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n var argument = settings.variable || 'obj';\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n };\n\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\n _.chain = function(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n };\n\n // OOP\n // ---------------\n // If Underscore is called as a function, it returns a wrapped object that\n // can be used OO-style. This wrapper holds altered versions of all the\n // underscore functions. Wrapped objects may be chained.\n\n // Helper function to continue chaining intermediate results.\n var chainResult = function(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n };\n\n // Add your own custom functions to the Underscore object.\n _.mixin = function(obj) {\n _.each(_.functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n };\n\n // Add all of the Underscore functions to the wrapper object.\n _.mixin(_);\n\n // Add all mutator Array functions to the wrapper.\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor Array functions to the wrapper.\n _.each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n return chainResult(this, method.apply(this._wrapped, arguments));\n };\n });\n\n // Extracts the result from a wrapped and chained object.\n _.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxy for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n _.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // AMD registration happens at the end for compatibility with AMD loaders\n // that may not enforce next-turn semantics on modules. Even though general\n // practice for AMD registration is to be anonymous, underscore registers\n // as a named module because, like jQuery, it is a base library that is\n // popular enough to be bundled in a third party lib, but not be part of\n // an AMD load request. Those cases could generate an error when an\n // anonymous define() is called outside of a loader request.\n if (typeof define == 'function' && define.amd) {\n define('underscore', [], function() {\n return _;\n });\n }\n}());\n","// Backbone.js 1.3.3\n\n// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global);\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.3.3';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return _[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n };\n var addUnderscoreMethods = function(Class, methods, attribute) {\n _.each(methods, function(length, method) {\n if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n }\n return _.size(changed) ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Model#attributes`.\n addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(obj.attributes || obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], _.bind(method, this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\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;","//! 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', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","import { keys, isUndefined, isElement } from 'underscore';\r\n\r\nconst elProt = window.Element.prototype;\r\nconst matches =\r\n elProt.matches ||\r\n elProt.webkitMatchesSelector ||\r\n elProt.mozMatchesSelector ||\r\n elProt.msMatchesSelector;\r\n\r\n/**\r\n * Returns shallow diff between 2 objects\r\n * @param {Object} objOrig\r\n * @param {Objec} objNew\r\n * @return {Object}\r\n * @example\r\n * var a = {foo: 'bar', baz: 1, faz: 'sop'};\r\n * var b = {foo: 'bar', baz: 2, bar: ''};\r\n * shallowDiff(a, b);\r\n * // -> {baz: 2, faz: null, bar: ''};\r\n */\r\nconst shallowDiff = (objOrig, objNew) => {\r\n const result = {};\r\n const keysNew = keys(objNew);\r\n\r\n for (let prop in objOrig) {\r\n if (objOrig.hasOwnProperty(prop)) {\r\n const origValue = objOrig[prop];\r\n const newValue = objNew[prop];\r\n\r\n if (keysNew.indexOf(prop) >= 0) {\r\n if (origValue !== newValue) {\r\n result[prop] = newValue;\r\n }\r\n } else {\r\n result[prop] = null;\r\n }\r\n }\r\n }\r\n\r\n for (let prop in objNew) {\r\n if (objNew.hasOwnProperty(prop)) {\r\n if (isUndefined(objOrig[prop])) {\r\n result[prop] = objNew[prop];\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\nconst on = (el, ev, fn) => {\r\n ev = ev.split(/\\s+/);\r\n el = el instanceof Array ? el : [el];\r\n\r\n for (let i = 0; i < ev.length; ++i) {\r\n el.forEach(elem => elem.addEventListener(ev[i], fn));\r\n }\r\n};\r\n\r\nconst off = (el, ev, fn) => {\r\n ev = ev.split(/\\s+/);\r\n el = el instanceof Array ? el : [el];\r\n\r\n for (let i = 0; i < ev.length; ++i) {\r\n el.forEach(elem => elem.removeEventListener(ev[i], fn));\r\n }\r\n};\r\n\r\nconst getUnitFromValue = value => {\r\n return value.replace(parseFloat(value), '');\r\n};\r\n\r\nconst upFirst = value => value[0].toUpperCase() + value.toLowerCase().slice(1);\r\n\r\nconst camelCase = value => {\r\n const values = value.split('-').filter(String);\r\n return values[0].toLowerCase() + values.slice(1).map(upFirst);\r\n};\r\n\r\nconst normalizeFloat = (value, step = 1, valueDef = 0) => {\r\n let stepDecimals = 0;\r\n if (isNaN(value)) return valueDef;\r\n value = parseFloat(value);\r\n\r\n if (Math.floor(value) !== value) {\r\n const side = step.toString().split('.')[1];\r\n stepDecimals = side ? side.length : 0;\r\n }\r\n\r\n return stepDecimals ? parseFloat(value.toFixed(stepDecimals)) : value;\r\n};\r\n\r\nconst hasDnd = em => {\r\n return (\r\n 'draggable' in document.createElement('i') &&\r\n (em ? em.get('Config').nativeDnD : 1)\r\n );\r\n};\r\n\r\n/**\r\n * Ensure to fetch the element from the input argument\r\n * @param {HTMLElement|Component} el Component or HTML element\r\n * @return {HTMLElement}\r\n */\r\nconst getElement = el => {\r\n if (isElement(el) || isTextNode(el)) {\r\n return el;\r\n } else if (el && el.getEl) {\r\n return el.getEl();\r\n }\r\n};\r\n\r\n/**\r\n * Check if element is a text node\r\n * @param {HTMLElement} el\r\n * @return {Boolean}\r\n */\r\nconst isTextNode = el => el && el.nodeType === 3;\r\n\r\n/**\r\n * Check if element is a comment node\r\n * @param {HTMLElement} el\r\n * @return {Boolean}\r\n */\r\nexport const isCommentNode = el => el && el.nodeType === 8;\r\n\r\n/**\r\n * Check if element is a comment node\r\n * @param {HTMLElement} el\r\n * @return {Boolean}\r\n */\r\nexport const isTaggableNode = el => el && !isTextNode(el) && !isCommentNode(el);\r\n\r\n/**\r\n * Ensure to fetch the model from the input argument\r\n * @param {HTMLElement|Component} el Component or HTML element\r\n * @return {Component}\r\n */\r\nconst getModel = (el, $) => {\r\n let model = el;\r\n isElement(el) && (model = $(el).data('model'));\r\n return model;\r\n};\r\n\r\nconst getElRect = el => {\r\n const def = {\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n if (!el) return def;\r\n let rectText;\r\n\r\n if (isTextNode(el)) {\r\n const range = document.createRange();\r\n range.selectNode(el);\r\n rectText = range.getBoundingClientRect();\r\n range.detach();\r\n }\r\n\r\n return (\r\n rectText || (el.getBoundingClientRect ? el.getBoundingClientRect() : def)\r\n );\r\n};\r\n\r\n/**\r\n * Get cross-device pointer event\r\n * @param {Event} ev\r\n * @return {Event}\r\n */\r\nconst getPointerEvent = ev =>\r\n ev.touches && ev.touches[0] ? ev.touches[0] : ev;\r\n\r\n/**\r\n * Get cross-browser keycode\r\n * @param {Event} ev\r\n * @return {Number}\r\n */\r\nconst getKeyCode = ev => ev.which || ev.keyCode;\r\nconst getKeyChar = ev => String.fromCharCode(getKeyCode(ev));\r\nconst isEscKey = ev => getKeyCode(ev) === 27;\r\n\r\nconst capitalize = str => str.charAt(0).toUpperCase() + str.substring(1);\r\n\r\nexport {\r\n on,\r\n off,\r\n hasDnd,\r\n upFirst,\r\n matches,\r\n getModel,\r\n getElRect,\r\n camelCase,\r\n isTextNode,\r\n getKeyCode,\r\n getKeyChar,\r\n isEscKey,\r\n getElement,\r\n shallowDiff,\r\n normalizeFloat,\r\n getPointerEvent,\r\n getUnitFromValue,\r\n capitalize\r\n};\r\n","/** Virtual DOM Node */\nfunction VNode() {}\n\n/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nvar options = {\n\n\t/** If `true`, `prop` changes trigger synchronous component updates.\n *\t@name syncComponentUpdates\n *\t@type Boolean\n *\t@default true\n */\n\t//syncComponentUpdates: true,\n\n\t/** Processes all created VNodes.\n *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\n */\n\t//vnode(vnode) { }\n\n\t/** Hook invoked after a component is mounted. */\n\t// afterMount(component) { }\n\n\t/** Hook invoked after the DOM is updated with a component's latest render. */\n\t// afterUpdate(component) { }\n\n\t/** Hook invoked immediately before a component is unmounted. */\n\t// beforeUnmount(component) { }\n};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a lightweight representation\n * of the structure of a DOM tree. This structure can be realized by recursively comparing it against\n * the current _actual_ DOM structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `
Hello!
`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string} nodeName\tAn element name. Ex: `div`, `a`, `span`, etc.\n * @param {Object} attributes\tAny attributes/props to set on the created element.\n * @param rest\t\t\tAdditional arguments are taken to be children to append. Can be infinitely nested Arrays.\n *\n * @public\n */\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {Object} obj\t\tObject onto which properties should be copied.\n * @param {Object} props\tObject from which to copy properties.\n * @returns obj\n * @private\n */\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n *\n * @param {Function} callback\n */\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {VNode} vnode\t\tThe virtual DOM element to clone\n * @param {Object} props\tAttributes/props to add when cloning\n * @param {VNode} rest\t\tAny additional arguments will be used as replacement children.\n */\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n/** Managed queue of dirty components to be re-rendered */\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p,\n\t list = items;\n\titems = [];\n\twhile (p = list.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\n/**\n * Check if two nodes are equivalent.\n *\n * @param {Node} node\t\t\tDOM Node to compare\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\n * @param {boolean} [hydrating=false]\tIf true, ignores component constructors when comparing.\n * @private\n */\nfunction isSameNodeType(node, vnode, hydrating) {\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return node.splitText !== undefined;\n }\n if (typeof vnode.nodeName === 'string') {\n return !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n }\n return hydrating || node._componentConstructor === vnode.nodeName;\n}\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n *\n * @param {Element} node\tA DOM Element to inspect the name of.\n * @param {String} nodeName\tUnnormalized name to compare against.\n */\nfunction isNamedNode(node, nodeName) {\n return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n *\n * @param {VNode} vnode\n * @returns {Object} props\n */\nfunction getNodeProps(vnode) {\n var props = extend({}, vnode.attributes);\n props.children = vnode.children;\n\n var defaultProps = vnode.nodeName.defaultProps;\n if (defaultProps !== undefined) {\n for (var i in defaultProps) {\n if (props[i] === undefined) {\n props[i] = defaultProps[i];\n }\n }\n }\n\n return props;\n}\n\n/** Create an element with the given nodeName.\n *\t@param {String} nodeName\n *\t@param {Boolean} [isSvg=false]\tIf `true`, creates an element within the SVG namespace.\n *\t@returns {Element} node\n */\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n/** Remove a child node from its parent if attached.\n *\t@param {Element} node\t\tThe node to remove\n */\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\n *\tIf `value` is `null`, the attribute/handler will be removed.\n *\t@param {Element} node\tAn element to mutate\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\n *\t@param {any} old\tThe last value that was set for this name/node pair\n *\t@param {any} value\tAn attribute value, such as a function to be used as an event handler\n *\t@param {Boolean} isSvg\tAre we currently diffing inside an svg?\n *\t@private\n */\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {\n\t\t// ignore\n\t} else if (name === 'ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\tsetProperty(node, name, value == null ? '' : value);\n\t\tif (value == null || value === false) node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/** Attempt to set a DOM property to the given value.\n *\tIE & FF throw for certain property-value combinations.\n */\nfunction setProperty(node, name, value) {\n\ttry {\n\t\tnode[name] = value;\n\t} catch (e) {}\n}\n\n/** Proxy an event to hooked event handlers\n *\t@private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\n/** Queue of components that have been mounted and are awaiting componentDidMount */\nvar mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nvar diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nvar isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nvar hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.pop()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\n *\t@returns {Element} dom\t\t\tThe created/mutated element\n *\t@private\n */\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\t// If the VNode represents a Component, perform a component diff:\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t} // if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\n *\t@param {Boolean} mountAll\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\t// attempt to find a node based on key matching\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// attempt to pluck a node of the same type from the existing children\n\t\t\telse if (!child && min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// morph the matched/found/created DOM child to match vchild (deep)\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// remove unused keyed children:\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\t// remove orphaned unkeyed children:\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\n/** Recursively recycle (or just unmount) a node and its descendants.\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\n */\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\t// if node is owned by a Component, unmount that component (ends up recursing back here)\n\t\tunmountComponent(component);\n\t} else {\n\t\t// If the node's VNode had a ref function, invoke it with null here.\n\t\t// (this is part of the React spec, and smart for unsetting references)\n\t\tif (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\n/** Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\n/** Apply differences in attributes from a VNode to the given DOM Element.\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\t// remove attributes no longer present on the vnode by setting them to undefined\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\t// add new & update changed attributes\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\n/** Retains a pool of Components for re-use, keyed on component name.\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\n *\t@private\n */\nvar components = {};\n\n/** Reclaim a component for later re-use by the recycler. */\nfunction collectComponent(component) {\n\tvar name = component.constructor.name;\n\t(components[name] || (components[name] = [])).push(component);\n}\n\n/** Create a component. Normalizes differences between PFC's and classful Components. */\nfunction createComponent(Ctor, props, context) {\n\tvar list = components[Ctor.name],\n\t inst;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\tif (list) {\n\t\tfor (var i = list.length; i--;) {\n\t\t\tif (list[i].constructor === Ctor) {\n\t\t\t\tinst.nextBase = list[i].nextBase;\n\t\t\t\tlist.splice(i, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn inst;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\n/** Set a component's `props` (generally derived from JSX attributes).\n *\t@param {Object} props\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\n */\nfunction setComponentProps(component, props, opts, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tif (component.__ref = props.ref) delete props.ref;\n\tif (component.__key = props.key) delete props.key;\n\n\tif (!component.base || mountAll) {\n\t\tif (component.componentWillMount) component.componentWillMount();\n\t} else if (component.componentWillReceiveProps) {\n\t\tcomponent.componentWillReceiveProps(props, context);\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (opts !== 0) {\n\t\tif (opts === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\n/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\n *\t@param {Component} component\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\n *\t@private\n */\nfunction renderComponent(component, opts, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t rendered,\n\t inst,\n\t cbase;\n\n\t// if updating\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (opts !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\t// context to pass to the child, can be updated via (grand-)parent component\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\t\t\t// set up high order component link\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\t// destroy high order component link\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || opts === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t} else if (!skip) {\n\t\t// Ensure that pending componentDidMount() hooks of child components\n\t\t// are called before the componentDidUpdate() hook in the parent.\n\t\t// Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n\t\t// flushMounts();\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, previousContext);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\tif (component._renderCallbacks != null) {\n\t\twhile (component._renderCallbacks.length) {\n\t\t\tcomponent._renderCallbacks.pop().call(component);\n\t\t}\n\t}\n\n\tif (!diffLevel && !isChild) flushMounts();\n}\n\n/** Apply the Component referenced by a VNode to the DOM.\n *\t@param {Element} dom\tThe DOM node to mutate\n *\t@param {VNode} vnode\tA Component-referencing VNode\n *\t@returns {Element} dom\tThe created/mutated element\n *\t@private\n */\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\t\t\t// passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/** Remove a component from the DOM and recycle it.\n *\t@param {Component} component\tThe Component instance to unmount\n *\t@private\n */\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\t// recursively tear down & recollect high-order component children:\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\tcollectComponent(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n\n/** Base Component class.\n *\tProvides `setState()` and `forceUpdate()`, which trigger rendering.\n *\t@public\n *\n *\t@example\n *\tclass MyFoo extends Component {\n *\t\trender(props, state) {\n *\t\t\treturn
;\n *\t\t}\n *\t}\n */\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.context = context;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.props = props;\n\n\t/** @public\n *\t@type {object}\n */\n\tthis.state = this.state || {};\n}\n\nextend(Component.prototype, {\n\n\t/** Returns a `boolean` indicating if the component should re-render when receiving the given `props` and `state`.\n *\t@param {object} nextProps\n *\t@param {object} nextState\n *\t@param {object} nextContext\n *\t@returns {Boolean} should the component re-render\n *\t@name shouldComponentUpdate\n *\t@function\n */\n\n\t/** Update component state by copying properties from `state` to `this.state`.\n *\t@param {object} state\t\tA hash of state properties to update with new values\n *\t@param {function} callback\tA function to be called once component state is updated\n */\n\tsetState: function setState(state, callback) {\n\t\tvar s = this.state;\n\t\tif (!this.prevState) this.prevState = extend({}, s);\n\t\textend(s, typeof state === 'function' ? state(s, this.props) : state);\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/** Immediately perform a synchronous re-render of the component.\n *\t@param {function} callback\t\tA function to be called after component is re-rendered.\n *\t@private\n */\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\n\n\t/** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\n *\t@param {object} state\t\tThe component's current state\n *\t@param {object} context\t\tContext object (if a parent component has provided context)\n *\t@returns VNode\n */\n\trender: function render() {}\n});\n\n/** Render JSX into a `parent` Element.\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\n *\t@param {Element} parent\t\tDOM element to render into\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\n *\t@public\n *\n *\t@example\n *\t// render a div into :\n *\trender(
hello!
, document.body);\n *\n *\t@example\n *\t// render a \"Thing\" component into #foo:\n *\tconst Thing = ({ name }) => { name };\n *\trender(, document.querySelector('#foo'));\n */\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport default preact;\nexport { h, h as createElement, cloneElement, Component, render, rerender, options };\n//# sourceMappingURL=preact.esm.js.map\n","import Backbone from 'backbone';\r\nimport { isUndefined } from 'underscore';\r\nimport editorEventHandler from '../../studioPlugins/editorEventHandler';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n type: 'text', // text, number, range, select\r\n label: '',\r\n name: '',\r\n min: '',\r\n max: '',\r\n unit: '',\r\n step: 1,\r\n value: '',\r\n target: '',\r\n default: '',\r\n className: '',\r\n visible: true,\r\n placeholder: '',\r\n changeProp: 0,\r\n unique: false,\r\n isValid: true,\r\n options: [],\r\n conditions: [],\r\n requires: []\r\n },\r\n\r\n initialize() {\r\n const target = this.get('target');\r\n const name = this.get('name');\r\n const changeProp = this.get('changeProp');\r\n\r\n if (target) {\r\n this.target = target;\r\n this.unset('target');\r\n const targetEvent = changeProp\r\n ? `change:${name}`\r\n : `change:attributes:${name}`;\r\n this.listenTo(target, targetEvent, this.targetUpdated);\r\n }\r\n },\r\n\r\n /**\r\n * Return all the propeties\r\n * @returns {Object}\r\n */\r\n props() {\r\n return this.attributes;\r\n },\r\n\r\n targetUpdated() {\r\n const value = this.getTargetValue();\r\n this.set({ value }, { fromTarget: 1 });\r\n },\r\n\r\n getTargetValue() {\r\n const name = this.get('name');\r\n const target = this.target;\r\n let value;\r\n\r\n if (this.get('changeProp')) {\r\n value = target.get(name);\r\n } else {\r\n value = target.getAttributes()[name];\r\n }\r\n\r\n return !isUndefined(value) ? value : '';\r\n },\r\n\r\n setTargetValue(value, opts = {}) {\r\n const target = this.target;\r\n const name = this.get('name');\r\n if (isUndefined(value)) return;\r\n if (this.get('changeProp')) {\r\n target.set(name, value, opts);\r\n } else {\r\n const attrs = { ...target.get('attributes') };\r\n attrs[name] = value;\r\n target.set('attributes', attrs, opts);\r\n this.validateTrait();\r\n this.collection.isValid() && this.specialCharacterTest(value)\r\n ? $('#gjs').removeClass('restrict')\r\n : $('#gjs').addClass('restrict');\r\n }\r\n },\r\n\r\n specialCharacterTest(value) {\r\n return !/[$&+,:;=\\\\\\?@#|\\/'<>.^*()%!-]/g.test(value);\r\n },\r\n\r\n setValueFromInput(value, final = 1, opts = {}) {\r\n const toSet = { value };\r\n this.set(toSet, { ...opts, avoidStore: 1 });\r\n\r\n // Have to trigger the change\r\n if (final) {\r\n this.set('value', '', opts);\r\n this.set(toSet, opts);\r\n }\r\n },\r\n\r\n /**\r\n * Get the initial value of the trait\r\n * @return {string}\r\n */\r\n getInitValue() {\r\n const target = this.target;\r\n const name = this.get('name');\r\n let value;\r\n\r\n if (target) {\r\n const attrs = target.get('attributes');\r\n value = this.get('changeProp') ? target.get(name) : attrs[name];\r\n }\r\n\r\n return value || this.get('value') || this.get('default');\r\n },\r\n\r\n validateTrait() {\r\n var value = this.get('value');\r\n var requires = this.get('requires');\r\n if (value && requires.length) {\r\n this.collection.models.forEach(function(model) {\r\n if (requires.indexOf(model.get('name')) > -1) {\r\n model.get('value')\r\n ? model.validateUnique()\r\n : model.set('isValid', false);\r\n }\r\n });\r\n } else if (requires.length) {\r\n /// if value for a trait is false then dependent traits are valid.\r\n this.set('isValid', true);\r\n this.collection.models.forEach(function(model) {\r\n if (requires.indexOf(model.get('name')) > -1) {\r\n model.set('isValid', true);\r\n }\r\n });\r\n } else {\r\n this.set('isValid', true);\r\n this.collection.validateTraitsWithDependency();\r\n }\r\n },\r\n\r\n validateUnique() {\r\n if (this.get('unique')) {\r\n let name = this.get('name');\r\n let value = this.get('value');\r\n let blocksFound = $(editor.getHtml()).find(`[${name}=\"${value}\"]`).length;\r\n blocksFound > 1 ? this.set('isValid', false) : this.set('isValid', true);\r\n } else {\r\n this.set('isValid', true);\r\n }\r\n },\r\n\r\n executeCondition() {\r\n const conditions = this.get('conditions');\r\n conditions.forEach(function(con) {\r\n var result = this.evaluateCondition(con.condition);\r\n this.performOperation(con[result], con.target);\r\n }, this);\r\n },\r\n\r\n evaluateCondition(con) {\r\n var cond = con.split(' ');\r\n var op = cond[0];\r\n var value = cond[1] || '';\r\n switch (op) {\r\n case '$eq':\r\n return this.get('value').toString() == value;\r\n break;\r\n default:\r\n return false;\r\n break;\r\n }\r\n },\r\n\r\n performOperation(result, target) {\r\n if (result) {\r\n switch (result.op) {\r\n case 'set':\r\n var value = result.value === false ? false : result.value || '';\r\n this.collection.models.forEach(function(model) {\r\n if (target.indexOf(model.get('name')) > -1) {\r\n model.set('value', value, { fromCondition: 1 });\r\n }\r\n });\r\n break;\r\n case 'show':\r\n this.collection.models.forEach(function(model) {\r\n if (target.indexOf(model.get('name')) > -1) {\r\n model.set('visible', true);\r\n }\r\n });\r\n break;\r\n case 'hide':\r\n this.collection.models.forEach(function(model) {\r\n if (target.indexOf(model.get('name')) > -1) {\r\n model.set('visible', false);\r\n }\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isString, isArray } from 'underscore';\r\nimport Trait from './Trait';\r\nimport TraitFactory from './TraitFactory';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Trait,\r\n\r\n initialize(coll, options = {}) {\r\n this.em = options.em || '';\r\n this.listenTo(this, 'add', this.handleAdd);\r\n this.listenTo(this, 'reset', this.handleReset);\r\n },\r\n\r\n handleReset(coll, { previousModels = [] } = {}) {\r\n previousModels.forEach(model => model.trigger('remove'));\r\n },\r\n\r\n handleAdd(model) {\r\n const target = this.target;\r\n\r\n if (target) {\r\n model.target = target;\r\n }\r\n },\r\n\r\n setTarget(target) {\r\n this.target = target;\r\n },\r\n\r\n validateTraitsWithDependency() {\r\n this.forEach(function(model) {\r\n if (model.get('requires').length) {\r\n model.validateTrait();\r\n }\r\n });\r\n this.isValid()\r\n ? $('#gjs').removeClass('restrict')\r\n : $('#gjs').addClass('restrict');\r\n },\r\n\r\n isValid() {\r\n var output = true;\r\n this.forEach(function(model) {\r\n if (model.get('isValid') == false) {\r\n output = false;\r\n }\r\n });\r\n return output;\r\n },\r\n\r\n add(models, opt) {\r\n const em = this.em;\r\n\r\n // Use TraitFactory if necessary\r\n if (isString(models) || isArray(models)) {\r\n const tm = em && em.get && em.get('TraitManager');\r\n const tmOpts = tm && tm.getConfig();\r\n const tf = TraitFactory(tmOpts);\r\n\r\n if (isString(models)) {\r\n models = [models];\r\n }\r\n\r\n for (var i = 0, len = models.length; i < len; i++) {\r\n const str = models[i];\r\n const model = isString(str) ? tf.build(str)[0] : str;\r\n model.target = this.target;\r\n models[i] = model;\r\n }\r\n }\r\n\r\n return Backbone.Collection.prototype.add.apply(this, [models, opt]);\r\n }\r\n});\r\n","export default (config = {}) => ({\r\n /**\r\n * Build props object by their name\r\n * @param {Array|string} props Array of properties name\r\n * @return {Array}\r\n */\r\n build(props) {\r\n var objs = [];\r\n\r\n if (typeof props === 'string') props = [props];\r\n\r\n for (var i = 0; i < props.length; i++) {\r\n var obj = {};\r\n var prop = props[i];\r\n obj.name = prop;\r\n\r\n // Define type\r\n switch (prop) {\r\n case 'target':\r\n obj.type = 'select';\r\n break;\r\n }\r\n\r\n // Define placeholder\r\n switch (prop) {\r\n case 'title':\r\n case 'alt':\r\n case 'id':\r\n obj.placeholder = config.labelPlhText;\r\n break;\r\n case 'href':\r\n obj.placeholder = config.labelPlhHref;\r\n break;\r\n }\r\n\r\n // Define options\r\n switch (prop) {\r\n case 'target':\r\n obj.options = config.optionsTarget;\r\n break;\r\n }\r\n\r\n objs.push(obj);\r\n }\r\n\r\n return objs;\r\n }\r\n});\r\n","import {\r\n isUndefined,\r\n isFunction,\r\n isObject,\r\n isArray,\r\n isEmpty,\r\n isBoolean,\r\n has,\r\n isString,\r\n forEach,\r\n result,\r\n keys\r\n} from 'underscore';\r\nimport { shallowDiff } from 'utils/mixins';\r\nimport Styleable from 'domain_abstract/model/Styleable';\r\nimport Backbone from 'backbone';\r\nimport Components from './Components';\r\nimport Selector from 'selector_manager/model/Selector';\r\nimport Selectors from 'selector_manager/model/Selectors';\r\nimport Traits from 'trait_manager/model/Traits';\r\nimport customtrait from './customtraits';\r\n\r\nconst componentList = {};\r\nlet componentIndex = 0;\r\n\r\nconst escapeRegExp = str => {\r\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\r\n};\r\n\r\nconst avoidInline = em => em && em.getConfig('avoidInlineStyle');\r\n\r\n/**\r\n * The Component object represents a single node of our template structure, so when you update its properties the changes are\r\n * immediately reflected on the canvas and in the code to export (indeed, when you ask to export the code we just go through all\r\n * the tree of nodes).\r\n * An example on how to update properties:\r\n * ```js\r\n * component.set({\r\n * tagName: 'span',\r\n * attributes: { ... },\r\n * removable: false,\r\n * });\r\n * component.get('tagName');\r\n * // -> 'span'\r\n * ```\r\n *\r\n * @typedef Component\r\n * @property {String} [type=''] Component type, eg. `text`, `image`, `video`, etc.\r\n * @property {String} [tagName='div'] HTML tag of the component, eg. `span`. Default: `div`\r\n * @property {Object} [attributes={}] Key-value object of the component's attributes, eg. `{ title: 'Hello' }` Default: `{}`\r\n * @property {String} [name=''] Name of the component. Will be used, for example, in Layers and badges\r\n * @property {Boolean} [removable=true] When `true` the component is removable from the canvas, default: `true`\r\n * @property {Boolean|String} [draggable=true] Indicates if it's possible to drag the component inside others.\r\n * You can also specify a query string to indentify elements,\r\n * eg. `'.some-class[title=Hello], [data-gjs-type=column]'` means you can drag the component only inside elements\r\n * containing `some-class` class and `Hello` title, and `column` components. Default: `true`\r\n * @property {Boolean|String} [droppable=true] Indicates if it's possible to drop other components inside. You can use\r\n * a query string as with `draggable`. Default: `true`\r\n * @property {Boolean} [badgable=true] Set to false if you don't want to see the badge (with the name) over the component. Default: `true`\r\n * @property {Boolean|Array} [stylable=true] True if it's possible to style the component.\r\n * You can also indicate an array of CSS properties which is possible to style, eg. `['color', 'width']`, all other properties\r\n * will be hidden from the style manager. Default: `true`\r\n * @property {Array} [stylable-require=[]] Indicate an array of style properties to show up which has been marked as `toRequire`. Default: `[]`\r\n * @property {Array} [unstylable=[]] Indicate an array of style properties which should be hidden from the style manager. Default: `[]`\r\n * @property {Array} [style-signature=''] This option comes handy when you need to remove or export strictly component-specific rules. Be default, if this option is not empty, the editor will remove rules when there are no components, of that type, in the canvas. Eg. '['.navbar', '[navbar-']'. Default: `''`\r\n * @property {Boolean} [highlightable=true] It can be highlighted with 'dotted' borders if true. Default: `true`\r\n * @property {Boolean} [copyable=true] True if it's possible to clone the component. Default: `true`\r\n * @property {Boolean} [resizable=false] Indicates if it's possible to resize the component. It's also possible to pass an object as [options for the Resizer](https://github.com/artf/grapesjs/blob/master/src/utils/Resizer.js). Default: `false`\r\n * @property {Boolean} [editable=false] Allow to edit the content of the component (used on Text components). Default: `false`\r\n * @property {Boolean} [layerable=true] Set to `false` if you need to hide the component inside Layers. Default: `true`\r\n * @property {Boolean} [selectable=true] Allow component to be selected when clicked. Default: `true`\r\n * @property {Boolean} [hoverable=true] Shows a highlight outline when hovering on the element if `true`. Default: `true`\r\n * @property {Boolean} [void=false] This property is used by the HTML exporter as void elements don't have closing tags, eg. `
`, `
`, etc. Default: `false`\r\n * @property {String} [content=''] Content of the component (not escaped) which will be appended before children rendering. Default: `''`\r\n * @property {String} [icon=''] Component's icon, this string will be inserted before the name (in Layers and badge), eg. it can be an HTML string ''. Default: `''`\r\n * @property {String|Function} [script=''] Component's javascript. More about it [here](/modules/Components-js.html). Default: `''`\r\n * @property {String|Function} [script-export=''] You can specify javascript available only in export functions (eg. when you get the HTML).\r\n * If this property is defined it will overwrite the `script` one (in export functions). Default: `''`\r\n * @property {Array} [traits=''] Component's traits. More about it [here](/modules/Traits.html). Default: `['id', 'title']`\r\n * @property {Array} [propagate=[]] Indicates an array of properties which will be inhereted by all NEW appended children.\r\n * For example if you create a component likes this: `{ removable: false, draggable: false, propagate: ['removable', 'draggable'] }`\r\n * and append some new component inside, the new added component will get the exact same properties indicated in the `propagate` array (and the `propagate` property itself). Default: `[]`\r\n * @property {Array} [toolbar=null] Set an array of items to show up inside the toolbar when the component is selected (move, clone, delete).\r\n * Eg. `toolbar: [ { attributes: {class: 'fa fa-arrows'}, command: 'tlb-move' }, ... ]`.\r\n * By default, when `toolbar` property is falsy the editor will add automatically commands like `move`, `delete`, etc. based on its properties.\r\n * @property {Collection} [components=null] Children components. Default: `null`\r\n */\r\nconst Component = Backbone.Model.extend(Styleable).extend(\r\n {\r\n defaults: {\r\n tagName: 'div',\r\n type: '',\r\n name: '',\r\n removable: true,\r\n draggable: true,\r\n droppable: true,\r\n badgable: true,\r\n stylable: true,\r\n 'stylable-require': '',\r\n 'style-signature': '',\r\n unstylable: '',\r\n highlightable: true,\r\n copyable: true,\r\n resizable: false,\r\n editable: false,\r\n layerable: true,\r\n selectable: true,\r\n hoverable: true,\r\n void: false,\r\n state: '', // Indicates if the component is in some CSS state like ':hover', ':active', etc.\r\n status: '', // State, eg. 'selected'\r\n content: '',\r\n icon: '',\r\n style: '', // Component related style\r\n classes: '', // Array of classes\r\n script: '',\r\n isStateRecording: false,\r\n recordingStateName: '',\r\n customStates: {},\r\n recordedState: {},\r\n 'script-export': '',\r\n attributes: '',\r\n traits: [\r\n customtrait.actionable,\r\n customtrait.eventName,\r\n { ...customtrait.bg_property, ...{ className: 'topDivider' } },\r\n customtrait.bg_title\r\n ],\r\n propagate: '',\r\n dmode: '',\r\n toolbar: null\r\n },\r\n\r\n /**\r\n * Hook method, called once the model is created\r\n */\r\n init() {},\r\n\r\n /**\r\n * Hook method, called when the model has been updated (eg. updated some model's property)\r\n * @param {String} property Property name, if triggered after some property update\r\n * @param {*} value Property value, if triggered after some property update\r\n * @param {*} previous Property previous value, if triggered after some property update\r\n */\r\n updated(property, value, previous) {},\r\n\r\n /**\r\n * Hook method, called once the model has been removed\r\n */\r\n removed() {},\r\n\r\n initialize(props = {}, opt = {}) {\r\n const em = opt.em;\r\n\r\n // Propagate properties from parent if indicated\r\n const parent = this.parent();\r\n const parentAttr = parent && parent.attributes;\r\n\r\n if (parentAttr && parentAttr.propagate) {\r\n let newAttr = {};\r\n const toPropagate = parentAttr.propagate;\r\n toPropagate.forEach(prop => (newAttr[prop] = parent.get(prop)));\r\n newAttr.propagate = toPropagate;\r\n newAttr = { ...newAttr, ...props };\r\n this.set(newAttr);\r\n }\r\n\r\n const propagate = this.get('propagate');\r\n propagate &&\r\n this.set('propagate', isArray(propagate) ? propagate : [propagate]);\r\n\r\n // Check void elements\r\n if (\r\n opt &&\r\n opt.config &&\r\n opt.config.voidElements.indexOf(this.get('tagName')) >= 0\r\n ) {\r\n this.set('void', true);\r\n }\r\n\r\n opt.em = em;\r\n this.opt = opt;\r\n this.em = em;\r\n this.config = opt.config || {};\r\n this.set('attributes', {\r\n ...(this.defaults.attributes || {}),\r\n ...(this.get('attributes') || {})\r\n });\r\n this.ccid = Component.createId(this);\r\n this.initClasses();\r\n this.initTraits();\r\n this.initComponents();\r\n this.initToolbar();\r\n this.listenTo(this, 'change:script', this.scriptUpdated);\r\n this.listenTo(this, 'change:tagName', this.tagUpdated);\r\n this.listenTo(this, 'change:attributes', this.attrUpdated);\r\n this.listenTo(this, 'change:attributes:id', this._idUpdated);\r\n this.set('status', '');\r\n\r\n // Register global updates for collection properties\r\n ['classes', 'traits', 'components'].forEach(name => {\r\n const events = `add remove ${name !== 'components' ? 'change' : ''}`;\r\n this.listenTo(this.get(name), events.trim(), (...args) =>\r\n this.emitUpdate(name, ...args)\r\n );\r\n });\r\n\r\n if (!opt.temporary) {\r\n this.init();\r\n em && em.trigger('component:create', this);\r\n }\r\n },\r\n\r\n /**\r\n * Check component's type\r\n * @param {string} type Component type\r\n * @return {Boolean}\r\n * @example\r\n * component.is('image')\r\n * // -> false\r\n */\r\n is(type) {\r\n return !!(this.get('type') == type);\r\n },\r\n\r\n /**\r\n * Return all the propeties\r\n * @returns {Object}\r\n */\r\n props() {\r\n return this.attributes;\r\n },\r\n\r\n /**\r\n * Get the index of the component in the parent collection.\r\n * @return {Number}\r\n */\r\n index() {\r\n const { collection } = this;\r\n return collection && collection.indexOf(this);\r\n },\r\n\r\n /**\r\n * Change the drag mode of the component.\r\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\r\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\r\n * @returns {this}\r\n */\r\n setDragMode(value) {\r\n return this.set('dmode', value);\r\n },\r\n\r\n /**\r\n * Find inner components by query string.\r\n * **ATTENTION**: this method works only with already rendered component\r\n * @param {String} query Query string\r\n * @return {Array} Array of components\r\n * @example\r\n * component.find('div > .class');\r\n * // -> [Component, Component, ...]\r\n */\r\n find(query) {\r\n const result = [];\r\n\r\n this.view.$el.find(query).each((el, i, $els) => {\r\n const $el = $els.eq(i);\r\n const model = $el.data('model');\r\n model && result.push(model);\r\n });\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Find all inner components by component id.\r\n * The advantage of this method over `find` is that you can use it\r\n * also before rendering the component\r\n * @param {String} id Component id\r\n * @returns {Array}\r\n * @example\r\n * const allImages = component.findType('image');\r\n * console.log(allImages[0]) // prints the first found component\r\n */\r\n findType(id) {\r\n const result = [];\r\n const find = components =>\r\n components.forEach(item => {\r\n item.is(id) && result.push(item);\r\n find(item.components());\r\n });\r\n find(this.components());\r\n return result;\r\n },\r\n\r\n /**\r\n * Find the closest parent component by query string.\r\n * **ATTENTION**: this method works only with already rendered component\r\n * @param {string} query Query string\r\n * @return {Component}\r\n * @example\r\n * component.closest('div.some-class');\r\n * // -> Component\r\n */\r\n closest(query) {\r\n const result = this.view.$el.closest(query);\r\n return result.length && result.data('model');\r\n },\r\n\r\n /**\r\n * Once the tag is updated I have to remove the node and replace it\r\n * @private\r\n */\r\n tagUpdated() {\r\n const coll = this.collection;\r\n const at = coll.indexOf(this);\r\n coll.remove(this);\r\n coll.add(this, { at });\r\n },\r\n\r\n /**\r\n * Replace a component with another one\r\n * @param {String|Component} el Component or HTML string\r\n * @return {Component|Array} New added component/s\r\n * @example\r\n * component.replaceWith('
Some new content
');\r\n * // -> Component\r\n */\r\n replaceWith(el) {\r\n const coll = this.collection;\r\n const at = coll.indexOf(this);\r\n coll.remove(this);\r\n return coll.add(el, { at });\r\n },\r\n\r\n /**\r\n * Emit changes for each updated attribute\r\n * @private\r\n */\r\n attrUpdated(m, v, opts = {}) {\r\n const attrs = this.get('attributes');\r\n\r\n // Handle classes\r\n const classes = attrs.class;\r\n classes && this.setClass(classes);\r\n delete attrs.class;\r\n\r\n // Handle style\r\n const style = attrs.style;\r\n style && this.setStyle(style);\r\n delete attrs.style;\r\n\r\n const attrPrev = { ...this.previous('attributes') };\r\n const diff = shallowDiff(attrPrev, this.get('attributes'));\r\n keys(diff).forEach(pr =>\r\n this.trigger(`change:attributes:${pr}`, this, diff[pr], opts)\r\n );\r\n },\r\n\r\n /**\r\n * Update attributes of the component\r\n * @param {Object} attrs Key value attributes\r\n * @return {this}\r\n * @example\r\n * component.setAttributes({ id: 'test', 'data-key': 'value' });\r\n */\r\n setAttributes(attrs, opts = {}) {\r\n this.set('attributes', { ...attrs }, opts);\r\n return this;\r\n },\r\n\r\n /**\r\n * Add attributes to the component\r\n * @param {Object} attrs Key value attributes\r\n * @return {this}\r\n * @example\r\n * component.addAttributes({ 'data-key': 'value' });\r\n */\r\n addAttributes(attrs) {\r\n const newAttrs = { ...this.getAttributes(), ...attrs };\r\n this.setAttributes(newAttrs);\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the style of the component\r\n * @return {Object}\r\n */\r\n getStyle() {\r\n const em = this.em;\r\n\r\n if (em && em.getConfig('avoidInlineStyle')) {\r\n const state = this.get('state');\r\n const cc = em.get('CssComposer');\r\n const rule = cc.getIdRule(this.getId(), { state });\r\n this.rule = rule;\r\n\r\n if (rule) {\r\n return rule.getStyle();\r\n }\r\n }\r\n\r\n return Styleable.getStyle.call(this);\r\n },\r\n\r\n /**\r\n * Set the style on the component\r\n * @param {Object} prop Key value style object\r\n * @return {Object}\r\n * @example\r\n * component.setStyle({ color: 'red' });\r\n */\r\n setStyle(prop = {}, opts = {}) {\r\n const em = this.em;\r\n const { opt } = this;\r\n\r\n if (em && em.getConfig('avoidInlineStyle') && !opt.temporary) {\r\n const style = this.get('style') || {};\r\n prop = isString(prop) ? this.parseStyle(prop) : prop;\r\n prop = { ...prop, ...style };\r\n const state = this.get('state');\r\n const cc = em.get('CssComposer');\r\n const propOrig = this.getStyle();\r\n this.rule = cc.setIdRule(this.getId(), prop, { ...opts, state });\r\n const diff = shallowDiff(propOrig, prop);\r\n this.set('style', {}, { silent: 1 });\r\n keys(diff).forEach(pr => this.trigger(`change:style:${pr}`));\r\n } else {\r\n prop = Styleable.setStyle.apply(this, arguments);\r\n }\r\n\r\n return prop;\r\n },\r\n\r\n /**\r\n * Return all component's attributes\r\n * @return {Object}\r\n */\r\n getAttributes() {\r\n const { em } = this;\r\n const classes = [];\r\n const attributes = { ...this.get('attributes') };\r\n const sm = em && em.get('SelectorManager');\r\n const id = this.getId();\r\n\r\n // Add classes\r\n this.get('classes').forEach(cls =>\r\n classes.push(isString(cls) ? cls : cls.get('name'))\r\n );\r\n classes.length && (attributes.class = classes.join(' '));\r\n\r\n // Check if we need an ID on the component\r\n if (!has(attributes, 'id')) {\r\n let hasStyle;\r\n\r\n // If we don't rely on inline styling we have to check\r\n // for the ID selector\r\n if (avoidInline(em)) {\r\n hasStyle = sm && sm.get(id, sm.Selector.TYPE_ID);\r\n } else if (!isEmpty(this.getStyle())) {\r\n hasStyle = 1;\r\n }\r\n if (hasStyle || !isEmpty(this.get('customStates'))) {\r\n attributes.id = this.getId();\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n\r\n /**\r\n * Add classes\r\n * @param {Array|String} classes Array or string of classes\r\n * @return {Array} Array of added selectors\r\n * @example\r\n * model.addClass('class1');\r\n * model.addClass('class1 class2');\r\n * model.addClass(['class1', 'class2']);\r\n * // -> [SelectorObject, ...]\r\n */\r\n addClass(classes) {\r\n const added = this.em.get('SelectorManager').addClass(classes);\r\n return this.get('classes').add(added);\r\n },\r\n\r\n /**\r\n * Set classes (resets current collection)\r\n * @param {Array|String} classes Array or string of classes\r\n * @return {Array} Array of added selectors\r\n * @example\r\n * model.setClass('class1');\r\n * model.setClass('class1 class2');\r\n * model.setClass(['class1', 'class2']);\r\n * // -> [SelectorObject, ...]\r\n */\r\n setClass(classes) {\r\n this.get('classes').reset();\r\n return this.addClass(classes);\r\n },\r\n\r\n /**\r\n * Remove classes\r\n * @param {Array|String} classes Array or string of classes\r\n * @return {Array} Array of removed selectors\r\n * @example\r\n * model.removeClass('class1');\r\n * model.removeClass('class1 class2');\r\n * model.removeClass(['class1', 'class2']);\r\n * // -> [SelectorObject, ...]\r\n */\r\n removeClass(classes) {\r\n const removed = [];\r\n classes = isArray(classes) ? classes : [classes];\r\n const selectors = this.get('classes');\r\n const type = Selector.TYPE_CLASS;\r\n\r\n classes.forEach(classe => {\r\n const classes = classe.split(' ');\r\n classes.forEach(name => {\r\n const selector = selectors.where({ name, type })[0];\r\n selector && removed.push(selectors.remove(selector));\r\n });\r\n });\r\n\r\n return removed;\r\n },\r\n\r\n /**\r\n * Returns component's classes as an array of strings\r\n * @return {Array}\r\n */\r\n getClasses() {\r\n const attr = this.getAttributes();\r\n const classStr = attr.class;\r\n return classStr ? classStr.split(' ') : [];\r\n },\r\n\r\n getClassesForStates() {\r\n const attr = this.getAttributes();\r\n const classStr = attr.class;\r\n let classArr = classStr ? classStr.split(' ') : [];\r\n classArr = classArr.filter(function(name) {\r\n return editor.Config.privateClasses.indexOf('.' + name) == -1;\r\n });\r\n return classArr;\r\n },\r\n\r\n initClasses() {\r\n const event = 'change:classes';\r\n const toListen = [this, event, this.initClasses];\r\n const cls = this.get('classes') || [];\r\n const clsArr = isString(cls) ? cls.split(' ') : cls;\r\n this.stopListening(...toListen);\r\n const classes = this.normalizeClasses(clsArr);\r\n const selectors = new Selectors([]);\r\n this.set('classes', selectors);\r\n selectors.add(classes);\r\n this.listenTo(...toListen);\r\n return this;\r\n },\r\n\r\n initComponents() {\r\n const event = 'change:components';\r\n const toListen = [this, event, this.initComponents];\r\n this.stopListening(...toListen);\r\n // Have to add components after the init, otherwise the parent\r\n // is not visible\r\n const comps = new Components(null, this.opt);\r\n comps.parent = this;\r\n const components = this.get('components');\r\n const addChild = !this.opt.avoidChildren;\r\n this.set('components', comps);\r\n addChild &&\r\n comps.add(isFunction(components) ? components(this) : components);\r\n this.listenTo(...toListen);\r\n return this;\r\n },\r\n\r\n initTraits(changed) {\r\n const { em } = this;\r\n const event = 'change:traits';\r\n const toListen = [this, event, this.initTraits];\r\n this.stopListening(...toListen);\r\n this.loadTraits();\r\n const attrs = { ...this.get('attributes') };\r\n const traits = this.get('traits');\r\n traits.each(trait => {\r\n if (!trait.get('changeProp')) {\r\n const name = trait.get('name');\r\n const value = trait.getInitValue();\r\n if (name && value) attrs[name] = value;\r\n }\r\n });\r\n traits.length && this.set('attributes', attrs);\r\n this.listenTo(...toListen);\r\n changed && em && em.trigger('component:toggled');\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new component children\r\n * @param {Component|String} components Component to add\r\n * @param {Object} [opts={}] Options, same as in `model.add()`(from backbone)\r\n * @return {Array} Array of appended components\r\n * @example\r\n * someComponent.get('components').length // -> 0\r\n * const videoComponent = someComponent.append('
')[0];\r\n * // This will add 2 components (`video` and `div`) to your `someComponent`\r\n * someComponent.get('components').length // -> 2\r\n * // You can pass components directly\r\n * otherComponent.append(otherComponent2);\r\n * otherComponent.append([otherComponent3, otherComponent4]);\r\n */\r\n append(components, opts = {}) {\r\n const result = this.components().add(components, opts);\r\n return isArray(result) ? result : [result];\r\n },\r\n\r\n /**\r\n * Set new collection if `components` are provided, otherwise the\r\n * current collection is returned\r\n * @param {Component|String} [components] Components to set\r\n * @return {Collection|Array}\r\n * @example\r\n * // Set new collection\r\n * component.components('
');\r\n * // Get current collection\r\n * const collection = component.components();\r\n * console.log(collection.length);\r\n * // -> 2\r\n */\r\n components(components) {\r\n const coll = this.get('components');\r\n\r\n if (isUndefined(components)) {\r\n return coll;\r\n } else {\r\n coll.reset();\r\n return components && this.append(components);\r\n }\r\n },\r\n\r\n /**\r\n * Get the parent component, if exists\r\n * @return {Component}\r\n * @example\r\n * component.parent();\r\n * // -> Component\r\n */\r\n parent() {\r\n const coll = this.collection;\r\n return coll && coll.parent;\r\n },\r\n\r\n /**\r\n * Script updated\r\n * @private\r\n */\r\n scriptUpdated() {\r\n this.set('scriptUpdated', 1);\r\n },\r\n\r\n /**\r\n * Init toolbar\r\n * @private\r\n */\r\n initToolbar() {\r\n const { em } = this;\r\n const model = this;\r\n const ppfx = (em && em.getConfig('stylePrefix')) || '';\r\n\r\n if (!model.get('toolbar')) {\r\n var tb = [];\r\n if (model.collection) {\r\n tb.push({\r\n attributes: { class: 'fa fa-arrow-up' },\r\n command: ed => ed.runCommand('core:component-exit', { force: 1 })\r\n });\r\n }\r\n if (model.get('draggable')) {\r\n tb.push({\r\n attributes: {\r\n class: `fa fa-arrows ${ppfx}no-touch-actions`,\r\n draggable: true\r\n },\r\n //events: hasDnd(this.em) ? { dragstart: 'execCommand' } : '',\r\n command: 'tlb-move'\r\n });\r\n }\r\n if (model.get('copyable')) {\r\n tb.push({\r\n attributes: { class: 'fa fa-clone' },\r\n command: 'tlb-clone'\r\n });\r\n }\r\n if (model.get('removable')) {\r\n tb.push({\r\n attributes: { class: 'fa fa-trash-o' },\r\n command: 'tlb-delete'\r\n });\r\n }\r\n model.set('toolbar', tb);\r\n }\r\n },\r\n\r\n /**\r\n * Load traits\r\n * @param {Array} traits\r\n * @private\r\n */\r\n loadTraits(traits, opts = {}) {\r\n traits = traits || this.get('traits');\r\n traits = isFunction(traits) ? traits(this) : traits;\r\n\r\n if (!(traits instanceof Traits)) {\r\n const trt = new Traits([], this.opt);\r\n trt.setTarget(this);\r\n\r\n if (traits.length) {\r\n traits.forEach(tr => tr.attributes && delete tr.attributes.value);\r\n trt.add(traits);\r\n }\r\n\r\n this.set('traits', trt, opts);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the trait by id/name\r\n * @param {String} id The `id` or `name` of the trait\r\n * @return {Trait} Trait model\r\n * @example\r\n * const traitTitle = component.getTrait('title');\r\n * traitTitle && traitTitle.set('label', 'New label');\r\n */\r\n getTrait(id) {\r\n return this.get('traits').filter(trait => {\r\n return trait.get('id') === id || trait.get('name') === id;\r\n })[0];\r\n },\r\n\r\n /**\r\n * Update a trait\r\n * @param {String} id The `id` or `name` of the trait\r\n * @param {Object} props Object with the props to update\r\n * @return {this}\r\n * @example\r\n * component.updateTrait('title', {\r\n * type: 'select',\r\n * options: [ 'Option 1', 'Option 2' ],\r\n * });\r\n */\r\n updateTrait(id, props) {\r\n const { em } = this;\r\n const trait = this.getTrait(id);\r\n trait && trait.set(props);\r\n em && em.trigger('component:toggled');\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the trait position index by id/name. Useful in case you want to\r\n * replace some trait, at runtime, with something else.\r\n * @param {String} id The `id` or `name` of the trait\r\n * @return {Number} Index position of the current trait\r\n * @example\r\n * const traitTitle = component.getTraitIndex('title');\r\n * console.log(traitTitle); // 1\r\n */\r\n getTraitIndex(id) {\r\n const trait = this.getTrait(id);\r\n return trait ? this.get('traits').indexOf(trait) : trait;\r\n },\r\n\r\n /**\r\n * Remove trait/s by id/s.\r\n * @param {String|Array} id The `id`/`name` of the trait (or an array)\r\n * @return {Array} Array of removed traits\r\n * @example\r\n * component.removeTrait('title');\r\n * component.removeTrait(['title', 'id']);\r\n */\r\n removeTrait(id) {\r\n const { em } = this;\r\n const ids = isArray(id) ? id : [id];\r\n const toRemove = ids.map(id => this.getTrait(id));\r\n const removed = this.get('traits').remove(toRemove);\r\n em && em.trigger('component:toggled');\r\n return removed;\r\n },\r\n\r\n /**\r\n * Add trait/s by id/s.\r\n * @param {String|Object|Array} trait Trait to add (or an array of traits)\r\n * @param {Options} opts Options for the add\r\n * @return {Array} Array of added traits\r\n * @example\r\n * component.addTrait('title', { at: 1 }); // Add title trait (`at` option is the position index)\r\n * component.addTrait({\r\n * type: 'checkbox',\r\n * name: 'disabled',\r\n * });\r\n * component.addTrait(['title', {...}, ...]);\r\n */\r\n addTrait(trait, opts = {}) {\r\n const { em } = this;\r\n const added = this.get('traits').add(trait, opts);\r\n em && em.trigger('component:toggled');\r\n return added;\r\n },\r\n\r\n /**\r\n * Normalize input classes from array to array of objects\r\n * @param {Array} arr\r\n * @return {Array}\r\n * @private\r\n */\r\n normalizeClasses(arr) {\r\n var res = [];\r\n const em = this.em;\r\n\r\n if (!em) return;\r\n\r\n var clm = em.get('SelectorManager');\r\n if (!clm) return;\r\n\r\n arr.forEach(val => {\r\n var name = '';\r\n\r\n if (typeof val === 'string') name = val;\r\n else name = val.name;\r\n\r\n var model = clm.add(name);\r\n res.push(model);\r\n });\r\n return res;\r\n },\r\n /**\r\n * Override original clone method\r\n * @private\r\n */\r\n clone() {\r\n const em = this.em;\r\n const style = this.getStyle();\r\n const attr = { ...this.attributes };\r\n const opts = { ...this.opt };\r\n attr.attributes = { ...attr.attributes };\r\n delete attr.attributes.id;\r\n attr.components = [];\r\n attr.classes = [];\r\n attr.traits = [];\r\n\r\n this.get('components').each((md, i) => {\r\n attr.components[i] = md.clone();\r\n });\r\n this.get('traits').each((md, i) => {\r\n attr.traits[i] = md.clone();\r\n });\r\n this.get('classes').each((md, i) => {\r\n attr.classes[i] = md.get('name');\r\n });\r\n\r\n attr.status = '';\r\n attr.view = '';\r\n opts.collection = null;\r\n\r\n if (em && em.getConfig('avoidInlineStyle') && !isEmpty(style)) {\r\n attr.style = style;\r\n }\r\n\r\n const cloned = new this.constructor(attr, opts);\r\n const event = 'component:clone';\r\n em && em.trigger(event, cloned);\r\n this.trigger(event, cloned);\r\n\r\n return cloned;\r\n },\r\n\r\n /**\r\n * Get the name of the component\r\n * @return {String}\r\n * */\r\n getName() {\r\n let customName = this.get('name') || this.get('custom-name');\r\n let tag = this.get('tagName');\r\n tag = tag == 'div' ? 'box' : tag;\r\n let name = this.get('type') || tag;\r\n name = name.charAt(0).toUpperCase() + name.slice(1);\r\n return customName || name;\r\n },\r\n\r\n /**\r\n * Get the icon string\r\n * @return {String}\r\n */\r\n getIcon() {\r\n let icon = this.get('icon');\r\n return icon ? icon + ' ' : '';\r\n },\r\n\r\n /**\r\n * Return HTML string of the component\r\n * @param {Object} [opts={}] Options\r\n * @param {Object|Function} [opts.attributes=null] You can pass an object of custom attributes to replace\r\n * with the current one or you can even pass a function to generate attributes dynamically\r\n * @return {String} HTML string\r\n * @example\r\n * // Simple HTML return\r\n * component.set({ tagName: 'span' });\r\n * component.setAttributes({ title: 'Hello' });\r\n * component.toHTML();\r\n * // -> \r\n *\r\n * // Custom attributes\r\n * component.toHTML({ attributes: { 'data-test': 'Hello' } });\r\n * // -> \r\n *\r\n * // Custom dynamic attributes\r\n * component.toHTML({\r\n * attributes(component, attributes) {\r\n * if (component.get('tagName') == 'span') {\r\n * attributes.title = 'Custom attribute';\r\n * }\r\n * return attributes;\r\n * },\r\n * });\r\n * // -> \r\n */\r\n toHTML(opts = {}) {\r\n const model = this;\r\n const attrs = [];\r\n const classes = [];\r\n const tag = model.get('tagName');\r\n const sTag = model.get('void');\r\n const customAttr = opts.attributes;\r\n let attributes = this.getAttrToHTML();\r\n\r\n // Get custom attributes if requested\r\n if (customAttr) {\r\n if (isFunction(customAttr)) {\r\n attributes = customAttr(model, attributes) || {};\r\n } else if (isObject(customAttr)) {\r\n attributes = customAttr;\r\n }\r\n }\r\n\r\n for (let attr in attributes) {\r\n const val = attributes[attr];\r\n const value = isString(val) ? val.replace(/\"/g, '"') : val;\r\n\r\n if (!isUndefined(value)) {\r\n if (isBoolean(value)) {\r\n value && attrs.push(attr);\r\n } else {\r\n attrs.push(`${attr}=\"${value}\"`);\r\n }\r\n }\r\n }\r\n\r\n let attrString = attrs.length ? ` ${attrs.join(' ')}` : '';\r\n let code = `<${tag}${attrString}${sTag ? '/' : ''}>${model.get(\r\n 'content'\r\n )}`;\r\n model.get('components').each(comp => (code += comp.toHTML(opts)));\r\n !sTag && (code += ``);\r\n\r\n return code;\r\n },\r\n\r\n /**\r\n * Returns object of attributes for HTML\r\n * @return {Object}\r\n * @private\r\n */\r\n getAttrToHTML() {\r\n var attr = this.getAttributes();\r\n delete attr.style;\r\n return attr;\r\n },\r\n\r\n /**\r\n * Return a shallow copy of the model's attributes for JSON\r\n * stringification.\r\n * @return {Object}\r\n * @private\r\n */\r\n toJSON(...args) {\r\n const obj = Backbone.Model.prototype.toJSON.apply(this, args);\r\n obj.attributes = this.getAttributes();\r\n delete obj.attributes.class;\r\n delete obj.toolbar;\r\n delete obj.traits;\r\n\r\n if (this.em.getConfig('avoidDefaults')) {\r\n const defaults = result(this, 'defaults');\r\n\r\n forEach(defaults, (value, key) => {\r\n if (['type', 'content'].indexOf(key) === -1 && obj[key] === value) {\r\n delete obj[key];\r\n }\r\n });\r\n\r\n if (isEmpty(obj.type)) {\r\n delete obj.type;\r\n }\r\n\r\n forEach(['attributes', 'style'], prop => {\r\n if (isEmpty(defaults[prop]) && isEmpty(obj[prop])) {\r\n delete obj[prop];\r\n }\r\n });\r\n\r\n forEach(['classes', 'components'], prop => {\r\n if (isEmpty(defaults[prop]) && !obj[prop].length) {\r\n delete obj[prop];\r\n }\r\n });\r\n }\r\n\r\n return obj;\r\n },\r\n\r\n /**\r\n * Return the component id\r\n * @return {String}\r\n */\r\n getId() {\r\n let attrs = this.get('attributes') || {};\r\n return attrs.id || this.ccid || this.cid;\r\n },\r\n\r\n /**\r\n * Set new id on the component\r\n * @param {String} id\r\n * @return {this}\r\n */\r\n setId(id, opts) {\r\n const attrs = { ...this.get('attributes') };\r\n attrs.id = id;\r\n this.set('attributes', attrs, opts);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the DOM element of the component.\r\n * This works only if the component is already rendered\r\n * @return {HTMLElement}\r\n */\r\n getEl() {\r\n return this.view && this.view.el;\r\n },\r\n\r\n /**\r\n * Takes the css style json and convert it into css style string for State Manager.\r\n * @param {JSON} styles\r\n */\r\n setCssRule(styles) {\r\n const em = this.em;\r\n const cc = em.get('CssComposer');\r\n for (let selector in styles) {\r\n if (selector === 'isSelected') {\r\n cc.setRule(`.${selector} #${this.getId()}`, styles[selector]);\r\n cc.setRule(`.${selector}#${this.getId()}`, styles[selector]);\r\n } else {\r\n cc.setRule(`.${selector}#${this.getId()}`, styles[selector]);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * resets the model for recording state.\r\n */\r\n resetCustomState() {\r\n this.set({\r\n isStateRecording: false,\r\n recordingStateName: '',\r\n recordedState: {}\r\n });\r\n },\r\n\r\n /**\r\n * Get the View of the component.\r\n * This works only if the component is already rendered\r\n * @return {ComponentView}\r\n */\r\n getView() {\r\n return this.view;\r\n },\r\n\r\n /**\r\n * Return script in string format, cleans 'function() {..' from scripts\r\n * if it's a function\r\n * @param {string|Function} script\r\n * @return {string}\r\n * @private\r\n */\r\n getScriptString(script) {\r\n var scr = script || this.get('script');\r\n\r\n if (!scr) {\r\n return scr;\r\n }\r\n\r\n // Need to convert script functions to strings\r\n if (typeof scr == 'function') {\r\n var scrStr = scr.toString().trim();\r\n scrStr = scrStr\r\n .replace(/^function[\\s\\w]*\\(\\)\\s?\\{/, '')\r\n .replace(/\\}$/, '');\r\n scr = scrStr.trim();\r\n }\r\n\r\n var config = this.em.getConfig();\r\n var tagVarStart = escapeRegExp(config.tagVarStart || '{[ ');\r\n var tagVarEnd = escapeRegExp(config.tagVarEnd || ' ]}');\r\n var reg = new RegExp(`${tagVarStart}([\\\\w\\\\d-]*)${tagVarEnd}`, 'g');\r\n scr = scr.replace(reg, (match, v) => {\r\n // If at least one match is found I have to track this change for a\r\n // better optimization inside JS generator\r\n this.scriptUpdated();\r\n const result = this.attributes[v] || '';\r\n return isArray(result) || typeof result == 'object'\r\n ? JSON.stringify(result)\r\n : result;\r\n });\r\n\r\n return scr;\r\n },\r\n\r\n emitUpdate(property, ...args) {\r\n const em = this.em;\r\n const event = 'component:update' + (property ? `:${property}` : '');\r\n property &&\r\n this.updated(\r\n property,\r\n property && this.get(property),\r\n property && this.previous(property),\r\n ...args\r\n );\r\n this.trigger(event, ...args);\r\n em && em.trigger(event, this, ...args);\r\n },\r\n\r\n /**\r\n * Execute callback function on itself and all inner components\r\n * @param {Function} clb Callback function, the model is passed as an argument\r\n * @return {this}\r\n * @example\r\n * component.onAll(component => {\r\n * // do something with component\r\n * })\r\n */\r\n onAll(clb) {\r\n if (isFunction(clb)) {\r\n clb(this);\r\n this.components().forEach(model => model.onAll(clb));\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Remove the component\r\n * @return {this}\r\n */\r\n remove() {\r\n const coll = this.collection;\r\n return coll && coll.remove(this);\r\n },\r\n\r\n /**\r\n * Reset id of the component and any of its style rule\r\n * @param {Object} [opts={}] Options\r\n * @return {this}\r\n * @private\r\n */\r\n resetId(opts = {}) {\r\n const { em } = this;\r\n const oldId = this.getId();\r\n if (!oldId) return;\r\n const newId = Component.createId(this);\r\n this.setId(newId);\r\n const rule = em && em.get('CssComposer').getIdRule(oldId);\r\n const selector = rule && rule.get('selectors').at(0);\r\n selector && selector.set('name', newId);\r\n return this;\r\n },\r\n\r\n _getStyleRule({ id } = {}) {\r\n const { em } = this;\r\n const idS = id || this.getId();\r\n return em && em.get('CssComposer').getIdRule(idS);\r\n },\r\n\r\n _getStyleSelector(opts) {\r\n const rule = this._getStyleRule(opts);\r\n return rule && rule.get('selectors').at(0);\r\n },\r\n\r\n _idUpdated(m, v, opts = {}) {\r\n if (opts.idUpdate) return;\r\n\r\n const { ccid } = this;\r\n const { id } = this.get('attributes') || {};\r\n const idPrev = (this.previous('attributes') || {}).id || ccid;\r\n const list = Component.getList(this);\r\n\r\n // If the ID already exists I need to rollback to the old one\r\n if (list[id]) {\r\n return this.setId(idPrev, { idUpdate: 1 });\r\n }\r\n\r\n // Remove the old ID reference and add the new one\r\n delete list[idPrev];\r\n list[id] = this;\r\n this.ccid = id;\r\n\r\n // Update the style selector name\r\n const selector = this._getStyleSelector({ id: idPrev });\r\n selector && selector.set({ name: id, label: id });\r\n }\r\n },\r\n {\r\n /**\r\n * Detect if the passed element is a valid component.\r\n * In case the element is valid an object abstracted\r\n * from the element will be returned\r\n * @param {HTMLElement}\r\n * @return {Object}\r\n * @private\r\n */\r\n isComponent(el) {\r\n return { tagName: el.tagName ? el.tagName.toLowerCase() : '' };\r\n },\r\n\r\n /**\r\n * Relying simply on the number of components becomes a problem when you\r\n * store and load them back, you might hit collisions with new components\r\n * @param {Model} model\r\n * @return {string}\r\n * @private\r\n */\r\n createId(model) {\r\n const list = Component.getList(model);\r\n let { id } = model.get('attributes');\r\n let nextId;\r\n\r\n if (id) {\r\n nextId = Component.getIncrementId(id, list);\r\n model.setId(nextId);\r\n } else {\r\n nextId = Component.getNewId(list);\r\n }\r\n\r\n list[nextId] = model;\r\n return nextId;\r\n },\r\n\r\n getNewId(list) {\r\n const count = Object.keys(list).length;\r\n // Testing 1000000 components with `+ 2` returns 0 collisions\r\n const ilen = count.toString().length + 2;\r\n const uid = (Math.random() + 1.1).toString(36).slice(-ilen);\r\n let newId = `i${uid}`;\r\n\r\n while (list[newId]) {\r\n newId = Component.getNewId(list);\r\n }\r\n\r\n return newId;\r\n },\r\n\r\n getIncrementId(id, list) {\r\n let counter = 1;\r\n let newId = id;\r\n\r\n while (list[newId]) {\r\n counter++;\r\n newId = `${id}-${counter}`;\r\n }\r\n\r\n return newId;\r\n },\r\n\r\n /**\r\n * The list of components is taken from the Components module.\r\n * Initially, the list, was set statically on the Component object but it was\r\n * not ok, as it was shared between multiple editor instances\r\n */\r\n getList(model) {\r\n const domc = model.opt && model.opt.domc;\r\n return domc ? domc.componentsById : {};\r\n },\r\n\r\n /**\r\n * This method checks, for each parsed component and style object\r\n * (are not Components/CSSRules yet), for duplicated id and fixes them\r\n * This method is used in Components.js just after the parsing\r\n */\r\n checkId(components, styles = [], list = {}) {\r\n const comps = isArray(components) ? components : [components];\r\n comps.forEach(comp => {\r\n const { attributes = {}, components } = comp;\r\n const { id } = attributes;\r\n\r\n // Check if we have collisions with current components\r\n if (id && list[id]) {\r\n const newId = Component.getIncrementId(id, list);\r\n attributes.id = newId;\r\n // Update passed styles\r\n isArray(styles) &&\r\n styles.forEach(style => {\r\n const { selectors } = style;\r\n selectors.forEach((sel, idx) => {\r\n if (sel === `#${id}`) selectors[idx] = `#${newId}`;\r\n });\r\n });\r\n }\r\n\r\n components && Component.checkId(components, styles, list);\r\n });\r\n }\r\n }\r\n);\r\n\r\nexport default Component;\r\n","export default {\r\n bindable: {\r\n type: 'checkbox',\r\n label: 'Bindable',\r\n name: 'bindable',\r\n conditions: [\r\n {\r\n condition: '$eq true',\r\n true: {\r\n op: 'set',\r\n value: true\r\n },\r\n false: {\r\n op: 'set',\r\n value: false\r\n },\r\n target: ['font_editable', 'bg_editable']\r\n },\r\n {\r\n condition: '$eq true',\r\n true: { op: 'show' },\r\n false: { op: 'hide' },\r\n target: ['bind_from', 'field', 'data_type']\r\n }\r\n ],\r\n requires: ['bind_from', 'field', 'data_type']\r\n },\r\n datasource: {\r\n type: 'select',\r\n name: 'bind_from',\r\n label: 'Data Source',\r\n visible: false,\r\n options: [\r\n { id: 'static', name: 'Static' },\r\n { id: 'formula', name: 'Formula' },\r\n { id: 'both', name: 'Both' }\r\n ]\r\n },\r\n fieldname: {\r\n type: 'text',\r\n name: 'field',\r\n label: 'Field Name',\r\n visible: false,\r\n unique: true,\r\n placeholder: 'Enter field name'\r\n },\r\n datatype: {\r\n type: 'select',\r\n name: 'data_type',\r\n label: 'Data Type',\r\n visible: false,\r\n options: [\r\n { id: 'string', name: 'string' },\r\n { id: 'number', name: 'number' }\r\n ]\r\n },\r\n actionable: {\r\n type: 'checkbox',\r\n label: 'Action',\r\n name: 'actionable',\r\n conditions: [\r\n {\r\n condition: '$eq true',\r\n true: { op: 'show' },\r\n false: { op: 'hide' },\r\n target: ['eventname']\r\n }\r\n ],\r\n requires: ['eventname']\r\n },\r\n eventName: {\r\n type: 'text',\r\n name: 'eventname',\r\n label: 'Event Name',\r\n visible: false,\r\n unique: true,\r\n placeholder: 'Event name'\r\n },\r\n font_property: {\r\n type: 'checkbox',\r\n label: 'Font Editable',\r\n name: 'font_editable',\r\n conditions: [\r\n {\r\n condition: '$eq true',\r\n true: { op: 'show' },\r\n false: { op: 'hide' },\r\n target: ['font_title']\r\n }\r\n ],\r\n requires: ['font_title']\r\n },\r\n font_title: {\r\n type: 'text',\r\n name: 'font_title',\r\n label: 'Property Name',\r\n unique: true,\r\n visible: false,\r\n placeholder: 'Font proeprty name'\r\n },\r\n bg_property: {\r\n type: 'checkbox',\r\n label: 'Background Editable',\r\n name: 'bg_editable',\r\n conditions: [\r\n {\r\n condition: '$eq true',\r\n true: { op: 'show' },\r\n false: { op: 'hide' },\r\n target: ['bg_title']\r\n }\r\n ],\r\n requires: ['bg_title']\r\n },\r\n bg_title: {\r\n type: 'text',\r\n name: 'bg_title',\r\n label: 'Property Name',\r\n unique: true,\r\n visible: false,\r\n placeholder: 'Background pro name'\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport { isArray, isEmpty, each, keys } from 'underscore';\r\nimport Components from '../model/Components';\r\nimport ComponentsView from './ComponentsView';\r\nimport Selectors from 'selector_manager/model/Selectors';\r\nimport { replaceWith } from 'utils/dom';\r\n\r\nexport default Backbone.View.extend({\r\n className() {\r\n return this.getClasses();\r\n },\r\n\r\n tagName() {\r\n return this.model.get('tagName');\r\n },\r\n\r\n initialize(opt = {}) {\r\n const model = this.model;\r\n const config = opt.config || {};\r\n const em = config.em;\r\n const modelOpt = model.opt || {};\r\n const { $el } = this;\r\n const { draggableComponents } = config;\r\n this.opts = opt;\r\n this.modelOpt = modelOpt;\r\n this.config = config;\r\n this.em = em || '';\r\n this.pfx = config.stylePrefix || '';\r\n this.ppfx = config.pStylePrefix || '';\r\n this.attr = model.get('attributes');\r\n this.classe = this.attr.class || [];\r\n this.listenTo(model, 'change:style', this.updateStyle);\r\n this.listenTo(model, 'change:attributes', this.renderAttributes);\r\n this.listenTo(model, 'change:highlightable', this.updateHighlight);\r\n this.listenTo(model, 'change:status', this.updateStatus);\r\n this.listenTo(model, 'change:state', this.updateState);\r\n this.listenTo(model, 'change:script', this.reset);\r\n this.listenTo(model, 'change:content', this.updateContent);\r\n this.listenTo(model, 'change', this.handleChange);\r\n this.listenTo(model, 'active', this.onActive);\r\n $el.data('model', model);\r\n model.view = this;\r\n this.initClasses();\r\n this.initComponents({ avoidRender: 1 });\r\n this.events = {\r\n ...this.events,\r\n ...(draggableComponents && { dragstart: 'handleDragStart' })\r\n };\r\n this.delegateEvents();\r\n !modelOpt.temporary && this.init(this._clbObj());\r\n },\r\n\r\n _clbObj() {\r\n const { em, model, el } = this;\r\n return {\r\n editor: em && em.getEditor(),\r\n model,\r\n el\r\n };\r\n },\r\n\r\n /**\r\n * Initialize callback\r\n */\r\n init() {},\r\n\r\n /**\r\n * Remove callback\r\n */\r\n removed() {},\r\n\r\n /**\r\n * Callback executed when the `active` event is triggered on component\r\n */\r\n onActive() {},\r\n\r\n remove() {\r\n Backbone.View.prototype.remove.apply(this, arguments);\r\n this.removed(this._clbObj());\r\n return this;\r\n },\r\n\r\n handleDragStart(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.em.get('Commands').run('tlb-move', {\r\n target: this.model,\r\n event\r\n });\r\n },\r\n\r\n initClasses() {\r\n const { model } = this;\r\n const event = 'change:classes';\r\n const classes = model.get('classes');\r\n\r\n if (classes instanceof Selectors) {\r\n this.stopListening(model, event, this.initClasses);\r\n this.listenTo(model, event, this.initClasses);\r\n this.listenTo(classes, 'add remove change', this.updateClasses);\r\n classes.length && this.importClasses();\r\n }\r\n },\r\n\r\n initComponents(opts = {}) {\r\n const { model, $el, childrenView } = this;\r\n const event = 'change:components';\r\n const comps = model.get('components');\r\n const toListen = [model, event, this.initComponents];\r\n\r\n if (comps instanceof Components) {\r\n $el.data('collection', comps);\r\n childrenView && childrenView.remove();\r\n this.stopListening(...toListen);\r\n !opts.avoidRender && this.renderChildren();\r\n this.listenTo(...toListen);\r\n }\r\n },\r\n\r\n /**\r\n * Handle any property change\r\n * @private\r\n */\r\n handleChange() {\r\n const model = this.model;\r\n model.emitUpdate();\r\n\r\n for (let prop in model.changed) {\r\n model.emitUpdate(prop);\r\n }\r\n },\r\n\r\n /**\r\n * Import, if possible, classes inside main container\r\n * @private\r\n * */\r\n importClasses() {\r\n var clm = this.config.em.get('SelectorManager');\r\n\r\n if (clm) {\r\n this.model.get('classes').each(m => {\r\n clm.add(m.get('name'));\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Fires on state update. If the state is not empty will add a helper class\r\n * @param {Event} e\r\n * @private\r\n * */\r\n updateState(e) {\r\n var cl = 'hc-state';\r\n var state = this.model.get('state');\r\n\r\n if (state) {\r\n this.$el.addClass(cl);\r\n } else {\r\n this.$el.removeClass(cl);\r\n }\r\n },\r\n\r\n /**\r\n * Update item on status change\r\n * @param {Event} e\r\n * @private\r\n * */\r\n updateStatus(opts = {}) {\r\n const em = this.em;\r\n const el = this.el;\r\n const status = this.model.get('status');\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const selectedCls = `${pfx}selected`;\r\n const selectedParentCls = `${selectedCls}-parent`;\r\n const freezedCls = `${ppfx}freezed`;\r\n const hoveredCls = `${ppfx}hovered`;\r\n const toRemove = [selectedCls, selectedParentCls, freezedCls, hoveredCls];\r\n this.$el.removeClass(toRemove.join(' '));\r\n var actualCls = el.getAttribute('class') || '';\r\n var cls = '';\r\n\r\n switch (status) {\r\n case 'selected':\r\n cls = `${actualCls} ${selectedCls}`;\r\n break;\r\n case 'selected-parent':\r\n cls = `${actualCls} ${selectedParentCls}`;\r\n break;\r\n case 'freezed':\r\n cls = `${actualCls} ${freezedCls}`;\r\n break;\r\n case 'freezed-selected':\r\n cls = `${actualCls} ${freezedCls} ${selectedCls}`;\r\n break;\r\n case 'hovered':\r\n cls = !opts.avoidHover ? `${actualCls} ${hoveredCls}` : '';\r\n break;\r\n }\r\n\r\n cls = cls.trim();\r\n cls && el.setAttribute('class', cls);\r\n },\r\n\r\n /**\r\n * Update highlight attribute\r\n * @private\r\n * */\r\n updateHighlight() {\r\n const hl = this.model.get('highlightable');\r\n this.setAttribute('data-highlightable', hl ? 1 : '');\r\n },\r\n\r\n /**\r\n * Update style attribute\r\n * @private\r\n * */\r\n updateStyle() {\r\n const em = this.em;\r\n const model = this.model;\r\n\r\n if (em && em.get('avoidInlineStyle')) {\r\n this.el.id = model.getId();\r\n const style = model.getStyle();\r\n !isEmpty(style) && model.setStyle(style);\r\n } else {\r\n this.setAttribute('style', model.styleToString());\r\n }\r\n },\r\n\r\n /**\r\n * Update classe attribute\r\n * @private\r\n * */\r\n updateClasses() {\r\n const str = this.model\r\n .get('classes')\r\n .pluck('name')\r\n .join(' ');\r\n this.setAttribute('class', str);\r\n\r\n // Regenerate status class\r\n this.updateStatus();\r\n },\r\n\r\n /**\r\n * Update single attribute\r\n * @param {[type]} name [description]\r\n * @param {[type]} value [description]\r\n */\r\n setAttribute(name, value) {\r\n const el = this.$el;\r\n value ? el.attr(name, value) : el.removeAttr(name);\r\n },\r\n\r\n /**\r\n * Get classes from attributes.\r\n * This method is called before initialize\r\n *\r\n * @return {Array}|null\r\n * @private\r\n * */\r\n getClasses() {\r\n return this.model.getClasses().join(' ');\r\n },\r\n\r\n /**\r\n * Update attributes\r\n * @private\r\n * */\r\n updateAttributes() {\r\n const attrs = [];\r\n const { model, $el, el, config } = this;\r\n const { highlightable, textable, type } = model.attributes;\r\n const { draggableComponents } = config;\r\n\r\n const defaultAttr = {\r\n 'data-gjs-type': type || 'default',\r\n ...(draggableComponents ? { draggable: true } : {}),\r\n ...(highlightable ? { 'data-highlightable': 1 } : {}),\r\n ...(textable\r\n ? {\r\n contenteditable: 'false',\r\n 'data-gjs-textable': 'true'\r\n }\r\n : {})\r\n };\r\n\r\n // Remove all current attributes\r\n each(el.attributes, attr => attrs.push(attr.nodeName));\r\n attrs.forEach(attr => $el.removeAttr(attr));\r\n const attr = {\r\n ...defaultAttr,\r\n ...model.getAttributes()\r\n };\r\n\r\n // Remove all `false` attributes\r\n keys(attr).forEach(key => attr[key] === false && delete attr[key]);\r\n\r\n $el.attr(attr);\r\n this.updateStyle();\r\n },\r\n\r\n /**\r\n * Update component content\r\n * @private\r\n * */\r\n updateContent() {\r\n this.getChildrenContainer().innerHTML = this.model.get('content');\r\n },\r\n\r\n /**\r\n * Prevent default helper\r\n * @param {Event} e\r\n * @private\r\n */\r\n prevDef(e) {\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Render component's script\r\n * @private\r\n */\r\n updateScript() {\r\n const { model, em } = this;\r\n if (!model.get('script')) return;\r\n em &&\r\n em\r\n .get('Canvas')\r\n .getCanvasView()\r\n .updateScript(this);\r\n },\r\n\r\n /**\r\n * Return children container\r\n * Differently from a simple component where children container is the\r\n * component itself\r\n * \r\n * \r\n * \r\n * You could have the children container more deeper\r\n * \r\n *
\r\n *
\r\n *
\r\n *
\r\n * \r\n *
\r\n *
\r\n *
\r\n * @return HTMLElement\r\n * @private\r\n */\r\n getChildrenContainer() {\r\n var container = this.el;\r\n\r\n if (typeof this.getChildrenSelector == 'function') {\r\n container = this.el.querySelector(this.getChildrenSelector());\r\n } else if (typeof this.getTemplate == 'function') {\r\n // Need to find deepest first child\r\n }\r\n\r\n return container;\r\n },\r\n\r\n /**\r\n * Recreate the element of the view\r\n */\r\n reset() {\r\n const { el, model } = this;\r\n const collection = model.components();\r\n this.el = '';\r\n this._ensureElement();\r\n this.$el.data({ model, collection });\r\n replaceWith(el, this.el);\r\n this.render();\r\n },\r\n\r\n /**\r\n * Render children components\r\n * @private\r\n */\r\n renderChildren() {\r\n this.updateContent();\r\n const container = this.getChildrenContainer();\r\n const view = new ComponentsView({\r\n collection: this.model.get('components'),\r\n config: this.config,\r\n componentTypes: this.opts.componentTypes\r\n });\r\n\r\n view.render(container);\r\n this.childrenView = view;\r\n const childNodes = Array.prototype.slice.call(view.el.childNodes);\r\n\r\n for (var i = 0, len = childNodes.length; i < len; i++) {\r\n container.appendChild(childNodes.shift());\r\n }\r\n },\r\n\r\n renderAttributes() {\r\n this.updateAttributes();\r\n this.updateClasses();\r\n },\r\n\r\n render() {\r\n this.renderAttributes();\r\n if (this.modelOpt.temporary) return this;\r\n this.renderChildren();\r\n this.updateScript();\r\n this.postRender();\r\n\r\n return this;\r\n },\r\n\r\n postRender() {\r\n const { em, model, modelOpt } = this;\r\n\r\n if (!modelOpt.temporary) {\r\n this.onRender(this._clbObj());\r\n em && em.trigger('component:mount', model);\r\n }\r\n },\r\n\r\n onRender() {}\r\n});\r\n","// module.exports = {\r\n// url: 'http://localhost:24313/', /*for development */\r\n// rootDir: '/dist', //Dev\r\n// fontDir: '/woooo/fonts',\r\n// montserrat: '/dist/fonts/montserrat/Montserrat.css',\r\n// mavenpro: '/dist/fonts/Maven Pro/Maven Pro.css',\r\n// roboto: 'dist/fonts/Roboto/Roboto.css',\r\n// studioUrl: 'http://192.168.2.39:6060/'\r\n// }\r\n\r\nmodule.exports = {\r\n url: '../',\r\n rootDir: '/designer',\r\n montserrat: '/static/fonts/montserrat/Montserrat.css',\r\n mavenpro: '/static/fonts/Maven Pro/Maven Pro.css',\r\n roboto: '/static/fonts/Roboto/Roboto.css',\r\n studioUrl: '../'\r\n}\r\n","function _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 _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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar ee = require('namespace-emitter');\n\nvar cuid = require('cuid');\n\nvar throttle = require('lodash.throttle');\n\nvar prettierBytes = require('@transloadit/prettier-bytes');\n\nvar match = require('mime-match');\n\nvar DefaultStore = require('@uppy/store-default');\n\nvar getFileType = require('@uppy/utils/lib/getFileType');\n\nvar getFileNameAndExtension = require('@uppy/utils/lib/getFileNameAndExtension');\n\nvar generateFileID = require('@uppy/utils/lib/generateFileID');\n\nvar supportsUploadProgress = require('./supportsUploadProgress');\n\nvar _require = require('./loggers'),\n justErrorsLogger = _require.justErrorsLogger,\n debugLogger = _require.debugLogger;\n\nvar Plugin = require('./Plugin'); // Exported from here.\n\n\nvar RestrictionError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(RestrictionError, _Error);\n\n function RestrictionError() {\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 = _Error.call.apply(_Error, [this].concat(args)) || this;\n _this.isRestriction = true;\n return _this;\n }\n\n return RestrictionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\n\nvar Uppy = /*#__PURE__*/function () {\n /**\n * Instantiate Uppy\n *\n * @param {object} opts — Uppy options\n */\n function Uppy(opts) {\n var _this2 = this;\n\n this.defaultLocale = {\n strings: {\n addBulkFilesFailed: {\n 0: 'Failed to add %{smart_count} file due to an internal error',\n 1: 'Failed to add %{smart_count} files due to internal errors'\n },\n youCanOnlyUploadX: {\n 0: 'You can only upload %{smart_count} file',\n 1: 'You can only upload %{smart_count} files'\n },\n youHaveToAtLeastSelectX: {\n 0: 'You have to select at least %{smart_count} file',\n 1: 'You have to select at least %{smart_count} files'\n },\n // The default `exceedsSize2` string only combines the `exceedsSize` string (%{backwardsCompat}) with the size.\n // Locales can override `exceedsSize2` to specify a different word order. This is for backwards compat with\n // Uppy 1.9.x and below which did a naive concatenation of `exceedsSize2 + size` instead of using a locale-specific\n // substitution.\n // TODO: In 2.0 `exceedsSize2` should be removed in and `exceedsSize` updated to use substitution.\n exceedsSize2: '%{backwardsCompat} %{size}',\n exceedsSize: 'This file exceeds maximum allowed size of',\n youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n noNewAlreadyUploading: 'Cannot add new files: already uploading',\n noDuplicates: 'Cannot add the duplicate file \\'%{fileName}\\', it already exists',\n companionError: 'Connection with Companion failed',\n companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n failedToUpload: 'Failed to upload %{file}',\n noInternetConnection: 'No Internet connection',\n connectedToInternet: 'Connected to the Internet',\n // Strings for remote providers\n noFilesFound: 'You have no files or folders here',\n selectX: {\n 0: 'Select %{smart_count}',\n 1: 'Select %{smart_count}'\n },\n selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',\n unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',\n selectFileNamed: 'Select file %{name}',\n unselectFileNamed: 'Unselect file %{name}',\n openFolderNamed: 'Open folder %{name}',\n cancel: 'Cancel',\n logOut: 'Log out',\n filter: 'Filter',\n resetFilter: 'Reset filter',\n loading: 'Loading...',\n authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n authenticateWith: 'Connect to %{pluginName}',\n emptyFolderAdded: 'No files were added from empty folder',\n folderAdded: {\n 0: 'Added %{smart_count} file from %{folder}',\n 1: 'Added %{smart_count} files from %{folder}'\n }\n }\n };\n var defaultOptions = {\n id: 'uppy',\n autoProceed: false,\n allowMultipleUploads: true,\n debug: false,\n restrictions: {\n maxFileSize: null,\n maxNumberOfFiles: null,\n minNumberOfFiles: null,\n allowedFileTypes: null\n },\n meta: {},\n onBeforeFileAdded: function onBeforeFileAdded(currentFile, files) {\n return currentFile;\n },\n onBeforeUpload: function onBeforeUpload(files) {\n return files;\n },\n store: DefaultStore(),\n logger: justErrorsLogger\n }; // Merge default options with the ones set by user,\n // making sure to merge restrictions too\n\n this.opts = _extends({}, defaultOptions, {}, opts, {\n restrictions: _extends({}, defaultOptions.restrictions, {}, opts && opts.restrictions)\n }); // Support debug: true for backwards-compatability, unless logger is set in opts\n // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n\n if (opts && opts.logger && opts.debug) {\n this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n } else if (opts && opts.debug) {\n this.opts.logger = debugLogger;\n }\n\n this.log(\"Using Core v\" + this.constructor.VERSION);\n\n if (this.opts.restrictions.allowedFileTypes && this.opts.restrictions.allowedFileTypes !== null && !Array.isArray(this.opts.restrictions.allowedFileTypes)) {\n throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n }\n\n this.i18nInit(); // Container for different types of plugins\n\n this.plugins = {};\n this.getState = this.getState.bind(this);\n this.getPlugin = this.getPlugin.bind(this);\n this.setFileMeta = this.setFileMeta.bind(this);\n this.setFileState = this.setFileState.bind(this);\n this.log = this.log.bind(this);\n this.info = this.info.bind(this);\n this.hideInfo = this.hideInfo.bind(this);\n this.addFile = this.addFile.bind(this);\n this.removeFile = this.removeFile.bind(this);\n this.pauseResume = this.pauseResume.bind(this); // ___Why throttle at 500ms?\n // - We must throttle at >250ms for superfocus in Dashboard to work well (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n // [Practical Check]: if thottle is at 100ms, then if you are uploading a file, and click 'ADD MORE FILES', - focus won't activate in Firefox.\n // - We must throttle at around >500ms to avoid performance lags.\n // [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n\n this._calculateProgress = throttle(this._calculateProgress.bind(this), 500, {\n leading: true,\n trailing: true\n });\n this.updateOnlineStatus = this.updateOnlineStatus.bind(this);\n this.resetProgress = this.resetProgress.bind(this);\n this.pauseAll = this.pauseAll.bind(this);\n this.resumeAll = this.resumeAll.bind(this);\n this.retryAll = this.retryAll.bind(this);\n this.cancelAll = this.cancelAll.bind(this);\n this.retryUpload = this.retryUpload.bind(this);\n this.upload = this.upload.bind(this);\n this.emitter = ee();\n this.on = this.on.bind(this);\n this.off = this.off.bind(this);\n this.once = this.emitter.once.bind(this.emitter);\n this.emit = this.emitter.emit.bind(this.emitter);\n this.preProcessors = [];\n this.uploaders = [];\n this.postProcessors = [];\n this.store = this.opts.store;\n this.setState({\n plugins: {},\n files: {},\n currentUploads: {},\n allowNewUpload: true,\n capabilities: {\n uploadProgress: supportsUploadProgress(),\n individualCancellation: true,\n resumableUploads: false\n },\n totalProgress: 0,\n meta: _extends({}, this.opts.meta),\n info: {\n isHidden: true,\n type: 'info',\n message: ''\n }\n });\n this._storeUnsubscribe = this.store.subscribe(function (prevState, nextState, patch) {\n _this2.emit('state-update', prevState, nextState, patch);\n\n _this2.updateAll(nextState);\n }); // Exposing uppy object on window for debugging and testing\n\n if (this.opts.debug && typeof window !== 'undefined') {\n window[this.opts.id] = this;\n }\n\n this._addListeners(); // Re-enable if we’ll need some capabilities on boot, like isMobileDevice\n // this._setCapabilities()\n\n } // _setCapabilities = () => {\n // const capabilities = {\n // isMobileDevice: isMobileDevice()\n // }\n // this.setState({\n // ...this.getState().capabilities,\n // capabilities\n // })\n // }\n\n\n var _proto = Uppy.prototype;\n\n _proto.on = function on(event, callback) {\n this.emitter.on(event, callback);\n return this;\n };\n\n _proto.off = function off(event, callback) {\n this.emitter.off(event, callback);\n return this;\n }\n /**\n * Iterate on all plugins and run `update` on them.\n * Called each time state changes.\n *\n */\n ;\n\n _proto.updateAll = function updateAll(state) {\n this.iteratePlugins(function (plugin) {\n plugin.update(state);\n });\n }\n /**\n * Updates state with a patch\n *\n * @param {object} patch {foo: 'bar'}\n */\n ;\n\n _proto.setState = function setState(patch) {\n this.store.setState(patch);\n }\n /**\n * Returns current state.\n *\n * @returns {object}\n */\n ;\n\n _proto.getState = function getState() {\n return this.store.getState();\n }\n /**\n * Back compat for when uppy.state is used instead of uppy.getState().\n */\n ;\n\n /**\n * Shorthand to set state for a specific file.\n */\n _proto.setFileState = function setFileState(fileID, state) {\n var _extends2;\n\n if (!this.getState().files[fileID]) {\n throw new Error(\"Can\\u2019t set state for \" + fileID + \" (the file could have been removed)\");\n }\n\n this.setState({\n files: _extends({}, this.getState().files, (_extends2 = {}, _extends2[fileID] = _extends({}, this.getState().files[fileID], state), _extends2))\n });\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.opts.locale]);\n this.locale = this.translator.locale;\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n };\n\n _proto.setOptions = function setOptions(newOpts) {\n this.opts = _extends({}, this.opts, {}, newOpts, {\n restrictions: _extends({}, this.opts.restrictions, {}, newOpts && newOpts.restrictions)\n });\n\n if (newOpts.meta) {\n this.setMeta(newOpts.meta);\n }\n\n this.i18nInit();\n\n if (newOpts.locale) {\n this.iteratePlugins(function (plugin) {\n plugin.setOptions();\n });\n }\n\n this.setState(); // so that UI re-renders with new options\n };\n\n _proto.resetProgress = function resetProgress() {\n var defaultProgress = {\n percentage: 0,\n bytesUploaded: 0,\n uploadComplete: false,\n uploadStarted: null\n };\n\n var files = _extends({}, this.getState().files);\n\n var updatedFiles = {};\n Object.keys(files).forEach(function (fileID) {\n var updatedFile = _extends({}, files[fileID]);\n\n updatedFile.progress = _extends({}, updatedFile.progress, defaultProgress);\n updatedFiles[fileID] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n totalProgress: 0\n });\n this.emit('reset-progress');\n };\n\n _proto.addPreProcessor = function addPreProcessor(fn) {\n this.preProcessors.push(fn);\n };\n\n _proto.removePreProcessor = function removePreProcessor(fn) {\n var i = this.preProcessors.indexOf(fn);\n\n if (i !== -1) {\n this.preProcessors.splice(i, 1);\n }\n };\n\n _proto.addPostProcessor = function addPostProcessor(fn) {\n this.postProcessors.push(fn);\n };\n\n _proto.removePostProcessor = function removePostProcessor(fn) {\n var i = this.postProcessors.indexOf(fn);\n\n if (i !== -1) {\n this.postProcessors.splice(i, 1);\n }\n };\n\n _proto.addUploader = function addUploader(fn) {\n this.uploaders.push(fn);\n };\n\n _proto.removeUploader = function removeUploader(fn) {\n var i = this.uploaders.indexOf(fn);\n\n if (i !== -1) {\n this.uploaders.splice(i, 1);\n }\n };\n\n _proto.setMeta = function setMeta(data) {\n var updatedMeta = _extends({}, this.getState().meta, data);\n\n var updatedFiles = _extends({}, this.getState().files);\n\n Object.keys(updatedFiles).forEach(function (fileID) {\n updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n meta: _extends({}, updatedFiles[fileID].meta, data)\n });\n });\n this.log('Adding metadata:');\n this.log(data);\n this.setState({\n meta: updatedMeta,\n files: updatedFiles\n });\n };\n\n _proto.setFileMeta = function setFileMeta(fileID, data) {\n var updatedFiles = _extends({}, this.getState().files);\n\n if (!updatedFiles[fileID]) {\n this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n return;\n }\n\n var newMeta = _extends({}, updatedFiles[fileID].meta, data);\n\n updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n meta: newMeta\n });\n this.setState({\n files: updatedFiles\n });\n }\n /**\n * Get a file object.\n *\n * @param {string} fileID The ID of the file object to return.\n */\n ;\n\n _proto.getFile = function getFile(fileID) {\n return this.getState().files[fileID];\n }\n /**\n * Get all files in an array.\n */\n ;\n\n _proto.getFiles = function getFiles() {\n var _this$getState = this.getState(),\n files = _this$getState.files;\n\n return Object.keys(files).map(function (fileID) {\n return files[fileID];\n });\n }\n /**\n * Check if minNumberOfFiles restriction is reached before uploading.\n *\n * @private\n */\n ;\n\n _proto._checkMinNumberOfFiles = function _checkMinNumberOfFiles(files) {\n var minNumberOfFiles = this.opts.restrictions.minNumberOfFiles;\n\n if (Object.keys(files).length < minNumberOfFiles) {\n throw new RestrictionError(\"\" + this.i18n('youHaveToAtLeastSelectX', {\n smart_count: minNumberOfFiles\n }));\n }\n }\n /**\n * Check if file passes a set of restrictions set in options: maxFileSize,\n * maxNumberOfFiles and allowedFileTypes.\n *\n * @param {object} files Object of IDs → files already added\n * @param {object} file object to check\n * @private\n */\n ;\n\n _proto._checkRestrictions = function _checkRestrictions(files, file) {\n var _this$opts$restrictio = this.opts.restrictions,\n maxFileSize = _this$opts$restrictio.maxFileSize,\n maxNumberOfFiles = _this$opts$restrictio.maxNumberOfFiles,\n allowedFileTypes = _this$opts$restrictio.allowedFileTypes;\n\n if (maxNumberOfFiles) {\n if (Object.keys(files).length + 1 > maxNumberOfFiles) {\n throw new RestrictionError(\"\" + this.i18n('youCanOnlyUploadX', {\n smart_count: maxNumberOfFiles\n }));\n }\n }\n\n if (allowedFileTypes) {\n var isCorrectFileType = allowedFileTypes.some(function (type) {\n // is this is a mime-type\n if (type.indexOf('/') > -1) {\n if (!file.type) return false;\n return match(file.type.replace(/;.*?$/, ''), type);\n } // otherwise this is likely an extension\n\n\n if (type[0] === '.') {\n return file.extension.toLowerCase() === type.substr(1).toLowerCase();\n }\n\n return false;\n });\n\n if (!isCorrectFileType) {\n var allowedFileTypesString = allowedFileTypes.join(', ');\n throw new RestrictionError(this.i18n('youCanOnlyUploadFileTypes', {\n types: allowedFileTypesString\n }));\n }\n } // We can't check maxFileSize if the size is unknown.\n\n\n if (maxFileSize && file.data.size != null) {\n if (file.data.size > maxFileSize) {\n throw new RestrictionError(this.i18n('exceedsSize2', {\n backwardsCompat: this.i18n('exceedsSize'),\n size: prettierBytes(maxFileSize)\n }));\n }\n }\n }\n /**\n * Logs an error, sets Informer message, then throws the error.\n * Emits a 'restriction-failed' event if it’s a restriction error\n *\n * @param {object | string} err — Error object or plain string message\n * @param {object} [options]\n * @param {boolean} [options.showInformer=true] — Sometimes developer might want to show Informer manually\n * @param {object} [options.file=null] — File object used to emit the restriction error\n * @param {boolean} [options.throwErr=true] — Errors shouldn’t be thrown, for example, in `upload-error` event\n * @private\n */\n ;\n\n _proto._showOrLogErrorAndThrow = function _showOrLogErrorAndThrow(err, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$showInformer = _ref.showInformer,\n showInformer = _ref$showInformer === void 0 ? true : _ref$showInformer,\n _ref$file = _ref.file,\n file = _ref$file === void 0 ? null : _ref$file,\n _ref$throwErr = _ref.throwErr,\n throwErr = _ref$throwErr === void 0 ? true : _ref$throwErr;\n\n var message = typeof err === 'object' ? err.message : err;\n var details = typeof err === 'object' && err.details ? err.details : ''; // Restriction errors should be logged, but not as errors,\n // as they are expected and shown in the UI.\n\n var logMessageWithDetails = message;\n\n if (details) {\n logMessageWithDetails += ' ' + details;\n }\n\n if (err.isRestriction) {\n this.log(logMessageWithDetails);\n this.emit('restriction-failed', file, err);\n } else {\n this.log(logMessageWithDetails, 'error');\n } // Sometimes informer has to be shown manually by the developer,\n // for example, in `onBeforeFileAdded`.\n\n\n if (showInformer) {\n this.info({\n message: message,\n details: details\n }, 'error', 5000);\n }\n\n if (throwErr) {\n throw typeof err === 'object' ? err : new Error(err);\n }\n };\n\n _proto._assertNewUploadAllowed = function _assertNewUploadAllowed(file) {\n var _this$getState2 = this.getState(),\n allowNewUpload = _this$getState2.allowNewUpload;\n\n if (allowNewUpload === false) {\n this._showOrLogErrorAndThrow(new RestrictionError(this.i18n('noNewAlreadyUploading')), {\n file: file\n });\n }\n }\n /**\n * Create a file state object based on user-provided `addFile()` options.\n *\n * Note this is extremely side-effectful and should only be done when a file state object will be added to state immediately afterward!\n *\n * The `files` value is passed in because it may be updated by the caller without updating the store.\n */\n ;\n\n _proto._checkAndCreateFileStateObject = function _checkAndCreateFileStateObject(files, file) {\n var fileType = getFileType(file);\n file.type = fileType;\n var onBeforeFileAddedResult = this.opts.onBeforeFileAdded(file, files);\n\n if (onBeforeFileAddedResult === false) {\n // Don’t show UI info for this error, as it should be done by the developer\n this._showOrLogErrorAndThrow(new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.'), {\n showInformer: false,\n file: file\n });\n }\n\n if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult) {\n file = onBeforeFileAddedResult;\n }\n\n var fileName;\n\n if (file.name) {\n fileName = file.name;\n } else if (fileType.split('/')[0] === 'image') {\n fileName = fileType.split('/')[0] + '.' + fileType.split('/')[1];\n } else {\n fileName = 'noname';\n }\n\n var fileExtension = getFileNameAndExtension(fileName).extension;\n var isRemote = file.isRemote || false;\n var fileID = generateFileID(file);\n\n if (files[fileID]) {\n this._showOrLogErrorAndThrow(new RestrictionError(this.i18n('noDuplicates', {\n fileName: fileName\n })), {\n file: file\n });\n }\n\n var meta = file.meta || {};\n meta.name = fileName;\n meta.type = fileType; // `null` means the size is unknown.\n\n var size = isFinite(file.data.size) ? file.data.size : null;\n var newFile = {\n source: file.source || '',\n id: fileID,\n name: fileName,\n extension: fileExtension || '',\n meta: _extends({}, this.getState().meta, {}, meta),\n type: fileType,\n data: file.data,\n progress: {\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: size,\n uploadComplete: false,\n uploadStarted: null\n },\n size: size,\n isRemote: isRemote,\n remote: file.remote || '',\n preview: file.preview\n };\n\n try {\n this._checkRestrictions(files, newFile);\n } catch (err) {\n this._showOrLogErrorAndThrow(err, {\n file: newFile\n });\n }\n\n return newFile;\n } // Schedule an upload if `autoProceed` is enabled.\n ;\n\n _proto._startIfAutoProceed = function _startIfAutoProceed() {\n var _this3 = this;\n\n if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n this.scheduledAutoProceed = setTimeout(function () {\n _this3.scheduledAutoProceed = null;\n\n _this3.upload().catch(function (err) {\n if (!err.isRestriction) {\n _this3.log(err.stack || err.message || err);\n }\n });\n }, 4);\n }\n }\n /**\n * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n * try to guess file type in a clever way, check file against restrictions,\n * and start an upload if `autoProceed === true`.\n *\n * @param {object} file object to add\n * @returns {string} id for the added file\n */\n ;\n\n _proto.addFile = function addFile(file) {\n var _extends3;\n\n this._assertNewUploadAllowed(file);\n\n var _this$getState3 = this.getState(),\n files = _this$getState3.files;\n\n var newFile = this._checkAndCreateFileStateObject(files, file);\n\n this.setState({\n files: _extends({}, files, (_extends3 = {}, _extends3[newFile.id] = newFile, _extends3))\n });\n this.emit('file-added', newFile);\n this.log(\"Added file: \" + newFile.name + \", \" + newFile.id + \", mime type: \" + newFile.type);\n\n this._startIfAutoProceed();\n\n return newFile.id;\n }\n /**\n * Add multiple files to `state.files`. See the `addFile()` documentation.\n *\n * This cuts some corners for performance, so should typically only be used in cases where there may be a lot of files.\n *\n * If an error occurs while adding a file, it is logged and the user is notified. This is good for UI plugins, but not for programmatic use. Programmatic users should usually still use `addFile()` on individual files.\n */\n ;\n\n _proto.addFiles = function addFiles(fileDescriptors) {\n var _this4 = this;\n\n this._assertNewUploadAllowed(); // create a copy of the files object only once\n\n\n var files = _extends({}, this.getState().files);\n\n var newFiles = [];\n var errors = [];\n\n for (var i = 0; i < fileDescriptors.length; i++) {\n try {\n var newFile = this._checkAndCreateFileStateObject(files, fileDescriptors[i]);\n\n newFiles.push(newFile);\n files[newFile.id] = newFile;\n } catch (err) {\n if (!err.isRestriction) {\n errors.push(err);\n }\n }\n }\n\n this.setState({\n files: files\n });\n newFiles.forEach(function (newFile) {\n _this4.emit('file-added', newFile);\n });\n\n if (newFiles.length > 5) {\n this.log(\"Added batch of \" + newFiles.length + \" files\");\n } else {\n Object.keys(newFiles).forEach(function (fileID) {\n _this4.log(\"Added file: \" + newFiles[fileID].name + \"\\n id: \" + newFiles[fileID].id + \"\\n type: \" + newFiles[fileID].type);\n });\n }\n\n if (newFiles.length > 0) {\n this._startIfAutoProceed();\n }\n\n if (errors.length > 0) {\n var message = 'Multiple errors occurred while adding files:\\n';\n errors.forEach(function (subError) {\n message += \"\\n * \" + subError.message;\n });\n this.info({\n message: this.i18n('addBulkFilesFailed', {\n smart_count: errors.length\n }),\n details: message\n }, 'error', 5000);\n var err = new Error(message);\n err.errors = errors;\n throw err;\n }\n };\n\n _proto.removeFiles = function removeFiles(fileIDs) {\n var _this5 = this;\n\n var _this$getState4 = this.getState(),\n files = _this$getState4.files,\n currentUploads = _this$getState4.currentUploads;\n\n var updatedFiles = _extends({}, files);\n\n var updatedUploads = _extends({}, currentUploads);\n\n var removedFiles = Object.create(null);\n fileIDs.forEach(function (fileID) {\n if (files[fileID]) {\n removedFiles[fileID] = files[fileID];\n delete updatedFiles[fileID];\n }\n }); // Remove files from the `fileIDs` list in each upload.\n\n function fileIsNotRemoved(uploadFileID) {\n return removedFiles[uploadFileID] === undefined;\n }\n\n var uploadsToRemove = [];\n Object.keys(updatedUploads).forEach(function (uploadID) {\n var newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved); // Remove the upload if no files are associated with it anymore.\n\n if (newFileIDs.length === 0) {\n uploadsToRemove.push(uploadID);\n return;\n }\n\n updatedUploads[uploadID] = _extends({}, currentUploads[uploadID], {\n fileIDs: newFileIDs\n });\n });\n uploadsToRemove.forEach(function (uploadID) {\n delete updatedUploads[uploadID];\n });\n var stateUpdate = {\n currentUploads: updatedUploads,\n files: updatedFiles\n }; // If all files were removed - allow new uploads!\n\n if (Object.keys(updatedFiles).length === 0) {\n stateUpdate.allowNewUpload = true;\n stateUpdate.error = null;\n }\n\n this.setState(stateUpdate);\n\n this._calculateTotalProgress();\n\n var removedFileIDs = Object.keys(removedFiles);\n removedFileIDs.forEach(function (fileID) {\n _this5.emit('file-removed', removedFiles[fileID]);\n });\n\n if (removedFileIDs.length > 5) {\n this.log(\"Removed \" + removedFileIDs.length + \" files\");\n } else {\n this.log(\"Removed files: \" + removedFileIDs.join(', '));\n }\n };\n\n _proto.removeFile = function removeFile(fileID) {\n this.removeFiles([fileID]);\n };\n\n _proto.pauseResume = function pauseResume(fileID) {\n if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).uploadComplete) {\n return;\n }\n\n var wasPaused = this.getFile(fileID).isPaused || false;\n var isPaused = !wasPaused;\n this.setFileState(fileID, {\n isPaused: isPaused\n });\n this.emit('upload-pause', fileID, isPaused);\n return isPaused;\n };\n\n _proto.pauseAll = function pauseAll() {\n var updatedFiles = _extends({}, this.getState().files);\n\n var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: true\n });\n\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('pause-all');\n };\n\n _proto.resumeAll = function resumeAll() {\n var updatedFiles = _extends({}, this.getState().files);\n\n var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n });\n inProgressUpdatedFiles.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: false,\n error: null\n });\n\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles\n });\n this.emit('resume-all');\n };\n\n _proto.retryAll = function retryAll() {\n var updatedFiles = _extends({}, this.getState().files);\n\n var filesToRetry = Object.keys(updatedFiles).filter(function (file) {\n return updatedFiles[file].error;\n });\n filesToRetry.forEach(function (file) {\n var updatedFile = _extends({}, updatedFiles[file], {\n isPaused: false,\n error: null\n });\n\n updatedFiles[file] = updatedFile;\n });\n this.setState({\n files: updatedFiles,\n error: null\n });\n this.emit('retry-all', filesToRetry);\n\n var uploadID = this._createUpload(filesToRetry, {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n });\n\n return this._runUpload(uploadID);\n };\n\n _proto.cancelAll = function cancelAll() {\n this.emit('cancel-all');\n\n var _this$getState5 = this.getState(),\n files = _this$getState5.files;\n\n var fileIDs = Object.keys(files);\n\n if (fileIDs.length) {\n this.removeFiles(fileIDs);\n }\n\n this.setState({\n totalProgress: 0,\n error: null\n });\n };\n\n _proto.retryUpload = function retryUpload(fileID) {\n this.setFileState(fileID, {\n error: null,\n isPaused: false\n });\n this.emit('upload-retry', fileID);\n\n var uploadID = this._createUpload([fileID], {\n forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n\n });\n\n return this._runUpload(uploadID);\n };\n\n _proto.reset = function reset() {\n this.cancelAll();\n };\n\n _proto._calculateProgress = function _calculateProgress(file, data) {\n if (!this.getFile(file.id)) {\n this.log(\"Not setting progress for a file that has been removed: \" + file.id);\n return;\n } // bytesTotal may be null or zero; in that case we can't divide by it\n\n\n var canHavePercentage = isFinite(data.bytesTotal) && data.bytesTotal > 0;\n this.setFileState(file.id, {\n progress: _extends({}, this.getFile(file.id).progress, {\n bytesUploaded: data.bytesUploaded,\n bytesTotal: data.bytesTotal,\n percentage: canHavePercentage // TODO(goto-bus-stop) flooring this should probably be the choice of the UI?\n // we get more accurate calculations if we don't round this at all.\n ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n })\n });\n\n this._calculateTotalProgress();\n };\n\n _proto._calculateTotalProgress = function _calculateTotalProgress() {\n // calculate total progress, using the number of files currently uploading,\n // multiplied by 100 and the summ of individual progress of each file\n var files = this.getFiles();\n var inProgress = files.filter(function (file) {\n return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n });\n\n if (inProgress.length === 0) {\n this.emit('progress', 0);\n this.setState({\n totalProgress: 0\n });\n return;\n }\n\n var sizedFiles = inProgress.filter(function (file) {\n return file.progress.bytesTotal != null;\n });\n var unsizedFiles = inProgress.filter(function (file) {\n return file.progress.bytesTotal == null;\n });\n\n if (sizedFiles.length === 0) {\n var progressMax = inProgress.length * 100;\n var currentProgress = unsizedFiles.reduce(function (acc, file) {\n return acc + file.progress.percentage;\n }, 0);\n\n var _totalProgress = Math.round(currentProgress / progressMax * 100);\n\n this.setState({\n totalProgress: _totalProgress\n });\n return;\n }\n\n var totalSize = sizedFiles.reduce(function (acc, file) {\n return acc + file.progress.bytesTotal;\n }, 0);\n var averageSize = totalSize / sizedFiles.length;\n totalSize += averageSize * unsizedFiles.length;\n var uploadedSize = 0;\n sizedFiles.forEach(function (file) {\n uploadedSize += file.progress.bytesUploaded;\n });\n unsizedFiles.forEach(function (file) {\n uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n });\n var totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100); // hot fix, because:\n // uploadedSize ended up larger than totalSize, resulting in 1325% total\n\n if (totalProgress > 100) {\n totalProgress = 100;\n }\n\n this.setState({\n totalProgress: totalProgress\n });\n this.emit('progress', totalProgress);\n }\n /**\n * Registers listeners for all global actions, like:\n * `error`, `file-removed`, `upload-progress`\n */\n ;\n\n _proto._addListeners = function _addListeners() {\n var _this6 = this;\n\n this.on('error', function (error) {\n var errorMsg = 'Unknown error';\n\n if (error.message) {\n errorMsg = error.message;\n }\n\n if (error.details) {\n errorMsg += ' ' + error.details;\n }\n\n _this6.setState({\n error: errorMsg\n });\n });\n this.on('upload-error', function (file, error, response) {\n var errorMsg = 'Unknown error';\n\n if (error.message) {\n errorMsg = error.message;\n }\n\n if (error.details) {\n errorMsg += ' ' + error.details;\n }\n\n _this6.setFileState(file.id, {\n error: errorMsg,\n response: response\n });\n\n _this6.setState({\n error: error.message\n });\n\n if (typeof error === 'object' && error.message) {\n var newError = new Error(error.message);\n newError.details = error.message;\n\n if (error.details) {\n newError.details += ' ' + error.details;\n }\n\n newError.message = _this6.i18n('failedToUpload', {\n file: file.name\n });\n\n _this6._showOrLogErrorAndThrow(newError, {\n throwErr: false\n });\n } else {\n _this6._showOrLogErrorAndThrow(error, {\n throwErr: false\n });\n }\n });\n this.on('upload', function () {\n _this6.setState({\n error: null\n });\n });\n this.on('upload-started', function (file, upload) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n _this6.setFileState(file.id, {\n progress: {\n uploadStarted: Date.now(),\n uploadComplete: false,\n percentage: 0,\n bytesUploaded: 0,\n bytesTotal: file.size\n }\n });\n });\n this.on('upload-progress', this._calculateProgress);\n this.on('upload-success', function (file, uploadResp) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n var currentProgress = _this6.getFile(file.id).progress;\n\n _this6.setFileState(file.id, {\n progress: _extends({}, currentProgress, {\n uploadComplete: true,\n percentage: 100,\n bytesUploaded: currentProgress.bytesTotal\n }),\n response: uploadResp,\n uploadURL: uploadResp.uploadURL,\n isPaused: false\n });\n\n _this6._calculateTotalProgress();\n });\n this.on('preprocess-progress', function (file, progress) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n _this6.setFileState(file.id, {\n progress: _extends({}, _this6.getFile(file.id).progress, {\n preprocess: progress\n })\n });\n });\n this.on('preprocess-complete', function (file) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n var files = _extends({}, _this6.getState().files);\n\n files[file.id] = _extends({}, files[file.id], {\n progress: _extends({}, files[file.id].progress)\n });\n delete files[file.id].progress.preprocess;\n\n _this6.setState({\n files: files\n });\n });\n this.on('postprocess-progress', function (file, progress) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n _this6.setFileState(file.id, {\n progress: _extends({}, _this6.getState().files[file.id].progress, {\n postprocess: progress\n })\n });\n });\n this.on('postprocess-complete', function (file) {\n if (!_this6.getFile(file.id)) {\n _this6.log(\"Not setting progress for a file that has been removed: \" + file.id);\n\n return;\n }\n\n var files = _extends({}, _this6.getState().files);\n\n files[file.id] = _extends({}, files[file.id], {\n progress: _extends({}, files[file.id].progress)\n });\n delete files[file.id].progress.postprocess; // TODO should we set some kind of `fullyComplete` property on the file object\n // so it's easier to see that the file is upload…fully complete…rather than\n // what we have to do now (`uploadComplete && !postprocess`)\n\n _this6.setState({\n files: files\n });\n });\n this.on('restored', function () {\n // Files may have changed--ensure progress is still accurate.\n _this6._calculateTotalProgress();\n }); // show informer if offline\n\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', function () {\n return _this6.updateOnlineStatus();\n });\n window.addEventListener('offline', function () {\n return _this6.updateOnlineStatus();\n });\n setTimeout(function () {\n return _this6.updateOnlineStatus();\n }, 3000);\n }\n };\n\n _proto.updateOnlineStatus = function updateOnlineStatus() {\n var online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n\n if (!online) {\n this.emit('is-offline');\n this.info(this.i18n('noInternetConnection'), 'error', 0);\n this.wasOffline = true;\n } else {\n this.emit('is-online');\n\n if (this.wasOffline) {\n this.emit('back-online');\n this.info(this.i18n('connectedToInternet'), 'success', 3000);\n this.wasOffline = false;\n }\n }\n };\n\n _proto.getID = function getID() {\n return this.opts.id;\n }\n /**\n * Registers a plugin with Core.\n *\n * @param {object} Plugin object\n * @param {object} [opts] object with options to be passed to Plugin\n * @returns {object} self for chaining\n */\n ;\n\n _proto.use = function use(Plugin, opts) {\n if (typeof Plugin !== 'function') {\n var msg = \"Expected a plugin class, but got \" + (Plugin === null ? 'null' : typeof Plugin) + \".\" + ' Please verify that the plugin was imported and spelled correctly.';\n throw new TypeError(msg);\n } // Instantiate\n\n\n var plugin = new Plugin(this, opts);\n var pluginId = plugin.id;\n this.plugins[plugin.type] = this.plugins[plugin.type] || [];\n\n if (!pluginId) {\n throw new Error('Your plugin must have an id');\n }\n\n if (!plugin.type) {\n throw new Error('Your plugin must have a type');\n }\n\n var existsPluginAlready = this.getPlugin(pluginId);\n\n if (existsPluginAlready) {\n var _msg = \"Already found a plugin named '\" + existsPluginAlready.id + \"'. \" + (\"Tried to use: '\" + pluginId + \"'.\\n\") + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n\n throw new Error(_msg);\n }\n\n if (Plugin.VERSION) {\n this.log(\"Using \" + pluginId + \" v\" + Plugin.VERSION);\n }\n\n this.plugins[plugin.type].push(plugin);\n plugin.install();\n return this;\n }\n /**\n * Find one Plugin by name.\n *\n * @param {string} id plugin id\n * @returns {object|boolean}\n */\n ;\n\n _proto.getPlugin = function getPlugin(id) {\n var foundPlugin = null;\n this.iteratePlugins(function (plugin) {\n if (plugin.id === id) {\n foundPlugin = plugin;\n return false;\n }\n });\n return foundPlugin;\n }\n /**\n * Iterate through all `use`d plugins.\n *\n * @param {Function} method that will be run on each plugin\n */\n ;\n\n _proto.iteratePlugins = function iteratePlugins(method) {\n var _this7 = this;\n\n Object.keys(this.plugins).forEach(function (pluginType) {\n _this7.plugins[pluginType].forEach(method);\n });\n }\n /**\n * Uninstall and remove a plugin.\n *\n * @param {object} instance The plugin instance to remove.\n */\n ;\n\n _proto.removePlugin = function removePlugin(instance) {\n this.log(\"Removing plugin \" + instance.id);\n this.emit('plugin-remove', instance);\n\n if (instance.uninstall) {\n instance.uninstall();\n }\n\n var list = this.plugins[instance.type].slice();\n var index = list.indexOf(instance);\n\n if (index !== -1) {\n list.splice(index, 1);\n this.plugins[instance.type] = list;\n }\n\n var updatedState = this.getState();\n delete updatedState.plugins[instance.id];\n this.setState(updatedState);\n }\n /**\n * Uninstall all plugins and close down this Uppy instance.\n */\n ;\n\n _proto.close = function close() {\n var _this8 = this;\n\n this.log(\"Closing Uppy instance \" + this.opts.id + \": removing all files and uninstalling plugins\");\n this.reset();\n\n this._storeUnsubscribe();\n\n this.iteratePlugins(function (plugin) {\n _this8.removePlugin(plugin);\n });\n }\n /**\n * Set info message in `state.info`, so that UI plugins like `Informer`\n * can display the message.\n *\n * @param {string | object} message Message to be displayed by the informer\n * @param {string} [type]\n * @param {number} [duration]\n */\n ;\n\n _proto.info = function info(message, type, duration) {\n if (type === void 0) {\n type = 'info';\n }\n\n if (duration === void 0) {\n duration = 3000;\n }\n\n var isComplexMessage = typeof message === 'object';\n this.setState({\n info: {\n isHidden: false,\n type: type,\n message: isComplexMessage ? message.message : message,\n details: isComplexMessage ? message.details : null\n }\n });\n this.emit('info-visible');\n clearTimeout(this.infoTimeoutID);\n\n if (duration === 0) {\n this.infoTimeoutID = undefined;\n return;\n } // hide the informer after `duration` milliseconds\n\n\n this.infoTimeoutID = setTimeout(this.hideInfo, duration);\n };\n\n _proto.hideInfo = function hideInfo() {\n var newInfo = _extends({}, this.getState().info, {\n isHidden: true\n });\n\n this.setState({\n info: newInfo\n });\n this.emit('info-hidden');\n }\n /**\n * Passes messages to a function, provided in `opts.logger`.\n * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n *\n * @param {string|object} message to log\n * @param {string} [type] optional `error` or `warning`\n */\n ;\n\n _proto.log = function log(message, type) {\n var logger = this.opts.logger;\n\n switch (type) {\n case 'error':\n logger.error(message);\n break;\n\n case 'warning':\n logger.warn(message);\n break;\n\n default:\n logger.debug(message);\n break;\n }\n }\n /**\n * Obsolete, event listeners are now added in the constructor.\n */\n ;\n\n _proto.run = function run() {\n this.log('Calling run() is no longer necessary.', 'warning');\n return this;\n }\n /**\n * Restore an upload by its ID.\n */\n ;\n\n _proto.restore = function restore(uploadID) {\n this.log(\"Core: attempting to restore upload \\\"\" + uploadID + \"\\\"\");\n\n if (!this.getState().currentUploads[uploadID]) {\n this._removeUpload(uploadID);\n\n return Promise.reject(new Error('Nonexistent upload'));\n }\n\n return this._runUpload(uploadID);\n }\n /**\n * Create an upload for a bunch of files.\n *\n * @param {Array} fileIDs File IDs to include in this upload.\n * @returns {string} ID of this upload.\n */\n ;\n\n _proto._createUpload = function _createUpload(fileIDs, opts) {\n var _extends4;\n\n if (opts === void 0) {\n opts = {};\n }\n\n var _opts = opts,\n _opts$forceAllowNewUp = _opts.forceAllowNewUpload,\n forceAllowNewUpload = _opts$forceAllowNewUp === void 0 ? false : _opts$forceAllowNewUp;\n\n var _this$getState6 = this.getState(),\n allowNewUpload = _this$getState6.allowNewUpload,\n currentUploads = _this$getState6.currentUploads;\n\n if (!allowNewUpload && !forceAllowNewUpload) {\n throw new Error('Cannot create a new upload: already uploading.');\n }\n\n var uploadID = cuid();\n this.emit('upload', {\n id: uploadID,\n fileIDs: fileIDs\n });\n this.setState({\n allowNewUpload: this.opts.allowMultipleUploads !== false,\n currentUploads: _extends({}, currentUploads, (_extends4 = {}, _extends4[uploadID] = {\n fileIDs: fileIDs,\n step: 0,\n result: {}\n }, _extends4))\n });\n return uploadID;\n };\n\n _proto._getUpload = function _getUpload(uploadID) {\n var _this$getState7 = this.getState(),\n currentUploads = _this$getState7.currentUploads;\n\n return currentUploads[uploadID];\n }\n /**\n * Add data to an upload's result object.\n *\n * @param {string} uploadID The ID of the upload.\n * @param {object} data Data properties to add to the result object.\n */\n ;\n\n _proto.addResultData = function addResultData(uploadID, data) {\n var _extends5;\n\n if (!this._getUpload(uploadID)) {\n this.log(\"Not setting result for an upload that has been removed: \" + uploadID);\n return;\n }\n\n var currentUploads = this.getState().currentUploads;\n\n var currentUpload = _extends({}, currentUploads[uploadID], {\n result: _extends({}, currentUploads[uploadID].result, data)\n });\n\n this.setState({\n currentUploads: _extends({}, currentUploads, (_extends5 = {}, _extends5[uploadID] = currentUpload, _extends5))\n });\n }\n /**\n * Remove an upload, eg. if it has been canceled or completed.\n *\n * @param {string} uploadID The ID of the upload.\n */\n ;\n\n _proto._removeUpload = function _removeUpload(uploadID) {\n var currentUploads = _extends({}, this.getState().currentUploads);\n\n delete currentUploads[uploadID];\n this.setState({\n currentUploads: currentUploads\n });\n }\n /**\n * Run an upload. This picks up where it left off in case the upload is being restored.\n *\n * @private\n */\n ;\n\n _proto._runUpload = function _runUpload(uploadID) {\n var _this9 = this;\n\n var uploadData = this.getState().currentUploads[uploadID];\n var restoreStep = uploadData.step;\n var steps = [].concat(this.preProcessors, this.uploaders, this.postProcessors);\n var lastStep = Promise.resolve();\n steps.forEach(function (fn, step) {\n // Skip this step if we are restoring and have already completed this step before.\n if (step < restoreStep) {\n return;\n }\n\n lastStep = lastStep.then(function () {\n var _extends6;\n\n var _this9$getState = _this9.getState(),\n currentUploads = _this9$getState.currentUploads;\n\n var currentUpload = currentUploads[uploadID];\n\n if (!currentUpload) {\n return;\n }\n\n var updatedUpload = _extends({}, currentUpload, {\n step: step\n });\n\n _this9.setState({\n currentUploads: _extends({}, currentUploads, (_extends6 = {}, _extends6[uploadID] = updatedUpload, _extends6))\n }); // TODO give this the `updatedUpload` object as its only parameter maybe?\n // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n\n\n return fn(updatedUpload.fileIDs, uploadID);\n }).then(function (result) {\n return null;\n });\n }); // Not returning the `catch`ed promise, because we still want to return a rejected\n // promise from this method if the upload failed.\n\n lastStep.catch(function (err) {\n _this9.emit('error', err, uploadID);\n\n _this9._removeUpload(uploadID);\n });\n return lastStep.then(function () {\n // Set result data.\n var _this9$getState2 = _this9.getState(),\n currentUploads = _this9$getState2.currentUploads;\n\n var currentUpload = currentUploads[uploadID];\n\n if (!currentUpload) {\n return;\n }\n\n var files = currentUpload.fileIDs.map(function (fileID) {\n return _this9.getFile(fileID);\n });\n var successful = files.filter(function (file) {\n return !file.error;\n });\n var failed = files.filter(function (file) {\n return file.error;\n });\n\n _this9.addResultData(uploadID, {\n successful: successful,\n failed: failed,\n uploadID: uploadID\n });\n }).then(function () {\n // Emit completion events.\n // This is in a separate function so that the `currentUploads` variable\n // always refers to the latest state. In the handler right above it refers\n // to an outdated object without the `.result` property.\n var _this9$getState3 = _this9.getState(),\n currentUploads = _this9$getState3.currentUploads;\n\n if (!currentUploads[uploadID]) {\n return;\n }\n\n var currentUpload = currentUploads[uploadID];\n var result = currentUpload.result;\n\n _this9.emit('complete', result);\n\n _this9._removeUpload(uploadID);\n\n return result;\n }).then(function (result) {\n if (result == null) {\n _this9.log(\"Not setting result for an upload that has been removed: \" + uploadID);\n }\n\n return result;\n });\n }\n /**\n * Start an upload for all the files that are not currently being uploaded.\n *\n * @returns {Promise}\n */\n ;\n\n _proto.upload = function upload() {\n var _this10 = this;\n\n if (!this.plugins.uploader) {\n this.log('No uploader type plugins are used', 'warning');\n }\n\n var files = this.getState().files;\n var onBeforeUploadResult = this.opts.onBeforeUpload(files);\n\n if (onBeforeUploadResult === false) {\n return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n }\n\n if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n files = onBeforeUploadResult; // Updating files in state, because uploader plugins receive file IDs,\n // and then fetch the actual file object from state\n\n this.setState({\n files: files\n });\n }\n\n return Promise.resolve().then(function () {\n return _this10._checkMinNumberOfFiles(files);\n }).catch(function (err) {\n _this10._showOrLogErrorAndThrow(err);\n }).then(function () {\n var _this10$getState = _this10.getState(),\n currentUploads = _this10$getState.currentUploads; // get a list of files that are currently assigned to uploads\n\n\n var currentlyUploadingFiles = Object.keys(currentUploads).reduce(function (prev, curr) {\n return prev.concat(currentUploads[curr].fileIDs);\n }, []);\n var waitingFileIDs = [];\n Object.keys(files).forEach(function (fileID) {\n var file = _this10.getFile(fileID); // if the file hasn't started uploading and hasn't already been assigned to an upload..\n\n\n if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n waitingFileIDs.push(file.id);\n }\n });\n\n var uploadID = _this10._createUpload(waitingFileIDs);\n\n return _this10._runUpload(uploadID);\n }).catch(function (err) {\n _this10._showOrLogErrorAndThrow(err, {\n showInformer: false\n });\n });\n };\n\n _createClass(Uppy, [{\n key: \"state\",\n get: function get() {\n return this.getState();\n }\n }]);\n\n return Uppy;\n}();\n\nUppy.VERSION = \"1.10.5\";\n\nmodule.exports = function (opts) {\n return new Uppy(opts);\n}; // Expose class constructor.\n\n\nmodule.exports.Uppy = Uppy;\nmodule.exports.Plugin = Plugin;\nmodule.exports.debugLogger = debugLogger;","import _ from 'underscore';\r\n\r\nexport default {\r\n fnAjaxRequest: function(\r\n ajaxURL,\r\n ajaxReqMethod,\r\n ajaxReqData,\r\n onSuccess,\r\n onError\r\n ) {\r\n try {\r\n $.ajax({\r\n type: ajaxReqMethod,\r\n url: ajaxURL,\r\n data: ajaxReqData,\r\n success: onSuccess,\r\n error: onError,\r\n contentType: 'application/x-www-form-urlencoded'\r\n });\r\n } catch (ex) {\r\n // console.log('a')\r\n }\r\n },\r\n\r\n ShowVSAlert: function(type, message) {\r\n var alertType = type || 'info';\r\n var alertMessage = message || '';\r\n $('.warning-icon').addClass('hide');\r\n $('.error-icon').addClass('hide');\r\n $('.success-icon').addClass('hide');\r\n if (alertType == 'info') {\r\n $('.warning-icon').removeClass('hide');\r\n } else if (alertType == 'error') {\r\n $('.error-icon').removeClass('hide');\r\n } else {\r\n $('.success-icon').removeClass('hide');\r\n }\r\n $('.alert-body .alert-text').html(alertMessage);\r\n $('.vsCodeAlert').fadeIn(function() {\r\n setTimeout(() => {\r\n $('.vsCodeAlert').fadeOut();\r\n }, 3000);\r\n });\r\n },\r\n\r\n merge_object_arrays: function(arr1, arr2, match) {\r\n return _.union(\r\n _.map(arr1, function(obj1) {\r\n var same = _.find(arr2, function(obj2) {\r\n return obj1[match] === obj2[match];\r\n });\r\n return same ? _.extend(obj1, same) : obj1;\r\n }),\r\n _.reject(arr2, function(obj2) {\r\n return _.find(arr1, function(obj1) {\r\n return obj2[match] === obj1[match];\r\n });\r\n })\r\n );\r\n },\r\n\r\n showLoader: function() {\r\n $('.component-loader').removeClass('hide');\r\n },\r\n\r\n hideLoader: function() {\r\n $('.studio-loader').hide();\r\n $('.component-loader').addClass('hide');\r\n }\r\n};\r\n","module.exports = require(\"regenerator-runtime\");\n","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","import Backbone from 'backbone';\r\n\r\nconst TYPE_CLASS = 1;\r\nconst TYPE_ID = 2;\r\n\r\nconst Selector = Backbone.Model.extend(\r\n {\r\n idAttribute: 'name',\r\n\r\n defaults: {\r\n name: '',\r\n\r\n label: '',\r\n\r\n // Type of the selector\r\n type: TYPE_CLASS,\r\n\r\n // If not active it's not selectable by the style manager (uncheckboxed)\r\n active: true,\r\n\r\n // Can't be seen by the style manager, therefore even by the user\r\n // Will be rendered only in export code\r\n private: false,\r\n\r\n // If true, can't be removed from the attacched element\r\n protected: false\r\n },\r\n\r\n initialize(props, opts = {}) {\r\n const { config = {} } = opts;\r\n const name = this.get('name');\r\n const label = this.get('label');\r\n\r\n if (!name) {\r\n this.set('name', label);\r\n } else if (!label) {\r\n this.set('label', name);\r\n }\r\n\r\n const namePreEsc = this.get('name');\r\n const { escapeName } = config;\r\n const nameEsc = escapeName\r\n ? escapeName(namePreEsc)\r\n : Selector.escapeName(namePreEsc);\r\n this.set('name', nameEsc);\r\n },\r\n\r\n /**\r\n * Get full selector name\r\n * @return {string}\r\n */\r\n getFullName() {\r\n let init = '';\r\n\r\n switch (this.get('type')) {\r\n case TYPE_CLASS:\r\n init = '.';\r\n break;\r\n case TYPE_ID:\r\n init = '#';\r\n break;\r\n }\r\n\r\n return init + this.get('name');\r\n }\r\n },\r\n {\r\n // All type selectors: https://developer.mozilla.org/it/docs/Web/CSS/CSS_Selectors\r\n // Here I define only what I need\r\n TYPE_CLASS,\r\n\r\n TYPE_ID,\r\n\r\n /**\r\n * Escape string\r\n * @param {string} name\r\n * @return {string}\r\n * @private\r\n */\r\n escapeName(name) {\r\n return `${name}`.trim().replace(/([^a-z0-9\\w-\\:]+)/gi, '-');\r\n }\r\n }\r\n);\r\n\r\nexport default Selector;\r\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","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.em = o.em;\r\n this.model = o.model;\r\n this.parent = o.parent;\r\n },\r\n\r\n events: {\r\n 'click .item': 'itemClicked',\r\n 'click i': 'deleteState'\r\n },\r\n\r\n template(name) {\r\n return `
${name}
`;\r\n },\r\n\r\n deleteState(e) {\r\n if (!this.model.get('isActive')) {\r\n this.parent.trigger('stateDeleted', this.model);\r\n this.$el.remove();\r\n }\r\n },\r\n\r\n itemClicked(e) {\r\n this.model.collection.resetToDefault();\r\n this.model.set('isActive', true);\r\n this.parent.trigger('stateSelected', this.model);\r\n this.model.startRecordingState();\r\n },\r\n\r\n render() {\r\n this.$el.addClass('item-wrapper');\r\n this.$el.append(this.template(this.model.get('name')));\r\n this.$el.append(``);\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport DropdonItem from './DropdownItem';\r\nimport States from '../model/States';\r\nimport config from '../config/config';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.collection = o.collection;\r\n this.em = o.em;\r\n this.GConfig = o.GConfig;\r\n this.on('stateSelected', this.stateSelected);\r\n this.on('stateDeleted', this.stateDeleted);\r\n },\r\n\r\n events: {\r\n 'click .state_dropdown .value': 'dropdownClicked',\r\n 'click .state_dropdown .btn': 'resetState',\r\n 'click .state_dropdown .dd-add-state': 'addState'\r\n },\r\n\r\n template() {\r\n return `
\r\n
\r\n
Please select state..
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Save
`;\r\n },\r\n\r\n stateDeleted(model) {\r\n var sel = this.em.getSelected();\r\n var cssc = this.em.CssComposer;\r\n var className = model.get('className');\r\n this.collection.remove(model);\r\n cssc.getAll().remove(cssc.getRule('.' + className + '#' + sel.getId()));\r\n sel.set('statesCollection', this.collection.toJSON());\r\n },\r\n\r\n stateSelected(model) {\r\n this.$el.find('.value').text(model.get('name'));\r\n this.$el.find('.state_menu').addClass('hide');\r\n model.get('className')\r\n ? this.$el.find('.btn.green').removeClass('hide')\r\n : this.$el.find('.btn.green').addClass('hide');\r\n },\r\n\r\n resetState() {\r\n this.$el\r\n .find('.state_menu .item-wrapper:first-child .item')\r\n .trigger('click');\r\n this.$el.find('.btn.green').addClass('hide');\r\n },\r\n\r\n dropdownClicked(e) {\r\n this.$el.find('.state_menu').toggleClass('hide');\r\n },\r\n\r\n addState() {\r\n this.$el.find('.input-btn-wrp.dd').addClass('hide');\r\n this.$el.find('.add_state').removeClass('hide');\r\n },\r\n\r\n addToCollection(model, fragmentEl) {\r\n var fragment = fragmentEl || null;\r\n var viewObject = DropdonItem;\r\n var view = new viewObject({\r\n model,\r\n parent: this,\r\n em: this.em\r\n });\r\n var rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.find('.state_menu').append(rendered);\r\n }\r\n return rendered;\r\n },\r\n\r\n render() {\r\n var fragment = document.createDocumentFragment();\r\n this.$el.empty();\r\n this.collection.each(function(model) {\r\n this.addToCollection(model, fragment);\r\n }, this);\r\n this.$el.addClass('state_dropdown');\r\n this.$el.append(this.template());\r\n this.$el.find('.state_menu').append(fragment);\r\n this.resetState();\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport State from './State';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: State,\r\n resetToDefault() {\r\n this.each(function(model) {\r\n if (model.get('isActive')) {\r\n model.stopRecordingState();\r\n }\r\n model.set('isActive', false, { silent: 1 });\r\n });\r\n }\r\n});\r\n","export default {\r\n states: [\r\n {\r\n id: '',\r\n name: 'None',\r\n className: '',\r\n icon: 'hide',\r\n isActive: true\r\n },\r\n {\r\n id: 'isSelected',\r\n name: 'selected',\r\n className: 'isSelected',\r\n icon: 'hide'\r\n }\r\n ],\r\n defaultstates: ['selected']\r\n};\r\n","import Backbone from 'backbone';\r\nimport StateDropdown from './StateDropdown';\r\nimport States from '../model/States';\r\nimport State from '../model/State';\r\nimport config from '../config/config';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.em = o.em;\r\n this.GConfig = o.GConfig;\r\n this.config = config;\r\n this.statesCollection = new States(this.config.states);\r\n this.stateDropdown = new StateDropdown({\r\n collection: this.statesCollection,\r\n em: o.em,\r\n GConfig: o.GConfig\r\n });\r\n this.em.on('component:selected', this.blockChanged.bind(this));\r\n },\r\n\r\n events: {\r\n 'click .heading': 'openState',\r\n 'click .add_state .right-btn': 'addState',\r\n 'focusout .block_name input': 'setBlockName'\r\n },\r\n\r\n blockChanged(model) {\r\n //set block name\r\n var blockName = model.get('blockName');\r\n if (blockName) {\r\n this.enableState();\r\n this.$el.find('.block_name input').val(blockName);\r\n } else {\r\n this.disableState();\r\n this.$el.find('.block_name input').val('');\r\n }\r\n\r\n // set states\r\n var states = this.em.getSelected().get('statesCollection');\r\n if (states) {\r\n this.statesCollection.reset(states);\r\n } else {\r\n this.statesCollection.reset(this.config.states);\r\n this.em\r\n .getSelected()\r\n .set('statesCollection', this.statesCollection.toJSON());\r\n }\r\n this.stateDropdown.render();\r\n },\r\n\r\n disableState() {\r\n this.$el.find('.state_selector').addClass('disabled');\r\n this.$el.find('.add_state').addClass('disabled');\r\n },\r\n\r\n enableState() {\r\n this.$el.find('.state_selector').removeClass('disabled');\r\n this.$el.find('.add_state').removeClass('disabled');\r\n },\r\n\r\n openState(e) {\r\n let $icon = this.$el.find('.heading i');\r\n if ($icon.hasClass('fa-caret-right')) {\r\n $icon.attr('class', 'fa fa-caret-down');\r\n this.$el.find('.state_wrapper').removeClass('hide');\r\n } else {\r\n $icon.attr('class', 'fa fa-caret-right');\r\n this.$el.find('.state_wrapper').addClass('hide');\r\n }\r\n },\r\n\r\n addState(e) {\r\n var $stateInput = this.$el.find('.add_state input');\r\n var stateName = $stateInput.val();\r\n if (stateName) {\r\n console.log(stateName);\r\n var unique = stateName.replace(/ /g, '_').trim();\r\n var obj = {\r\n id: unique,\r\n name: stateName,\r\n className: 'dhq_state_' + unique\r\n };\r\n this.statesCollection.add(obj);\r\n this.em\r\n .getSelected()\r\n .set('statesCollection', this.statesCollection.toJSON());\r\n this.stateDropdown.render();\r\n $stateInput.val('');\r\n }\r\n },\r\n\r\n setBlockName(e) {\r\n var blockName = e.target.value;\r\n this.em.getSelected().set('blockName', blockName);\r\n blockName ? this.enableState() : this.disableState();\r\n },\r\n\r\n template() {\r\n return `
\r\n States\r\n
\r\n
\r\n
\r\n
Block name
\r\n
\r\n
\r\n
\r\n
Select state
\r\n
\r\n
\r\n
\r\n
`;\r\n },\r\n\r\n render() {\r\n this.$el.empty();\r\n this.$el.addClass('gjs-stm-sector gjs-one-bg gjs-two-color');\r\n this.$el.append(this.template());\r\n this.$el.find('.state_selector').append(this.stateDropdown.render().$el);\r\n return this;\r\n }\r\n});\r\n","import StateView from './view/StateView';\r\nimport config from './config/config';\r\nimport GConfig from '../../config/config';\r\n\r\n/**\r\n * initialize the components with states.\r\n * @param {editor} em\r\n * @param {states array stored in db} states\r\n */\r\nfunction initialize(em, states) {\r\n if (states) {\r\n if (typeof states == 'string') {\r\n states = JSON.parse(states);\r\n }\r\n for (var blockName in states) {\r\n var statesObj = states[blockName]; // states of each block\r\n var statesCollection = [];\r\n var blockID = '';\r\n for (var state in statesObj) {\r\n var className = statesObj[state].className;\r\n blockID = statesObj[state].selector;\r\n if (config.defaultstates.indexOf(state) == -1) {\r\n var obj = {\r\n id: className,\r\n name: state,\r\n className: className\r\n };\r\n statesCollection.push(obj);\r\n }\r\n }\r\n em.Config.blockWithStates.push(blockID);\r\n statesCollection = config.states.concat(statesCollection);\r\n var component = em.DomComponents.componentsById[blockID];\r\n component.set('statesCollection', statesCollection);\r\n component.set('blockName', blockName);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * return the state view object to append in style manager view.\r\n * @param {editor} em\r\n */\r\nfunction getStateView(em) {\r\n var stateView = new StateView({ em: em, GConfig: GConfig });\r\n return stateView.render();\r\n}\r\n\r\n/**\r\n * returns the state json for get studio state\r\n * @param {Editor object} em\r\n * */\r\nfunction getStudioStateJSON(em) {\r\n return getJson(em, em.Config.blockWithStates);\r\n}\r\n\r\n/**\r\n * get states json\r\n * @param {editor} em\r\n * @param {array of blockid which has states} componentsid\r\n */\r\nfunction getJson(em, componentsid) {\r\n var StudioStates = {};\r\n componentsid.forEach(function(block_id) {\r\n var component = em.DomComponents.componentsById[block_id];\r\n if (component) {\r\n var states = component.get('statesCollection').filter(function(state) {\r\n return state.id != '';\r\n });\r\n var obj = {};\r\n var block_name = component.get('blockName') || component.getId();\r\n states.forEach(\r\n function(state) {\r\n this.obj[state.name] = {\r\n className: state.className,\r\n selector: this.component.getId()\r\n };\r\n },\r\n { component, obj }\r\n );\r\n StudioStates[block_name] = obj;\r\n }\r\n });\r\n return StudioStates;\r\n}\r\n\r\nexport default {\r\n init: initialize,\r\n getStateView: getStateView,\r\n stateJson: getStudioStateJSON\r\n};\r\n","'use strict';\n/**\n * Manages communications with Companion\n */\n\nvar RequestClient = require('./RequestClient');\n\nvar Provider = require('./Provider');\n\nvar Socket = require('./Socket');\n\nmodule.exports = {\n RequestClient: RequestClient,\n Provider: Provider,\n Socket: Socket\n};","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","import { filter } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport Selector from './Selector';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Selector,\r\n\r\n modelId: attr => `${attr.name}_${attr.type || Selector.TYPE_CLASS}`,\r\n\r\n getStyleable() {\r\n return filter(\r\n this.models,\r\n item => item.get('active') && !item.get('private')\r\n );\r\n },\r\n\r\n getValid() {\r\n return filter(this.models, item => !item.get('private'));\r\n },\r\n\r\n getFullString(collection) {\r\n const result = [];\r\n const coll = collection || this;\r\n coll.forEach(selector => result.push(selector.getFullName()));\r\n return result.join('').trim();\r\n }\r\n});\r\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';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","function _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 has = require('./hasProperty');\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\n\nmodule.exports = /*#__PURE__*/function () {\n /**\n * @param {object|Array} locales - locale or list of locales.\n */\n function Translator(locales) {\n var _this = this;\n\n this.locale = {\n strings: {},\n pluralize: function pluralize(n) {\n if (n === 1) {\n return 0;\n }\n\n return 1;\n }\n };\n\n if (Array.isArray(locales)) {\n locales.forEach(function (locale) {\n return _this._apply(locale);\n });\n } else {\n this._apply(locales);\n }\n }\n\n var _proto = Translator.prototype;\n\n _proto._apply = function _apply(locale) {\n if (!locale || !locale.strings) {\n return;\n }\n\n var prevLocale = this.locale;\n this.locale = _extends({}, prevLocale, {\n strings: _extends({}, prevLocale.strings, locale.strings)\n });\n this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n }\n /**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param {string} phrase that needs interpolation, with placeholders\n * @param {object} options with values that will be used to replace placeholders\n * @returns {string} interpolated\n */\n ;\n\n _proto.interpolate = function interpolate(phrase, options) {\n var _String$prototype = String.prototype,\n split = _String$prototype.split,\n replace = _String$prototype.replace;\n var dollarRegex = /\\$/g;\n var dollarBillsYall = '$$$$';\n var interpolated = [phrase];\n\n for (var arg in options) {\n if (arg !== '_' && has(options, arg)) {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n var replacement = options[arg];\n\n if (typeof replacement === 'string') {\n replacement = replace.call(options[arg], dollarRegex, dollarBillsYall);\n } // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n\n\n interpolated = insertReplacement(interpolated, new RegExp('%\\\\{' + arg + '\\\\}', 'g'), replacement);\n }\n }\n\n return interpolated;\n\n function insertReplacement(source, rx, replacement) {\n var newParts = [];\n source.forEach(function (chunk) {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we’d get this: [object Object] hello [object Object] my \r\n
\r\n \r\n `;\r\n },\r\n\r\n init() {\r\n const model = this.model;\r\n const pfx = this.pfx;\r\n model.set('stackIndex', null);\r\n this.events[`click [data-add-layer]`] = 'addLayer';\r\n this.listenTo(model, 'change:stackIndex', this.indexChanged);\r\n this.listenTo(model, 'updateValue', this.inputValueChanged);\r\n this.delegateEvents();\r\n },\r\n\r\n clear(e) {\r\n e && e.stopPropagation();\r\n this.model.get('layers').reset();\r\n this.model.clearValue();\r\n this.targetUpdated();\r\n },\r\n\r\n /**\r\n * Fired when the target is updated.\r\n * With detached mode the component will be always empty as its value\r\n * so we gonna check all props and find if it has any difference\r\n * */\r\n targetUpdated(...args) {\r\n if (!this.model.get('detached')) {\r\n PropertyCompositeView.prototype.targetUpdated.apply(this, args);\r\n } else {\r\n this.checkVisibility();\r\n }\r\n\r\n this.refreshLayers();\r\n },\r\n\r\n /**\r\n * Returns the collection of layers\r\n * @return {Collection}\r\n */\r\n getLayers() {\r\n return this.model.get('layers');\r\n },\r\n\r\n /**\r\n * Triggered when another layer has been selected.\r\n * This allow to move all rendered properties to a new\r\n * selected layer\r\n * @param {Event}\r\n *\r\n * @return {Object}\r\n * */\r\n indexChanged(e) {\r\n const model = this.model;\r\n this.getLayers().active(model.get('stackIndex'));\r\n },\r\n\r\n addLayer() {\r\n const model = this.model;\r\n const layers = this.getLayers();\r\n const properties = model.get('properties').deepClone();\r\n properties.each(property => property.set('value', ''));\r\n const layer = layers.add({ properties });\r\n\r\n // In detached mode inputValueChanged will add new 'layer value'\r\n // to all subprops\r\n this.inputValueChanged();\r\n\r\n // This will set subprops with a new default values\r\n model.set('stackIndex', layers.indexOf(layer));\r\n },\r\n\r\n inputValueChanged() {\r\n const model = this.model;\r\n this.elementUpdated();\r\n\r\n // If not detached I'll just put all the values from layers to property\r\n // eg. background: layer1Value, layer2Value, layer3Value, ...\r\n if (!model.get('detached')) {\r\n model.set('value', this.getLayerValues());\r\n } else {\r\n model.get('properties').each(prop => prop.trigger('change:value'));\r\n }\r\n },\r\n\r\n /**\r\n * There is no need to handle input update by the property itself,\r\n * this will be done by layers\r\n * @private\r\n */\r\n setValue() {},\r\n\r\n /**\r\n * Create value by layers\r\n * @return string\r\n * */\r\n getLayerValues() {\r\n return this.getLayers().getFullValue();\r\n },\r\n\r\n /**\r\n * Refresh layers\r\n * */\r\n refreshLayers() {\r\n let layersObj = [];\r\n const model = this.model;\r\n const layers = this.getLayers();\r\n const detached = model.get('detached');\r\n const target = this.getTarget();\r\n\r\n // With detached layers values will be assigned to their properties\r\n if (detached) {\r\n const style = target ? target.getStyle() : {};\r\n layersObj = layers.getLayersFromStyle(style);\r\n } else {\r\n let value = this.getTargetValue();\r\n value = value == model.getDefaultValue() ? '' : value;\r\n layersObj = layers.getLayersFromValue(value);\r\n }\r\n\r\n const toAdd = model.getLayersFromTarget(target) || layersObj;\r\n layers.reset();\r\n layers.add(toAdd);\r\n model.set({ stackIndex: null }, { silent: true });\r\n },\r\n\r\n onRender() {\r\n const self = this;\r\n const model = this.model;\r\n const fieldEl = this.el.querySelector('[data-layers-wrapper]');\r\n const PropertiesView = require('./PropertiesView').default;\r\n const propsConfig = {\r\n target: this.target,\r\n propTarget: this.propTarget,\r\n\r\n // Things to do when a single sub-property is changed\r\n onChange(el, view, opt) {\r\n const subModel = view.model;\r\n\r\n if (model.get('detached')) {\r\n const subProp = subModel.get('property');\r\n const values = self.getLayers().getPropertyValues(subProp);\r\n view.updateTargetStyle(values, null, opt);\r\n } else {\r\n model.set('value', model.getFullValue(), opt);\r\n }\r\n }\r\n };\r\n const layers = new LayersView({\r\n collection: this.getLayers(),\r\n stackModel: model,\r\n preview: model.get('preview'),\r\n config: this.config,\r\n propsConfig\r\n }).render().el;\r\n\r\n // Will use it to propogate changes\r\n new PropertiesView({\r\n target: this.target,\r\n collection: this.model.get('properties'),\r\n stackModel: model,\r\n config: this.config,\r\n onChange: propsConfig.onChange,\r\n propTarget: propsConfig.propTarget,\r\n customValue: propsConfig.customValue\r\n }).render();\r\n\r\n //model.get('properties')\r\n fieldEl.appendChild(layers);\r\n }\r\n});\r\n","import { isString } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport PropertyView from './PropertyView';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default PropertyView.extend({\r\n templateInput() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const assetsLabel = this.config.assetsLabel || 'Images';\r\n return `\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n },\r\n\r\n init() {\r\n const em = this.em;\r\n this.modal = em.get('Modal');\r\n this.am = em.get('AssetManager');\r\n this.events['click #' + this.pfx + 'close'] = 'removeFile';\r\n this.events['click #' + this.pfx + 'images'] = 'openAssetManager';\r\n this.delegateEvents();\r\n },\r\n\r\n onRender() {\r\n if (!this.$input) {\r\n const plh = this.model.getDefaultValue();\r\n this.$input = $(``);\r\n }\r\n\r\n if (!this.$preview) {\r\n this.$preview = this.$el.find('#' + this.pfx + 'preview-file');\r\n }\r\n\r\n if (!this.$previewBox) {\r\n this.$previewBox = this.$el.find('#' + this.pfx + 'preview-box');\r\n }\r\n\r\n this.setValue(this.componentValue, 0);\r\n },\r\n\r\n clearCached() {\r\n PropertyView.prototype.clearCached.apply(this, arguments);\r\n this.$preview = null;\r\n this.$previewBox = null;\r\n },\r\n\r\n setValue(value, f) {\r\n PropertyView.prototype.setValue.apply(this, arguments);\r\n this.setPreviewView(value && value != this.model.getDefaultValue());\r\n this.setPreview(value);\r\n },\r\n\r\n /**\r\n * Change visibility of the preview box\r\n * @param bool Visibility\r\n *\r\n * @return void\r\n * */\r\n setPreviewView(v) {\r\n const pv = this.$previewBox;\r\n pv && pv[v ? 'addClass' : 'removeClass'](`${this.pfx}show`);\r\n },\r\n\r\n /**\r\n * Spread url\r\n * @param string Url\r\n *\r\n * @return void\r\n * */\r\n spreadUrl(url) {\r\n this.model.set('value', url);\r\n this.setPreviewView(1);\r\n },\r\n\r\n /**\r\n * Shows file preview\r\n * @param string Value\r\n * */\r\n setPreview(value) {\r\n const preview = this.$preview;\r\n value = value && value.indexOf('url(') < 0 ? `url(${value})` : value;\r\n preview && preview.css('background-image', value);\r\n },\r\n\r\n /** @inheritdoc */\r\n cleanValue() {\r\n this.setPreviewView(0);\r\n this.model.set({ value: '' }, { silent: true });\r\n },\r\n\r\n /**\r\n * Remove file from input\r\n *\r\n * @return void\r\n * */\r\n removeFile(...args) {\r\n this.model.set('value', this.model.getDefaultValue());\r\n PropertyView.prototype.cleanValue.apply(this, args);\r\n this.setPreviewView(0);\r\n },\r\n\r\n /**\r\n * Open dialog for image selecting\r\n * @param {Object} e Event\r\n *\r\n * @return void\r\n * */\r\n openAssetManager(e) {\r\n const { em, modal } = this;\r\n const editor = em ? em.get('Editor') : '';\r\n\r\n if (editor) {\r\n editor.runCommand('open-assets', {\r\n types: ['image'],\r\n accept: 'image/*',\r\n target: this.getTargetModel(),\r\n onClick() {},\r\n onDblClick() {},\r\n onSelect: asset => {\r\n modal.close();\r\n const url = isString(asset) ? asset : asset.get('src');\r\n this.spreadUrl(url);\r\n }\r\n });\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport PropertyView from './PropertyView';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default PropertyView.extend({\r\n templateInput() {\r\n return '';\r\n },\r\n\r\n init() {\r\n const model = this.model;\r\n this.listenTo(model, 'change:unit', this.modelValueChanged);\r\n this.listenTo(model, 'el:change', this.elementUpdated);\r\n this.listenTo(model, 'change:units', this.render);\r\n },\r\n\r\n setValue(value) {\r\n const parsed = this.model.parseValue(value);\r\n value = `${parsed.value}${parsed.unit}`;\r\n this.inputInst.setValue(value, { silent: 1 });\r\n },\r\n\r\n onRender() {\r\n const ppfx = this.ppfx;\r\n\r\n if (!this.input) {\r\n const input = this.model.input;\r\n input.ppfx = ppfx;\r\n input.render();\r\n const fields = this.el.querySelector(`.${ppfx}fields`);\r\n fields.appendChild(input.el);\r\n this.$input = input.inputEl;\r\n this.unit = input.unitEl;\r\n this.$unit = $(this.unit);\r\n this.input = this.$input.get(0);\r\n this.inputInst = input;\r\n }\r\n },\r\n\r\n clearCached() {\r\n PropertyView.prototype.clearCached.apply(this, arguments);\r\n this.unit = null;\r\n this.$unit = null;\r\n }\r\n});\r\n","import PropertyIntegerView from './PropertyIntegerView';\r\nimport InputColor from 'domain_abstract/ui/InputColor';\r\n\r\nexport default PropertyIntegerView.extend({\r\n setValue(value, opts = {}) {\r\n opts = { ...opts, silent: 1 };\r\n this.inputInst.setValue(value, opts);\r\n },\r\n\r\n onRender() {\r\n if (!this.input) {\r\n const ppfx = this.ppfx;\r\n const inputColor = new InputColor({\r\n target: this.target,\r\n model: this.model,\r\n ppfx\r\n });\r\n const input = inputColor.render();\r\n this.el.querySelector(`.${ppfx}fields`).appendChild(input.el);\r\n this.$input = input.inputEl;\r\n this.$color = input.colorEl;\r\n this.input = this.$input.get(0);\r\n this.inputInst = input;\r\n }\r\n }\r\n});\r\n","import Property from './Property';\r\n\r\nexport default Property.extend({\r\n defaults: () => ({\r\n ...Property.prototype.defaults,\r\n // Array of options, eg. [{name: 'Label ', value: '100'}]\r\n options: [],\r\n full: 1\r\n }),\r\n\r\n initialize(...args) {\r\n Property.prototype.initialize.apply(this, args);\r\n this.listenTo(this, 'change:options', this.onOptionChange);\r\n },\r\n\r\n onOptionChange() {\r\n this.set('list', this.get('options'));\r\n },\r\n\r\n getOptions() {\r\n const { options, list } = this.attributes;\r\n return options && options.length ? options : list;\r\n },\r\n\r\n setOptions(opts = []) {\r\n this.set('options', opts);\r\n return this;\r\n },\r\n\r\n addOption(opt) {\r\n if (opt) {\r\n const opts = this.getOptions();\r\n this.setOptions([...opts, opt]);\r\n }\r\n return this;\r\n }\r\n});\r\n","import Property from './PropertyRadio';\r\n\r\nexport default Property.extend({\r\n defaults: () => ({\r\n ...Property.prototype.defaults,\r\n full: 0\r\n })\r\n});\r\n","import Backbone from 'backbone';\r\nimport PropertyView from './PropertyView';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default PropertyView.extend({\r\n templateInput() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n return `\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n `;\r\n },\r\n\r\n initialize(...args) {\r\n PropertyView.prototype.initialize.apply(this, args);\r\n this.listenTo(this.model, 'change:options', this.updateOptions);\r\n },\r\n\r\n updateOptions() {\r\n this.input = null;\r\n this.onRender();\r\n },\r\n\r\n onRender() {\r\n var pfx = this.pfx;\r\n const options = this.model.getOptions();\r\n\r\n if (!this.input) {\r\n let optionsStr = '';\r\n\r\n options.forEach(option => {\r\n let name = option.name || option.value;\r\n let style = option.style ? option.style.replace(/\"/g, '"') : '';\r\n let styleAttr = style ? `style=\"${style}\"` : '';\r\n let value = option.value.replace(/\"/g, '"');\r\n optionsStr += ``;\r\n });\r\n\r\n const inputH = this.el.querySelector(`#${pfx}input-holder`);\r\n inputH.innerHTML = ``;\r\n this.input = inputH.firstChild;\r\n }\r\n }\r\n});\r\n","import { isUndefined } from 'underscore';\r\nimport Property from './Property';\r\nimport InputNumber from 'domain_abstract/ui/InputNumber';\r\n\r\nexport default Property.extend({\r\n defaults: {\r\n ...Property.prototype.defaults,\r\n // Array of units, eg. ['px', '%']\r\n units: [],\r\n\r\n // Selected unit, eg. 'px'\r\n unit: '',\r\n\r\n // Integer value steps\r\n step: 1,\r\n\r\n // Minimum value\r\n min: '',\r\n\r\n // Maximum value\r\n max: ''\r\n },\r\n\r\n init() {\r\n const unit = this.get('unit');\r\n const units = this.get('units');\r\n this.input = new InputNumber({ model: this });\r\n\r\n if (units.length && !unit) {\r\n this.set('unit', units[0]);\r\n }\r\n },\r\n\r\n clearValue(opts = {}) {\r\n this.set({ value: undefined, unit: undefined }, opts);\r\n return this;\r\n },\r\n\r\n parseValue(val) {\r\n const parsed = Property.prototype.parseValue.apply(this, arguments);\r\n const { value, unit } = this.input.validateInputValue(parsed.value, {\r\n deepCheck: 1\r\n });\r\n parsed.value = value;\r\n parsed.unit = unit;\r\n return parsed;\r\n },\r\n\r\n getFullValue() {\r\n let value = this.get('value');\r\n let unit = this.get('unit');\r\n value = !isUndefined(value) ? value : '';\r\n unit = !isUndefined(unit) && value ? unit : '';\r\n value = `${value}${unit}`;\r\n return Property.prototype.getFullValue.apply(this, [value]);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport PropertyView from './PropertyView';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default PropertyView.extend({\r\n templateInput() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n return `\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n `;\r\n },\r\n\r\n initialize(...args) {\r\n PropertyView.prototype.initialize.apply(this, args);\r\n this.listenTo(this.model, 'change:options', this.updateOptions);\r\n },\r\n\r\n updateOptions() {\r\n this.input = null;\r\n this.onRender();\r\n },\r\n\r\n onRender() {\r\n var pfx = this.pfx;\r\n const options = this.model.getOptions();\r\n\r\n if (!this.input) {\r\n let optionsStr = '';\r\n\r\n options.forEach(option => {\r\n let name = option.name || option.value;\r\n let style = option.style ? option.style.replace(/\"/g, '"') : '';\r\n let styleAttr = style ? `style=\"${style}\"` : '';\r\n let value = option.value.replace(/\"/g, '"');\r\n optionsStr += ``;\r\n });\r\n\r\n const inputH = this.el.querySelector(`#${pfx}input-holder`);\r\n inputH.innerHTML = ``;\r\n this.input = inputH.firstChild;\r\n }\r\n }\r\n});\r\n","import PropertyView from './PropertyView';\r\n\r\nexport default PropertyView.extend({\r\n templateInput() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n return `\r\n
\r\n
\r\n `;\r\n },\r\n\r\n onRender() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const itemCls = `${ppfx}radio-item-label`;\r\n const model = this.model;\r\n const prop = model.get('property');\r\n const options = model.get('list') || model.get('options') || [];\r\n\r\n if (!this.input) {\r\n if (options && options.length) {\r\n let inputStr = '';\r\n\r\n options.forEach(el => {\r\n let cl = el.className ? `${el.className} ${pfx}icon ${itemCls}` : '';\r\n let id = `${prop}-${el.value}`;\r\n let labelTxt = el.name || el.value;\r\n let titleAttr = el.title ? `title=\"${el.title}\"` : '';\r\n inputStr += `\r\n
\r\n \r\n \r\n
\r\n `;\r\n });\r\n\r\n const inputHld = this.el.querySelector(`.${ppfx}field`);\r\n inputHld.innerHTML = `
${inputStr}
`;\r\n this.input = inputHld.firstChild;\r\n }\r\n }\r\n },\r\n\r\n getInputValue() {\r\n const inputChk = this.getCheckedEl();\r\n return inputChk ? inputChk.value : '';\r\n },\r\n\r\n getCheckedEl() {\r\n const input = this.getInputEl();\r\n return input ? input.querySelector('input:checked') : '';\r\n },\r\n\r\n setValue(value) {\r\n const model = this.model;\r\n let val = value || model.get('value') || model.getDefaultValue();\r\n const input = this.getInputEl();\r\n const inputIn = input ? input.querySelector(`[value=\"${val}\"]`) : '';\r\n\r\n if (inputIn) {\r\n inputIn.checked = true;\r\n } else {\r\n const inputChk = this.getCheckedEl();\r\n inputChk && (inputChk.checked = false);\r\n }\r\n }\r\n});\r\n","import { isUndefined } from 'underscore';\r\nimport Property from './Property';\r\nimport InputNumber from 'domain_abstract/ui/InputNumber';\r\n\r\nexport default Property.extend({\r\n defaults: {\r\n ...Property.prototype.defaults,\r\n // Array of units, eg. ['px', '%']\r\n units: [],\r\n\r\n // Selected unit, eg. 'px'\r\n unit: '',\r\n\r\n // Integer value steps\r\n step: 1,\r\n\r\n // Minimum value\r\n min: '',\r\n\r\n // Maximum value\r\n max: ''\r\n },\r\n\r\n init() {\r\n const unit = this.get('unit');\r\n const units = this.get('units');\r\n this.input = new InputNumber({ model: this });\r\n\r\n if (units.length && !unit) {\r\n this.set('unit', units[0]);\r\n }\r\n },\r\n\r\n clearValue(opts = {}) {\r\n this.set({ value: undefined, unit: undefined }, opts);\r\n return this;\r\n },\r\n\r\n parseValue(val) {\r\n const parsed = Property.prototype.parseValue.apply(this, arguments);\r\n const { value, unit } = this.input.validateInputValue(parsed.value, {\r\n deepCheck: 1\r\n });\r\n parsed.value = value;\r\n parsed.unit = unit;\r\n return parsed;\r\n },\r\n\r\n getFullValue() {\r\n let value = this.get('value');\r\n let unit = this.get('unit');\r\n value = !isUndefined(value) ? value : '';\r\n unit = !isUndefined(unit) && value ? unit : '';\r\n value = `${value}${unit}`;\r\n return Property.prototype.getFullValue.apply(this, [value]);\r\n }\r\n});\r\n","import Property from './PropertyInteger';\r\n\r\nexport default Property.extend({\r\n defaults: {\r\n ...Property.prototype.defaults,\r\n showInput: 1\r\n }\r\n});\r\n","import Property from './PropertyIntegerView';\r\n\r\nexport default Property.extend({\r\n events() {\r\n return {\r\n ...Property.prototype.events,\r\n 'change [type=range]': 'inputValueChanged',\r\n 'input [type=range]': 'inputValueChangedSoft',\r\n change: ''\r\n };\r\n },\r\n\r\n templateInput(model) {\r\n const ppfx = this.ppfx;\r\n return `\r\n
\r\n \r\n
\r\n `;\r\n },\r\n\r\n getSliderEl() {\r\n if (!this.slider) {\r\n this.slider = this.el.querySelector('input[type=range]');\r\n }\r\n\r\n return this.slider;\r\n },\r\n\r\n inputValueChanged() {\r\n const model = this.model;\r\n const step = model.get('step');\r\n this.getInputEl().value = this.getSliderEl().value;\r\n const value = this.getInputValue() - step;\r\n model.set('value', value, { avoidStore: 1 }).set('value', value + step);\r\n this.elementUpdated();\r\n },\r\n\r\n inputValueChangedSoft() {\r\n this.getInputEl().value = this.getSliderEl().value;\r\n this.model.set('value', this.getInputValue(), { avoidStore: 1 });\r\n this.elementUpdated();\r\n },\r\n\r\n setValue(value) {\r\n const parsed = this.model.parseValue(value);\r\n this.getSliderEl().value = parseFloat(parsed.value);\r\n Property.prototype.setValue.apply(this, arguments);\r\n },\r\n\r\n onRender() {\r\n Property.prototype.onRender.apply(this, arguments);\r\n\r\n if (!this.model.get('showInput')) {\r\n this.inputInst.el.style.display = 'none';\r\n }\r\n },\r\n\r\n clearCached() {\r\n Property.prototype.clearCached.apply(this, arguments);\r\n this.slider = null;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport TypeableCollection from 'domain_abstract/model/TypeableCollection';\r\nimport Property from './Property';\r\nimport PropertyStack from './PropertyStack';\r\nimport PropertyStackView from './../view/PropertyStackView';\r\nimport PropertyComposite from './PropertyComposite';\r\nimport PropertyCompositeView from './../view/PropertyCompositeView';\r\nimport PropertyFileView from './../view/PropertyFileView';\r\nimport PropertyColorView from './../view/PropertyColorView';\r\nimport PropertySelect from './PropertySelect';\r\nimport PropertySelectView from './../view/PropertySelectView';\r\nimport PropertyDropdown from './PropertyDropdownFull';\r\nimport PropertyDropdownView from './../view/PropertyDropdownFullView';\r\nimport PropertyRadio from './PropertyRadio';\r\nimport PropertyRadioView from './../view/PropertyRadioView';\r\nimport PropertySlider from './PropertySlider';\r\nimport PropertySliderView from './../view/PropertySliderView';\r\nimport PropertyInteger from './PropertyInteger';\r\nimport PropertyIntegerView from './../view/PropertyIntegerView';\r\nimport PropertyView from './../view/PropertyView';\r\n\r\nexport default Backbone.Collection.extend(TypeableCollection).extend({\r\n types: [\r\n {\r\n id: 'stack',\r\n model: PropertyStack,\r\n view: PropertyStackView,\r\n isType(value) {\r\n if (value && value.type == 'stack') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'composite',\r\n model: PropertyComposite,\r\n view: PropertyCompositeView,\r\n isType(value) {\r\n if (value && value.type == 'composite') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'file',\r\n model: Property,\r\n view: PropertyFileView,\r\n isType(value) {\r\n if (value && value.type == 'file') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'color',\r\n model: Property,\r\n view: PropertyColorView,\r\n isType(value) {\r\n if (value && value.type == 'color') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'select',\r\n model: PropertySelect,\r\n view: PropertySelectView,\r\n isType(value) {\r\n if (value && value.type == 'select') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'dropdownFull',\r\n model: PropertyDropdown,\r\n view: PropertyDropdownView,\r\n isType(value) {\r\n if (value && value.type == 'dropdownFull') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'radio',\r\n model: PropertyRadio,\r\n view: PropertyRadioView,\r\n isType(value) {\r\n if (value && value.type == 'radio') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'slider',\r\n model: PropertySlider,\r\n view: PropertySliderView,\r\n isType(value) {\r\n if (value && value.type == 'slider') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'integer',\r\n model: PropertyInteger,\r\n view: PropertyIntegerView,\r\n isType(value) {\r\n if (value && value.type == 'integer') {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n id: 'base',\r\n model: Property,\r\n view: PropertyView,\r\n isType(value) {\r\n value.type = 'base';\r\n return value;\r\n }\r\n }\r\n ],\r\n\r\n deepClone() {\r\n const collection = this.clone();\r\n collection.reset(\r\n collection.map(model => {\r\n const cloned = model.clone();\r\n cloned.typeView = model.typeView;\r\n return cloned;\r\n })\r\n );\r\n return collection;\r\n },\r\n\r\n /**\r\n * Parse a value and return an array splitted by properties\r\n * @param {string} value\r\n * @return {Array}\r\n * @return\r\n */\r\n parseValue(value) {\r\n const properties = [];\r\n const values = value.split(' ');\r\n values.forEach((value, i) => {\r\n const property = this.at(i);\r\n if (!property) return;\r\n properties.push({ ...property.attributes, ...{ value } });\r\n });\r\n return properties;\r\n },\r\n\r\n getFullValue() {\r\n let result = '';\r\n this.each(model => (result += `${model.getFullValue()} `));\r\n return result.trim();\r\n }\r\n});\r\n","const control_label_css_for_handlebars = `.{{sid}} .component-head-container {\r\n font-size: {{label_font_size}}{{label_font_size_unit}};\r\n font-weight: {{label_font_weight}};\r\n color: {{label_text_color}};\r\n text-align: {{label_text_alignment}};\r\n}\r\n.{{sid}} [actionable]{\r\n cursor:pointer;\r\n}`;\r\n\r\nfunction sandboxCssWithCustomClass(styleText, action = '') {\r\n var dataToProcess = '.dhq_custom_cid {' + styleText + '}';\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var sass = new Sass();\r\n var output = '';\r\n sass.compile(dataToProcess, function(result) {\r\n output = result;\r\n if (output.status == 0) {\r\n output.text == null ? (output.text = '') : false;\r\n if (action == 'handlebars') {\r\n output.text = output.text + control_label_css_for_handlebars;\r\n output.text = output.text\r\n .replace(/dhq_custom_cid/gm, '{{sid}}')\r\n .replace(/\\.{{sid}}\\s?\\.w769-1024/gm, '.w769-1024 .{{sid}}')\r\n .replace(/\\.{{sid}}\\s?\\.w641-768/gm, '.w641-768 .{{sid}}')\r\n .replace(/\\.{{sid}}\\s?\\.w320-640/gm, '.w320-640 .{{sid}}');\r\n } else {\r\n output.text = output.text\r\n .replace(/dhq_custom_cid/gm, '<%= rf.get(\"cid\") %>')\r\n .replace(\r\n /\\.<%= rf\\.get\\(\"cid\"\\) %>\\s?\\.w769-1024/gm,\r\n '.w769-1024 .<%= rf.get(\"cid\") %>'\r\n )\r\n .replace(\r\n /\\.<%= rf\\.get\\(\"cid\"\\) %>\\s?\\.w641-768/gm,\r\n '.w641-768 .<%= rf.get(\"cid\") %>'\r\n )\r\n .replace(\r\n /\\.<%= rf\\.get\\(\"cid\"\\) %>\\s?\\.w320-640/gm,\r\n '.w320-640 .<%= rf.get(\"cid\") %>'\r\n );\r\n }\r\n resolve({\r\n success: true,\r\n resp: output\r\n });\r\n } else {\r\n resolve({\r\n success: false,\r\n resp: output.message\r\n });\r\n }\r\n });\r\n } catch (ex) {\r\n resolve({\r\n success: false,\r\n Error: ex\r\n });\r\n }\r\n });\r\n}\r\nexport default {\r\n processCSS: sandboxCssWithCustomClass\r\n};\r\n","import styleConverter from './cssConverter';\r\nimport StateManager from '../state_manager';\r\nvar tab = ` `;\r\nfunction getStudioHtml() {\r\n var ht = editor.getHtml();\r\n var $ht = $(`
${ht}
`);\r\n var $divWithId = $ht.find('[id]');\r\n var idReplaced = [];\r\n $divWithId.each(function(i, e) {\r\n var id = $(e).attr('id');\r\n idReplaced.push(id);\r\n $(e)\r\n .addClass(id)\r\n .removeAttr('id');\r\n });\r\n $ht = $ht.find('script').length ? replaceIdFromScripts($ht, idReplaced) : $ht;\r\n return $ht;\r\n}\r\n\r\nfunction replaceIdFromScripts($ht, idToReplace) {\r\n var ht = $ht.html();\r\n idToReplace.forEach(function(id) {\r\n var regex = new RegExp('#' + id, 'gm');\r\n ht = ht.replace(regex, `.${id}`);\r\n });\r\n return $(`
${ht}
`);\r\n}\r\n\r\nfunction getCoffeeHtml() {\r\n var $html = getStudioHtml();\r\n $html.find('script').remove();\r\n $html.find('[bindable]').each(function(i, e) {\r\n var field = $(e)\r\n .attr('field')\r\n .trim();\r\n field = field.replace(/ /gm, '_');\r\n var tag = $(e)[0].tagName;\r\n if (tag == 'IMG') {\r\n $(e).attr('src', getRfTag(field));\r\n } else if (tag == 'INPUT') {\r\n $(e).attr('val', getRfTag(field));\r\n } else {\r\n $(e).text(getRfTag(field));\r\n }\r\n });\r\n var coffeehtml = $html.html();\r\n if (coffeehtml) {\r\n return coffeehtml.replace(/</gm, '<').replace(/>/gm, '>');\r\n } else {\r\n return '';\r\n }\r\n}\r\n\r\nfunction getCoffeeConfig() {\r\n var $html = getStudioHtml();\r\n var edit_attr = getEditPropAttr();\r\n var data_type = getDataTypeAttr($html);\r\n var event_items = getActionEventItemsAttr($html);\r\n return edit_attr + data_type + event_items;\r\n}\r\n\r\nfunction getActionEventItemsAttr($html) {\r\n var event_items =\r\n `\r\n ` + `attrs.action_items = {`;\r\n $html.find('[actionable]').each(function(i, e) {\r\n var eventName = $(e)\r\n .attr('eventname')\r\n .trim()\r\n .replace(/ /gm, '_');\r\n var selector = `\"[eventname = '${$(e).attr('eventname')}']\"`;\r\n event_items += getActionsAttr(eventName, selector);\r\n });\r\n event_items +=\r\n `\r\n ` + ` }`;\r\n return event_items;\r\n}\r\n\r\nfunction getActionsAttr(eventName, selector) {\r\n return (\r\n `\r\n` +\r\n tab +\r\n tab +\r\n `${eventName}: {\r\n` +\r\n tab +\r\n tab +\r\n ` \"events\": [\"click\"],\r\n` +\r\n tab +\r\n tab +\r\n ` \"selector\": ${selector},\r\n` +\r\n tab +\r\n tab +\r\n `},`\r\n );\r\n}\r\n\r\nfunction getActionsJs(selector, eventName) {\r\n return `\r\n this.$el.find(\"${selector}\").on('click',function(e){\r\n if(parentComponent && [\"list_repeat\"].indexOf(parentComponent.model.field_type) > -1) {\r\n triggerAction(self.model.field_key_name,'${eventName}','click',e);\r\n }else{\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n triggerAction(self.model.field_key_name,'${eventName}','click',e);\r\n }\r\n });`;\r\n}\r\n\r\nfunction getEditPropAttr() {\r\n var edithtml = '';\r\n var $html = $(`
${editor.getHtml()}
`);\r\n // creates font editable property.\r\n $html.find('[font_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('font_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n let defaults = getDefaultStyleForEditProp($(e));\r\n let fontweight = defaults['font-weight'] || 400;\r\n let fontsize = defaults['font-size'] || 14;\r\n let textcolor = defaults['color'] || '#000000';\r\n let textalign = defaults['text-align'] || 'left';\r\n edithtml += `\r\n attrs.${unique}_font_weight = \"${fontweight}\"\r\n attrs.${unique}_font_size = \"${fontsize}\"\r\n attrs.${unique}_font_size_unit = \"px\"\r\n attrs.${unique}_text_color = \"${textcolor}\"\r\n attrs.${unique}_text_alignment = \"${textalign}\"\r\n `;\r\n });\r\n\r\n // creates bg editable property\r\n $html.find('[bg_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('bg_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n let defaults = getDefaultStyleForEditProp($(e));\r\n let backgroundcolor =\r\n defaults['background-image'] || defaults['background-color'] || '#ffffff';\r\n edithtml += `\r\n attrs.${unique} = \"${backgroundcolor}\"\r\n `;\r\n });\r\n\r\n return edithtml;\r\n}\r\n\r\nfunction getDefaultStyleForEditProp($component) {\r\n let id = $component.attr('id');\r\n let classes = $component.attr('class')\r\n ? $component.attr('class').replace(/ /gm, '.')\r\n : '';\r\n let idrule = id ? editor.CssComposer.getRule(`#${id}`) : '';\r\n let classrule = classes ? editor.CssComposer.getRule(`.${classes}`) : '';\r\n let style;\r\n if (idrule) {\r\n style = idrule.get('style');\r\n }\r\n if (classrule) {\r\n let cssstyle = classrule.get('style');\r\n style = { ...style, ...cssstyle };\r\n }\r\n return style || {};\r\n}\r\n\r\nfunction getDataTypeAttr($html) {\r\n var formulaflag = false;\r\n var defaultValue = ``;\r\n var template =\r\n `\r\n ` + `attrs.field_datatypes = [`;\r\n $html.find('[bindable]').each(function(i, e) {\r\n var data_source = $(e).attr('bind_from');\r\n var field = $(e)\r\n .attr('field')\r\n .trim();\r\n field = field.replace(/ /gm, '_');\r\n defaultValue += getDefaultAttr(field, e);\r\n if (data_source == 'formula' || data_source == 'both') {\r\n formulaflag = true;\r\n var data_type = $(e).attr('data_type');\r\n var editorFormat = data_type == 'string' ? 'single_line_text' : 'number';\r\n template += getDataTypeAttrForEachCompositComp(\r\n field,\r\n data_type,\r\n editorFormat\r\n );\r\n }\r\n });\r\n\r\n template += `]`;\r\n if ($html.find('[bindable]').length > 0) {\r\n return formulaflag\r\n ? defaultValue + template.substring(0, template.lastIndexOf(',')) + ']'\r\n : defaultValue + template;\r\n } else {\r\n return template;\r\n }\r\n}\r\n\r\nfunction getDefaultAttr(field, e) {\r\n return (\r\n `\r\n` +\r\n tab +\r\n `attrs.${field} = \"${getCoffeeAttr(e)}\"`\r\n );\r\n}\r\n\r\nfunction getDataTypeAttrForEachCompositComp(field, data_type, editorFormat) {\r\n return (\r\n `\r\n` +\r\n tab +\r\n tab +\r\n tab +\r\n `field: '${field}'\r\n` +\r\n tab +\r\n tab +\r\n tab +\r\n `display_name: '${field}'\r\n` +\r\n tab +\r\n tab +\r\n tab +\r\n `data_type: '${data_type}'\r\n` +\r\n tab +\r\n tab +\r\n tab +\r\n `field_database_editor_data_format: '${editorFormat}'\r\n` +\r\n tab +\r\n `,`\r\n );\r\n}\r\n\r\nfunction getCoffeeAttr(e) {\r\n var tag = $(e)[0].tagName;\r\n var data = '';\r\n if (tag == 'IMG') {\r\n data = $(e).attr('src');\r\n } else {\r\n data = $(e)\r\n .text()\r\n .trim();\r\n }\r\n return data;\r\n}\r\n\r\n// function getCoffeeCss() {\r\n// var css = editor.getCss();\r\n// css = css.replace(/\\* { box-sizing: border-box; } body {margin: 0;}/gm, '');\r\n// css = css.replace(/#/gm, '.');\r\n// css = css.replace(/([(a-z)(A-Z)-_ .]*{)/gm, '\\n.<%= rf.get(\"cid\") %> $& \\n');\r\n// css = css.replace(/} .{{/gm, '}\\n.{{').replace(/;/gm, ';\\n');\r\n// return css;\r\n// }\r\n\r\nfunction getCoffeeEdit() {\r\n // var ht = getStudioHtml();\r\n var $html = getStudioHtml();\r\n var edithtml = ``;\r\n\r\n // creates font editable property.\r\n $html.find('[font_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('font_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n edithtml += `\r\n
\r\n \r\n <%= Formbuilder.templates['edit/font_size']({\r\n \"label\": {name:\"Size\"},\r\n \"name\": \"${unique}_font_size\",\r\n \"disableUnit\": true\r\n }) %>\r\n\r\n <%= Formbuilder.templates['edit/font_weight']({\r\n \"label\": {name:\"Weight\"},\r\n \"name\": \"${unique}_font_weight\",\r\n }) %>\r\n \r\n <%= Formbuilder.templates['edit/color_picker']({\r\n \"label\": {name:\"Color\", position:\"top\", width:\"\"},\r\n \"name\": \"${unique}_text_color\",\r\n }) %>\r\n\r\n <%= Formbuilder.templates['edit/selectbar']({\r\n \"label\": {name:\"alingment\", position:\"top\"},\r\n \"name\": \"${unique}_text_alignment\",\r\n \"Icon_type\":\"icon\", \r\n \"col_width\":\"three_col\",\r\n }) %>\r\n
\r\n `;\r\n });\r\n\r\n // creates bg editable property\r\n $html.find('[bg_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('bg_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n edithtml += `
\r\n <%= Formbuilder.templates['edit/color_picker']({\r\n \"label\": {name:\"${name}\", position:\"left\", width:\"\"},\r\n \"name\": \"${unique}\",\r\n \"col_width\":\"two_col\"\r\n }) %>\r\n
\r\n `;\r\n });\r\n\r\n // creates toggle for stikcy property\r\n if ($html.find('[data-gjs=\"navbar\"]').length) {\r\n edithtml += `\r\n <%= Formbuilder.templates['edit/checkbox_boolean']({\r\n \"label\": \"Sticky\",\r\n \"name\": \"sticky\"\r\n }) %>\r\n `;\r\n }\r\n\r\n // creates input edit property\r\n $html.find('[bindable]').each(function(i, e) {\r\n var data_source = $(e).attr('bind_from');\r\n var field = $(e)\r\n .attr('field')\r\n .trim();\r\n var dispaly_name = field;\r\n field = field.replace(/ /gm, '_');\r\n if (data_source == 'static' || data_source == 'both') {\r\n edithtml += `
\r\n \r\n
\r\n \r\n
\r\n
\r\n `;\r\n }\r\n });\r\n return edithtml;\r\n}\r\n\r\nfunction getRfTag(field) {\r\n return `<%= rf.get('${field}') %> `;\r\n}\r\n\r\nasync function getStudioCss(cssfor = 'handlebars') {\r\n let rawCSS = editor\r\n .getCss()\r\n .replace(/\\* { box-sizing: border-box; } body {margin: 0;}/gm, '')\r\n .replace(/#([a-zA-Z])(?=[^}]*{)/g, '.$1');\r\n rawCSS = processMediaCss(rawCSS);\r\n let processedResponse = await styleConverter.processCSS(rawCSS, cssfor);\r\n let processedCSS = '';\r\n if (processedResponse.success) {\r\n processedCSS = processedResponse.resp.text;\r\n }\r\n processedCSS = processedCSS\r\n .replace(/} .{{/gm, '}\\n.{{')\r\n .replace(/;(?=[\\s]*})/gm, '\\n');\r\n\r\n processedCSS += getEditStylePropertyCss(cssfor);\r\n return processedCSS;\r\n}\r\n\r\nasync function validateCss() {\r\n let rawCSS = editor\r\n .getCss()\r\n .replace(/\\* { box-sizing: border-box; } body {margin: 0;}/gm, '')\r\n .replace(/#([a-zA-Z])(?=[^}]*{)/g, '.$1');\r\n rawCSS = processMediaCss(rawCSS);\r\n let processedResponse = await styleConverter.processCSS(rawCSS, 'handlebars');\r\n return processedResponse;\r\n}\r\n\r\nfunction processMediaCss(rawCSS) {\r\n let mediaCss = '';\r\n let devices = [\r\n { media: 1024, class: ['.w769-1024', '.w641-768', '.w320-640'] },\r\n { media: 768, class: ['.w641-768', '.w320-640'] },\r\n { media: 480, class: '.w320-640' }\r\n ];\r\n for (let i = 0; i < devices.length; i++) {\r\n let regex = new RegExp(\r\n `@media\\\\s?\\\\(max-width:\\\\s?${devices[i].media}px\\\\s?\\\\).*?}}`,\r\n 'gm'\r\n );\r\n let match = regex.exec(rawCSS);\r\n if (match != null && match.length) {\r\n let mediastr = match[0];\r\n mediastr = mediastr.replace(\r\n new RegExp(\r\n `@media\\\\s?\\\\(max-width:\\\\s?${devices[i].media}px\\\\s?\\\\)`,\r\n 'gm'\r\n ),\r\n devices[i].class\r\n );\r\n mediaCss += mediastr;\r\n }\r\n }\r\n rawCSS = rawCSS.replace(/@media/gm, '@media print,screen and');\r\n return rawCSS + mediaCss;\r\n}\r\n\r\nfunction getEditStylePropertyCss(cssfor) {\r\n let css = '';\r\n let $html = getStudioHtml();\r\n if (cssfor == 'coffee') {\r\n var sel = `.<%= rf.get('cid') %> .`;\r\n var prefix = `<%= rf.get('`;\r\n var suffix = `') %>`;\r\n } else {\r\n var sel = `.{{sid}} .`;\r\n var prefix = `{{`;\r\n var suffix = `}}`;\r\n }\r\n $html.find('[font_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('font_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n let className = $(e)\r\n .attr('class')\r\n .trim()\r\n .replace(/ /gm, '.');\r\n css += `${sel + className}{\r\n font-weight : ${prefix}${unique}_font_weight${suffix};\r\n font-size: ${prefix}${unique}_font_size${suffix}${prefix}${unique}_font_size_unit${suffix};\r\n color : ${prefix}${unique}_text_color${suffix};\r\n text-align :${prefix}${unique}_text_alignment${suffix};\r\n }\r\n `;\r\n });\r\n\r\n // creates bg editable property\r\n $html.find('[bg_editable]').each(function(i, e) {\r\n let name = $(e)\r\n .attr('bg_title')\r\n .trim();\r\n let unique = name.replace(/ /gm, '_');\r\n let className = $(e)\r\n .attr('class')\r\n .trim()\r\n .replace(/ /gm, '.');\r\n css += `${sel + className}{\r\n background-color : ${prefix}${unique}${suffix};\r\n background-image : ${prefix}${unique}${suffix};\r\n }\r\n `;\r\n });\r\n\r\n // creates sticky css for menu bar\r\n if ($html.find('[data-gjs=\"navbar\"]').length && cssfor == 'handlebars') {\r\n css += `\r\n .{{sid}}.sticky{\r\n position: sticky !important;\r\n top: 0;\r\n z-index: 9;\r\n }\r\n .{{sid}} .component-head-container{\r\n margin:0px;\r\n }\r\n `;\r\n }\r\n\r\n return css;\r\n}\r\n\r\nfunction getSetValueAndGetValueCode() {\r\n // var ht = getStudioHtml();\r\n var $html = getStudioHtml();\r\n var output = [];\r\n var setcode = ``;\r\n var getcode = ``;\r\n $html.find('[bindable]').each(function(i, e) {\r\n var data_source = $(e).attr('bind_from');\r\n var field = $(e)\r\n .attr('field')\r\n .trim();\r\n field = field.replace(/ /gm, '_');\r\n var target = $(e)\r\n .attr('class')\r\n .replace(/ /gm, '.');\r\n var tagType = $(e)[0].tagName;\r\n if (data_source == 'formula' || data_source == 'both') {\r\n setcode += getIfConBasedOnFieldType(field, target, tagType);\r\n getcode += createObjectForGetValue(field, target, tagType);\r\n }\r\n });\r\n output.push(setcode);\r\n output.push(getcode);\r\n return output; //// at 0 index it stores setvalue code and at 1 indx it stores getValue code\r\n}\r\nfunction getCoffeeScript() {\r\n var $html = getStudioHtml();\r\n var setcode = ``;\r\n $html.find('[bindable]').each(function(i, e) {\r\n var data_source = $(e).attr('bind_from');\r\n var field = $(e)\r\n .attr('field')\r\n .trim();\r\n field = field.replace(/ /gm, '_');\r\n var target = $(e)\r\n .attr('class')\r\n .replace(/ /gm, '.');\r\n var tagType = $(e)[0].tagName;\r\n if (data_source == 'formula' || data_source == 'both') {\r\n setcode += getIfConBasedOnFieldTypeForCoffee(field, target, tagType);\r\n }\r\n });\r\n return `(function (obj) {\r\n if (!_.isEmpty(obj)) {\r\n var objectkeys = Object.keys(obj);\r\n ${setcode}\r\n }\r\n })(<%= JSON.stringify(rf.get(\"LiveData\") || {}) %>)`;\r\n}\r\n\r\nfunction getActionEventListner() {\r\n var $html = getStudioHtml();\r\n var event_items = '';\r\n /// for action event\r\n $html.find('[actionable]').each(function(i, e) {\r\n var eventName = $(e)\r\n .attr('eventname')\r\n .trim()\r\n .replace(/ /gm, '_');\r\n var selector = `[eventname = '${$(e).attr('eventname')}']`;\r\n event_items += getActionsJs(selector, eventName);\r\n });\r\n\r\n /// for component script actions\r\n $html.find('script').each(function(i, e) {\r\n event_items +=\r\n `\r\n ` +\r\n $(e).html() +\r\n `\r\n `;\r\n });\r\n return event_items;\r\n}\r\n\r\nfunction getIfConBasedOnFieldTypeForCoffee(field, target, tagType) {\r\n if (tagType == 'IMG') {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n $(\".<%= rf.get(\"cid\") %>\").find('.${target}').attr('src', obj.${field});\r\n }\r\n `;\r\n } else if (tagType == 'INPUT') {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n $(\".<%= rf.get(\"cid\") %>\").find('.${target}').val(obj.${field});\r\n }\r\n `;\r\n } else {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n $(\".<%= rf.get(\"cid\") %>\").find('.${target}').text(obj.${field});\r\n }\r\n `;\r\n }\r\n}\r\n\r\nfunction getIfConBasedOnFieldType(field, target, tagType) {\r\n if (tagType == 'IMG') {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n self.$el.find('.${target}').attr('src', obj.${field});\r\n self.initConditionalVisibility(self.model.field_key_name + '.${field}');\r\n }\r\n `;\r\n } else if (tagType == 'INPUT') {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n self.$el.find('.${target}').val(obj.${field});\r\n self.initConditionalVisibility(self.model.field_key_name + '.${field}');\r\n }\r\n `;\r\n } else {\r\n return `if (objectkeys.indexOf('${field}') > -1) {\r\n obj.${field} = _.unescape(obj.${field});\r\n self.$el.find('.${target}').text(obj.${field});\r\n self.initConditionalVisibility(self.model.field_key_name + '.${field}');\r\n }\r\n `;\r\n }\r\n}\r\nfunction createObjectForGetValue(field, target, tagType) {\r\n if (tagType == 'IMG') {\r\n return `${field} : this.$el.find('.${target}').attr('src') || \"\",\r\n `;\r\n } else if (tagType == 'INPUT') {\r\n return `${field} : this.$el.find('.${target}').val() || \"\",\r\n `;\r\n } else {\r\n return `${field} : this.$el.find('.${target}').text() || \"\",\r\n `;\r\n }\r\n}\r\n\r\nfunction getStudioJs(control_name) {\r\n var getset = getSetValueAndGetValueCode();\r\n var setValue = getset[0];\r\n var getValue = getset[1];\r\n var actionEventListner = getActionEventListner();\r\n return `\r\nBSCOMPONENTS[\"${control_name}\"] = function() {\r\n this.default = {\r\n customVariable: \"\"\r\n };\r\n this._templateChanges ={};\r\n this._dhqSelected = false;\r\n this.statesBlockMapObj = {};\r\n this.initComponent = function () {\r\n var self = this;\r\n var parentComponent = Components[this.model.parent_id];\r\n self.createStateBlockMapObj();\r\n /* IF THIS IS CHID OF SOME LIST RepeAT THEN INITILIZE SELECTION EVENT ELSE DON'T DO ANYTHING */\r\n if(parentComponent) {\r\n var itemSelectionFun = parentComponent[\"onItemSelection\"];\r\n self.$el.find('.wrapper').on('click', function (e) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if(itemSelectionFun) {\r\n itemSelectionFun.call(parentComponent, self.model.field_key_name)\r\n }\r\n }); \r\n } \r\n\r\n ${actionEventListner}\r\n };\r\n this.createStateBlockMapObj = function(){\r\n let states = this.model.statesObj;\r\n for(key in states){\r\n blockSelector = states[key].selected && states[key].selected.selector\r\n this.statesBlockMapObj[blockSelector] = this.$el.find(\".\"+blockSelector);\r\n }\r\n // for selected states that are for wrapper.\r\n this.statesBlockMapObj[\"wrapper\"] = this.$el.find(\".wrapper\");\r\n }\r\n this.setState = function (stateName, target = \"wrapper\") {\r\n this.statesBlockMapObj[target] && this.statesBlockMapObj[target].addClass(stateName);\r\n };\r\n this.removeState = function (stateName, target = \"wrapper\") {\r\n this.statesBlockMapObj[target] && this.statesBlockMapObj[target].removeClass(stateName);\r\n };\r\n this.beforeSubmitValidation = function (obj) {\r\n //Control validation will be done here.\r\n return true;\r\n };\r\n this.setValue = function (obj) {\r\n var self = this;\r\n if(!_.isEmpty(obj)){\r\n var objectkeys = Object.keys(obj);\r\n ${setValue}\r\n }else{\r\n\r\n }\r\n };\r\n this.reset = function (obj) {\r\n //Reset your control here.\r\n };\r\n this.getValue = function (forSubmit) {\r\n var response = {\r\n ${getValue}\r\n };\r\n return { 'question': this.model.label, 'value': JSON.stringify(response), id: this.model.field_key_name, name: this.model.field_display_key_name };\r\n };\r\n};\r\nBSCOMPONENTS[\"${control_name}\"].prototype = BaseComponent;\r\n`;\r\n}\r\n\r\nfunction getStudioHandleBar(control_name) {\r\n var ht = getCoffeeHtml();\r\n var output = ht.replace(/<%= rf.get\\(/gm, '{{').replace(/\\) %>/gm, '}}');\r\n return ``;\r\n}\r\n\r\nfunction getCoffee(control_name, display_name) {\r\n return new Promise(async function(resolve, reject) {\r\n var viewHtml = getCoffeeHtml();\r\n var script = getCoffeeScript();\r\n var style = await getStudioCss('coffee');\r\n var edit = getCoffeeEdit();\r\n var data_type = getCoffeeConfig();\r\n var statesObj = StateManager.stateJson(editor);\r\n resolve(`\r\nFormbuilder.registerField '${control_name}',\r\ngroup: 'new'\r\norder: 1\r\ntype: 'non_input'\r\nview: \"\"\"\r\n
<%= rf.get('cid') %>\" data - requiredfield=\"<%= rf.get('required') %>\" >\r\n
\r\n \r\n ${viewHtml}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\"\"\"\r\n\r\nedit: \"\"\"\r\n
\r\n
\r\n
\r\n Properties \r\n
\r\n
\r\n
\r\n \r\n ${edit}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"\"\"\r\nmanual_data: \"\"\"\r\n\r\n\"\"\"\r\naddButton: \"\"\"\r\n \r\n \r\n \r\n \r\n Quantity\r\n \r\n\"\"\"\r\n\r\ndefaultAttributes: (attrs) ->\r\n attrs.label = '${display_name}'\r\n attrs.label_hidden = true\r\n attrs.statesObj = ${JSON.stringify(statesObj)}\r\n attrs.field_responsive = false\r\n attrs.sticky = false\r\n attrs.dhq_config = {\r\n strict_update: [\"field_datatypes\",\"action_items\",\"statesObj\"]\r\n }\r\n attrs.data_type = \"\"\r\n attrs.field_composition_type = \"composite\"\r\n attrs.field_available_in_database_editor = false\r\n attrs.field_editable_in_database_editor = false\r\n attrs.field_values_source = \"\"\r\n attrs.field_database_editor_data_format = \"\"\r\n attrs.field_client_side_get_data_enabled = true\r\n ${data_type}\r\n attrs\r\n `);\r\n });\r\n}\r\n\r\nexport default {\r\n getCoffee: getCoffee,\r\n getCss: getStudioCss,\r\n getJs: getStudioJs,\r\n getHB: getStudioHandleBar,\r\n validateCss: validateCss\r\n};\r\n","import config from '../../config/config';\r\nimport CF from '../common/common';\r\n\r\nvar url = config.url;\r\n\r\nfunction template(doc) {\r\n var Ldiv = '';\r\n doc.links.forEach(function(linkObj, link_count) {\r\n if (linkObj.URL) {\r\n Ldiv += ``;\r\n }\r\n });\r\n\r\n $('#gjs').append(\r\n $(`
\r\n
\r\n \r\n
${doc.title}
\r\n
${doc.Sub_title}
\r\n
${Ldiv}
\r\n
\r\n
`)\r\n );\r\n}\r\n\r\nlet showFormattedPopup = function(e) {\r\n var $this, timeout_value;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $this = $(e.currentTarget);\r\n timeout_value = $this.data('popup_timer') || 0;\r\n setTimeout(function() {\r\n var docId, document;\r\n docId =\r\n $this.data('popup_doc_id') || $this.data('hover_popup_doc_id') || '';\r\n if (editor && editor.Config.documentation) {\r\n document = editor.Config.documentation.filter(function(x) {\r\n return x.uid === docId;\r\n });\r\n if (document.length) {\r\n // _this.fillSummaryDoc(index);\r\n template(document[0]);\r\n placeAndShowPopup($this);\r\n }\r\n }\r\n }, timeout_value);\r\n};\r\n\r\nlet removePopup = function() {\r\n $('.pop-up-Doc').remove();\r\n};\r\n\r\n/*\r\n Function sets the top and left property for the popup depending on which item was hovered\r\n*/\r\nlet placeAndShowPopup = function($el) {\r\n var height,\r\n left,\r\n popHeight,\r\n popWidth,\r\n spaceAvailableBelow,\r\n spaceAvailableRight,\r\n top,\r\n width,\r\n windowHeight,\r\n windowWidth;\r\n if (\r\n $el.data('popup_parent_param') &&\r\n $el.data('popup_parent_param') === true\r\n ) {\r\n $el = $el.parent();\r\n }\r\n left = $el.offset().left;\r\n top = $el.offset().top;\r\n width = $el.outerWidth();\r\n height = $el.outerHeight();\r\n popWidth = $('.pop-up-Doc').outerWidth();\r\n popHeight = $('.pop-up-Doc').outerHeight();\r\n windowWidth = window.innerWidth;\r\n windowHeight = window.innerHeight;\r\n\r\n //left or right\r\n spaceAvailableRight = windowWidth - left - width;\r\n if (popWidth > spaceAvailableRight) {\r\n //draw on left\r\n $('.pop-up-Doc').css('left', left - popWidth);\r\n } else {\r\n //draw on right\r\n //newLeft = left - popWidth\r\n $('.pop-up-Doc').css('left', left + width);\r\n }\r\n //newLeft = left + width\r\n spaceAvailableBelow = windowHeight - top - height;\r\n if (popHeight > spaceAvailableBelow) {\r\n //draw above\r\n $('.pop-up-Doc').css('top', top - popHeight);\r\n } else {\r\n //draw below\r\n //newTop=top+height-popHeight\r\n $('.pop-up-Doc').css('top', top - height / 2);\r\n }\r\n $('.pop-up-Doc').removeClass('hide');\r\n $('.pop-up-Doc .close-popup').on('click', removePopup);\r\n};\r\n\r\nlet fetchPopupDetails = function() {\r\n var data = {\r\n operation: 'getControlInfoFromSheets'\r\n };\r\n\r\n function onSuccess(response) {\r\n response = JSON.parse(response);\r\n if (response.success && response.data) {\r\n response.data.forEach(function(item, index) {\r\n var links_arr, temp;\r\n if (item.data.Links_array_new_1591782873) {\r\n links_arr = JSON.parse(item.data.Links_array_new_1591782873);\r\n } else {\r\n links_arr = [];\r\n }\r\n temp = {\r\n uid: item.data.uid1_1591782873,\r\n title: item.data.Title_1591782873,\r\n Sub_title: item.data.sub_title_1591782873,\r\n links: links_arr,\r\n //'buttons':item.data.butto_JSON_1589802773483,\r\n image: item.data.banner_url_1591782873,\r\n rich_text: item.data.Rich_text_description_1591782873\r\n };\r\n editor.Config.documentation.push(temp);\r\n });\r\n }\r\n }\r\n function onError() {\r\n CF.ShowVSAlert('error', 'something went wrong!');\r\n }\r\n\r\n CF.fnAjaxRequest(\r\n url + 'Handler/studioConsole.ashx',\r\n 'POST',\r\n data,\r\n onSuccess,\r\n onError\r\n );\r\n};\r\n\r\nlet init = function() {\r\n fetchPopupDetails();\r\n};\r\n\r\nexport default {\r\n init: init,\r\n showPopUp: showFormattedPopup,\r\n remove: removePopup\r\n};\r\n","import exportPlugin from './exportPlugin.js';\r\nimport editorEventHandler from './editorEventHandler.js';\r\nimport SlimSelect from 'slim-select';\r\nimport StateManager from '../state_manager';\r\nimport infoPlugin from './infoPlugin';\r\n\r\nconst Handlebars = require('handlebars');\r\nvar _ = require('underscore');\r\nvar controlsMeta = '';\r\nvar isControlListEmpty = false;\r\nvar designerCodeForFirstControl = '';\r\nvar sourceFile = require('../../config/config.js');\r\nconst url = sourceFile.url;\r\n\r\nvar getAllControlIcons = async function() {\r\n return new Promise(function(resolve, reject) {\r\n var onSuccess = function(data) {\r\n data = data.replace('][', ',');\r\n data = JSON.parse(data);\r\n var iconsHTML = fnHandlebars('icons-suggestion-list-template', data);\r\n $('.existing-icon-list').append(iconsHTML);\r\n $('.existing-icon-list .loading-icons').remove();\r\n resolve(true);\r\n };\r\n var onAjaxError = function(error) {\r\n console.log(error);\r\n reject(false);\r\n };\r\n var reqObj = {\r\n operation: 'diy_getAllControlIcons'\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'GET',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n });\r\n};\r\nvar getControlsGroup = async function() {\r\n return new Promise(function(resolve, reject) {\r\n var ajaxReqData = {\r\n operation: 'getGroupsListForControls'\r\n };\r\n var onSuccess = function(data) {\r\n var groupData = JSON.parse(data);\r\n var groupList = groupData.map(function(obj) {\r\n return (\r\n ''\r\n );\r\n });\r\n groupList = `` + groupList;\r\n $('.group .dropdown-select').html(groupList);\r\n resolve();\r\n };\r\n var onAjaxError = function(error) {\r\n error.status === 401 && ShowVSAlert('error', `You've been logged out`);\r\n console.log('unable to get group list');\r\n reject();\r\n };\r\n\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'GET',\r\n ajaxReqData,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n });\r\n};\r\nvar getMkpControlsGroup = async function() {\r\n return new Promise(function(resolve, reject) {\r\n var reqData = {\r\n operation: 'getControlmarketplaceGroups'\r\n };\r\n var onSuccess = function(data) {\r\n if (typeof data == 'string') {\r\n data = JSON.parse(data);\r\n }\r\n if (data.success) {\r\n var groupData =\r\n typeof data.data == 'string'\r\n ? JSON.parse(data.data)[0].data\r\n : data.data[0].data;\r\n var groupList = groupData.map(function(obj) {\r\n return '';\r\n });\r\n $('.edit-control-card .marketplace-group select').html(groupList);\r\n new SlimSelect({\r\n select: '.edit-control-card .marketplace-group select'\r\n });\r\n resolve();\r\n } else {\r\n console.log('unable to get group list');\r\n reject();\r\n }\r\n };\r\n var onAjaxError = function(error) {\r\n error.status === 401 && ShowVSAlert('error', `You've been logged out`);\r\n console.log('unable to get group list');\r\n reject();\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/controlMarketPlace.ashx',\r\n 'POST',\r\n reqData,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n });\r\n};\r\nvar openAddControlModal = function() {\r\n $('.overlay-vs-input.for-add-function').fadeIn();\r\n let value = $('.overlay-vs-input.for-add-function')\r\n .find('.group .dropdown-select option')\r\n .filter(function(index, elm) {\r\n if (\r\n $(elm)\r\n .text()\r\n .trim()\r\n .toLowerCase() == 'custom'\r\n ) {\r\n return true;\r\n }\r\n })\r\n .attr('value');\r\n $('.overlay-vs-input.for-add-function')\r\n .find('.group .dropdown-select')\r\n .val(value || '');\r\n};\r\nvar showLoader = function() {\r\n closeSidebar();\r\n $('.component-loader').removeClass('hide');\r\n};\r\nvar hideLoader = function() {\r\n $('.studio-loader').hide();\r\n $('.component-loader').addClass('hide');\r\n};\r\nvar storeDesignerCodeForFirstControl = function() {\r\n var html = editor.getHtml();\r\n var css = ``;\r\n designerCodeForFirstControl = html + css;\r\n};\r\n\r\nvar openEditControlModal = function() {\r\n // var current_control_json = current_control.value;\r\n var current_control_json = editor.Config.current_control;\r\n if (current_control_json) {\r\n current_control_json = JSON.parse(current_control_json);\r\n $('.edit-control-card .item-wrapper.name .text-value input').val(\r\n current_control_json.control_name\r\n );\r\n $('.edit-control-card .item-wrapper.disp-name .text-value input').val(\r\n current_control_json.display_name\r\n );\r\n $('.edit-control-card .item-wrapper.search-tag .text-value input').val(\r\n current_control_json.tags\r\n );\r\n $('.edit-control-card .item-wrapper.group .dropdown-select').val(\r\n current_control_json.group\r\n ); //TO-DO\r\n $('.edit-control-card .item-wrapper.status .mobileToggle')[0].checked =\r\n current_control_json.status;\r\n $('.edit-control-card .item-wrapper.depricated .isDeprecated')[0].checked =\r\n current_control_json.isDeprecated || 0;\r\n $('.edit-control-card .icon-picker .image-url').val(\r\n current_control_json.icon_url\r\n );\r\n $(\r\n \".edit-control-card .icon-picker [data-cmp-icon-url='\" +\r\n current_control_json.icon_url +\r\n \"']\"\r\n )\r\n .parent()\r\n .addClass('is-selected');\r\n if (current_control_json.isOnMarketplace == 1) {\r\n $('.edit-control-card .marketplace input')\r\n .prop('checked', false)\r\n .trigger('click');\r\n } else {\r\n $('.edit-control-card .marketplace input')\r\n .prop('checked', true)\r\n .trigger('click');\r\n }\r\n\r\n if (current_control_json.hasOwnProperty('marketplace_data')) {\r\n $('.edit-control-card .marketplace-group select')[0].slim.set(\r\n current_control_json.marketplace_data.group\r\n );\r\n $('.edit-control-card .item-wrapper.image img').attr(\r\n 'src',\r\n current_control_json.marketplace_data.image\r\n );\r\n current_control_json.marketplace_data.devices.forEach(function(device) {\r\n $(\r\n '.edit-control-card .item-wrapper.sd [data-device=\"' + device + '\"]'\r\n ).addClass('selected');\r\n });\r\n }\r\n $('.overlay-vs-input.for-edit-function').fadeIn();\r\n }\r\n};\r\nvar openPublishModal = function() {\r\n if (!isControlListEmpty) {\r\n $('.overlay-vs-input.for-publish').css('display', 'block');\r\n $('.vsCodeInput .release_notes').focus();\r\n $('.overlay-vs-input.for-publish')\r\n .off('keydown')\r\n .on('keydown', function(e) {\r\n if (e.keyCode == 13) {\r\n $('.vsCodeInput.publish .accept-button').trigger('click');\r\n $('.vsCodeInput .release_notes').blur();\r\n }\r\n })\r\n .keydown(function(e) {\r\n if (e.keyCode == 27) {\r\n $('.actions .close-button').trigger('click');\r\n $('.vsCodeInput .release_notes').blur();\r\n }\r\n });\r\n } else {\r\n storeDesignerCodeForFirstControl();\r\n editor.Panels.getButton('options', 'add-new-control').set('active', 1);\r\n }\r\n};\r\nvar validateField = function($element, validationList = {}) {\r\n var defaultCheckList = {\r\n checkIsEmpty: false,\r\n checkSpecialChar: false,\r\n checkSpace: false,\r\n ignoreSpecialCharacter: ''\r\n };\r\n var checkList = $.extend(defaultCheckList, validationList);\r\n\r\n var startsWithCharRegex = /^[a-zA-Z]/;\r\n var format = /[`!@#$%^&*()+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]/;\r\n var formatWithoutComma = /[`!@#$%^&*()+\\-=\\[\\]{};':\"\\\\|.<>\\/?]/;\r\n var text = $element.val().trim();\r\n var $errMsgBox = $element.parents('.item-wrapper').find('.error-msg-box');\r\n var hasSpecialCharacter,\r\n hasSpace,\r\n isEmpty = false;\r\n var starWithChar = true;\r\n if (checkList.checkIsEmpty) {\r\n isEmpty = text == '' ? true : false;\r\n if (isEmpty) showErrorInAddScriptModal($errMsgBox, 'Field cannot be empty');\r\n }\r\n if (checkList.checkSpace) {\r\n hasSpace = text.indexOf(' ') == -1 ? false : true;\r\n if (hasSpace)\r\n showErrorInAddScriptModal($errMsgBox, 'Field cannot contain spaces');\r\n }\r\n if (checkList.checkSpecialChar) {\r\n if (checkList.ignoreSpecialCharacter) {\r\n format = formatWithoutComma;\r\n }\r\n starWithChar = startsWithCharRegex.test(text);\r\n hasSpecialCharacter = format.test(text);\r\n if (hasSpecialCharacter) {\r\n showErrorInAddScriptModal(\r\n $errMsgBox,\r\n 'Field cannot contain special characters'\r\n );\r\n }\r\n if (!starWithChar) {\r\n showErrorInAddScriptModal(\r\n $errMsgBox,\r\n 'Field should start with character'\r\n );\r\n }\r\n }\r\n\r\n if (!hasSpecialCharacter && !hasSpace && !isEmpty && starWithChar) {\r\n $errMsgBox.text('');\r\n $element.removeClass('red-border');\r\n return true;\r\n } else {\r\n $element.addClass('red-border');\r\n return false;\r\n }\r\n};\r\nconsole.devLog = function(payload) {\r\n // console.log(payload)\r\n};\r\nvar getCurrentTimeStamp = function() {\r\n var currentdate = new Date();\r\n var datetime =\r\n 'DT:' +\r\n currentdate.getDate() +\r\n '/' +\r\n (currentdate.getMonth() + 1) +\r\n '/' +\r\n currentdate.getFullYear() +\r\n ' @ ' +\r\n currentdate.getHours() +\r\n ':' +\r\n currentdate.getMinutes() +\r\n ':' +\r\n currentdate.getSeconds();\r\n return datetime;\r\n};\r\nvar merge_object_arrays = function(arr1, arr2, match) {\r\n return _.union(\r\n _.map(arr1, function(obj1) {\r\n var same = _.find(arr2, function(obj2) {\r\n return obj1[match] === obj2[match];\r\n });\r\n return same ? _.extend(obj1, same) : obj1;\r\n }),\r\n _.reject(arr2, function(obj2) {\r\n return _.find(arr1, function(obj1) {\r\n return obj2[match] === obj1[match];\r\n });\r\n })\r\n );\r\n};\r\nvar ShowVSAlert = function(type, message, timeout = 3000) {\r\n var alertType = type || 'info';\r\n var alertMessage = message || '';\r\n $('.warning-icon').addClass('hide');\r\n $('.error-icon').addClass('hide');\r\n $('.success-icon').addClass('hide');\r\n if (alertType == 'info') {\r\n $('.warning-icon').removeClass('hide');\r\n } else if (alertType == 'error') {\r\n $('.error-icon').removeClass('hide');\r\n } else {\r\n $('.success-icon').removeClass('hide');\r\n }\r\n $('.alert-body .alert-text').html(alertMessage);\r\n $('.vsCodeAlert').fadeIn(function() {\r\n setTimeout(() => {\r\n $('.vsCodeAlert').fadeOut();\r\n }, timeout);\r\n });\r\n};\r\nvar fnAjaxRequest = function(\r\n ajaxURL,\r\n ajaxReqMethod,\r\n ajaxReqData,\r\n onSuccess,\r\n onError\r\n) {\r\n try {\r\n $.ajax({\r\n type: ajaxReqMethod,\r\n url: ajaxURL,\r\n data: ajaxReqData,\r\n success: onSuccess,\r\n error: onError,\r\n contentType: 'application/x-www-form-urlencoded'\r\n });\r\n } catch (ex) {\r\n // console.log('a')\r\n }\r\n};\r\nvar startLoader = function(button) {\r\n var markup = button.get('markup');\r\n var classes = button.get('className');\r\n button.set('markup', `
${markup}`);\r\n button.set('className', 'disabled');\r\n};\r\nvar stopLoader = function(button, icon) {\r\n var markup =\r\n $(button.get('markup')).length == 2 ? $(button.get('markup'))[1] : '';\r\n button.set('markup', `${markup.outerHTML}`);\r\n button.set('className', icon);\r\n};\r\nvar saveButtonClicked = async function() {\r\n var saveButton = editor.Panels.getButton('options', 'save-control');\r\n startLoader(saveButton);\r\n $('.vsCodeInput.publish .accept-button').addClass('disabled');\r\n // var current_control_json = current_control.value;\r\n var current_control_json = editor.Config.current_control;\r\n if (current_control_json && !isControlListEmpty) {\r\n current_control_json = JSON.parse(current_control_json);\r\n var c_name = current_control_json.control_name;\r\n var dis_name = current_control_json.display_name;\r\n // var isControlNamesValid = validateControlNamesOnScripts()\r\n // if (!isControlNamesValid) {\r\n // return;\r\n // }\r\n var angularJSScript = '';\r\n var angularCSSScript = '';\r\n var angularTSScript = '';\r\n var cssScript = await exportPlugin.getCss();\r\n var coffeeScript = await exportPlugin.getCoffee(c_name, dis_name);\r\n var stateJson = StateManager.stateJson(editor);\r\n var reqObj = {\r\n action: 'update',\r\n operation: 'saveStudioControl',\r\n\r\n control_id: current_control_json.control_id,\r\n control_name: current_control_json.control_name,\r\n\r\n tags: current_control_json.tags,\r\n icon_url: current_control_json.icon_url,\r\n display_name: current_control_json.display_name,\r\n\r\n coffee: coffeeScript,\r\n handlebars: exportPlugin.getHB(c_name),\r\n css: cssScript,\r\n js: exportPlugin.getJs(c_name),\r\n states_data: JSON.stringify(stateJson),\r\n angular_js: current_control_json.angular_js,\r\n angular_css: current_control_json.angular_css,\r\n angular_ts: current_control_json.angular_ts,\r\n\r\n designer_html: editor.getHtml(),\r\n designer_css: editor.getCss()\r\n };\r\n var onSuccess = function(data) {\r\n $('.region-two-button-save .loader-wrapper').fadeOut();\r\n var index = data.indexOf(\r\n 'Object reference not set to an instance of an object'\r\n );\r\n if (index > -1) {\r\n $('.error-loading.logout').removeClass('hide');\r\n ShowVSAlert('error', 'Error while saving! Please try again later.');\r\n stopLoader(saveButton, 'fa fa-save');\r\n $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n return false;\r\n } else {\r\n ShowVSAlert('Success', 'Saved successfully!');\r\n stopLoader(saveButton, 'fa fa-save');\r\n $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n editor.ControlManager.refreshList();\r\n // refreshControlList({ id: current_control_json.control_id }).then(\r\n // function (response) {\r\n // callListAfterRefresh(response.id);\r\n // stopLoader(saveButton, 'fa fa-save');\r\n // $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n // }\r\n // );\r\n }\r\n };\r\n var onAjaxError = function(data) {\r\n // console.devLog(data);\r\n stopLoader(saveButton, 'fa fa-save');\r\n $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n if (data.status == 401) {\r\n ShowVSAlert('error', \"It seems like you've been logged out.\");\r\n } else {\r\n ShowVSAlert('error', 'Error saving control!');\r\n }\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n } else {\r\n storeDesignerCodeForFirstControl();\r\n editor.Panels.getButton('options', 'add-new-control').set('active', 1);\r\n stopLoader(saveButton, 'fa fa-save');\r\n }\r\n};\r\nvar handleEscapeButton = function() {\r\n var isSidebarOpen = $('.list-sidebar').hasClass('is-open');\r\n isSidebarOpen ? closeSidebar() : false;\r\n};\r\nvar shiftTabToLeft = function(e) {\r\n var currentTab = $('.display-header-option-script.is-selected').data('for');\r\n $('.display-header-option-script').removeClass('is-selected');\r\n switch (currentTab) {\r\n case 'css-container':\r\n $('.display-header-option-script[data-for=js-container]').addClass(\r\n 'is-selected'\r\n );\r\n hideTabShowCurrent('js-container');\r\n break;\r\n case 'js-container':\r\n $('.display-header-option-script[data-for=hb-container]').addClass(\r\n 'is-selected'\r\n );\r\n hideTabShowCurrent('hb-container');\r\n break;\r\n case 'hb-container':\r\n $('.display-header-option-script[data-for=coffee-container]').addClass(\r\n 'is-selected'\r\n );\r\n hideTabShowCurrent('coffee-container');\r\n break;\r\n case 'coffee-container':\r\n $('.display-header-option-script[data-for=css-container]').addClass(\r\n 'is-selected'\r\n );\r\n hideTabShowCurrent('css-container');\r\n break;\r\n }\r\n};\r\nvar hideTabShowCurrent = function(datasetId) {\r\n $('.editor-body').addClass('editor-hidden');\r\n $('#' + datasetId).removeClass('editor-hidden');\r\n};\r\n//Richard ch7\r\nvar callListAfterRefresh = function(id) {\r\n var selectedControl = $('.script_item[data-control_id=' + id + ']');\r\n $('.accordion-body .script_item').removeClass('is-component-selected');\r\n selectedControl.addClass('is-component-selected');\r\n let name = selectedControl.find('.script_id').text();\r\n editor.Panels.getPanel('controlName').set(\r\n 'prependContent',\r\n `
${name}
`\r\n );\r\n getComponent(id);\r\n};\r\nvar clearAddNewComponentFields = function() {\r\n var $nameContainer = $(\r\n '.add-control-card .item-wrapper.name .text-value input'\r\n );\r\n var $summary = $('.add-control-card .item-wrapper .text-value textarea');\r\n var $definition = $('.add-control-card .item-wrapper .text-value input');\r\n var $example = $('.add-control-card .item-wrapper .text-value input');\r\n $nameContainer.val('');\r\n $summary.val('');\r\n $definition.val('');\r\n $example.val('');\r\n $('.add-control-card .item-wrapper.group .text-value select').val('');\r\n $('.add-control-card .red-border').removeClass('red-border');\r\n $('.add-control-card .error-msg-box').html('');\r\n $('.add-control-card .is-selected').removeClass('is-selected');\r\n};\r\nvar clearUpdateComponentFields = function() {\r\n var $nameContainer = $(\r\n '.edit-control-card .item-wrapper.name .text-value input'\r\n );\r\n var $summary = $('.edit-control-card .item-wrapper .text-value textarea');\r\n var $definition = $('.edit-control-card .item-wrapper .text-value input');\r\n var $example = $('.edit-control-card .item-wrapper .text-value input');\r\n $nameContainer.val('');\r\n $summary.val('');\r\n $definition.val('');\r\n $example.val('');\r\n $('.edit-control-card .red-border').removeClass('red-border');\r\n $('.edit-control-card .error-msg-box').html('');\r\n $('.edit-control-card .is-selected').removeClass('is-selected');\r\n $('.edit-control-card .marketplace-group select')[0].slim.set([]);\r\n $('.edit-control-card .item-wrapper.image img').attr(\r\n 'src',\r\n sourceFile.rootDir + '/assets/icons/imageblock.svg'\r\n );\r\n $('.edit-control-card .item-wrapper.sd .select-bar .item').removeClass(\r\n 'selected'\r\n );\r\n $('.edit-control-card .item-wrapper.marketplace input')\r\n .prop('checked', true)\r\n .trigger('click');\r\n};\r\nvar closeSidebar = function() {\r\n $('.list-sidebar').removeClass('is-open');\r\n};\r\nvar openSidebar = function() {\r\n $('.list-sidebar').addClass('is-open');\r\n};\r\nvar showErrorInAddScriptModal = function($element, ErrText) {\r\n $element.text(ErrText);\r\n};\r\nvar fnHandlebars = function(tempId, data) {\r\n tempId = '#' + tempId;\r\n if (typeof data == 'string') {\r\n data = JSON.parse(data);\r\n }\r\n\r\n var tempHTML = $(tempId).html();\r\n\r\n var fnHandle = Handlebars.compile(tempHTML);\r\n return fnHandle(data);\r\n};\r\nvar refreshControlList = function(dataToBePassedAfterPromise = {}) {\r\n return new Promise(function(resolve, reject) {\r\n var reqObj = {\r\n operation: 'GetStudioControlsListForEditor'\r\n };\r\n\r\n var onSuccess = function(data) {\r\n if (typeof data == 'string') {\r\n var index = data.indexOf(\r\n 'Object reference not set to an instance of an object'\r\n );\r\n if (index > -1) {\r\n $('.error-loading').removeClass('hide');\r\n return false;\r\n }\r\n }\r\n console.devLog('getList success at ' + getCurrentTimeStamp());\r\n\r\n controlsMeta = JSON.parse(JSON.parse(data)['controls']);\r\n var status = JSON.parse(JSON.parse(data)['status']);\r\n controlsMeta = merge_object_arrays(controlsMeta, status, 'control_id');\r\n\r\n controlsMeta = controlsMeta.sort(function(a, b) {\r\n return a['control_id'] - b['control_id'];\r\n });\r\n controlsMeta = controlsMeta.filter(control => control['isFromDesigner']);\r\n var appsHtml = fnHandlebars('template-script-item', controlsMeta);\r\n $('.accordion-body.for-functions').html(appsHtml);\r\n console.devLog(controlsMeta);\r\n // $($($('.accordion-body')[0]).find('.script_item')[0]).trigger('click');\r\n resolve(dataToBePassedAfterPromise);\r\n };\r\n var onAjaxError = function(data) {\r\n if (data.status == 401) {\r\n $('.studio-loader')\r\n .find('.error-loading')\r\n .removeClass('hide');\r\n }\r\n console.devLog(data);\r\n reject();\r\n };\r\n console.devLog('refreshList called at ' + getCurrentTimeStamp());\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n });\r\n};\r\nvar clearModalContentForAll = function() {\r\n clearAddNewComponentFields();\r\n clearUpdateComponentFields();\r\n};\r\nvar PublishCode = async function() {\r\n // var current_control_json = current_control.value;\r\n var current_control_json = editor.Config.current_control;\r\n var $releaseNotes = $('.vsCodeInput .release_notes');\r\n\r\n if (current_control_json) {\r\n current_control_json = JSON.parse(current_control_json);\r\n var c_name = current_control_json.control_name;\r\n var dis_name = current_control_json.display_name;\r\n var coffeeScript = await exportPlugin.getCoffee(c_name, dis_name);\r\n var cssScript = await exportPlugin.getCss();\r\n var release_notes = $releaseNotes.val();\r\n var stateJson = StateManager.stateJson(editor);\r\n var reqObj = {\r\n operation: 'publishStudioControl',\r\n\r\n control_id: current_control_json.control_id,\r\n control_name: current_control_json.control_name,\r\n\r\n tags: current_control_json.tags,\r\n icon_url: current_control_json.icon_url,\r\n display_name: current_control_json.display_name,\r\n group_id: current_control_json.group_id,\r\n release_notes: release_notes,\r\n states_data: JSON.stringify(stateJson),\r\n coffee: coffeeScript,\r\n handlebars: exportPlugin.getHB(c_name),\r\n css: cssScript,\r\n js: exportPlugin.getJs(c_name),\r\n\r\n angular_js: current_control_json.angular_js,\r\n angular_css: current_control_json.angular_css,\r\n angular_ts: current_control_json.angular_ts,\r\n\r\n designer_html: editor.getHtml(),\r\n designer_css: editor.getCss()\r\n };\r\n var onSuccess = function(data) {\r\n $releaseNotes.val('');\r\n $('.overlay-vs-input').css('display', 'none');\r\n var index = data.indexOf(\r\n 'Object reference not set to an instance of an object'\r\n );\r\n if (index > -1) {\r\n $('.error-loading.logout').removeClass('hide');\r\n ShowVSAlert('error', 'Error while publishing! Please try again later.');\r\n return false;\r\n } else {\r\n ShowVSAlert('Success', 'Published successfully!');\r\n }\r\n $('.vsCodeInput .loader-wrapper').fadeOut();\r\n $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n };\r\n var onAjaxError = function(data) {\r\n if (data.status == 401) {\r\n ShowVSAlert('error', \"It seems like you've been logged out.\");\r\n } else {\r\n ShowVSAlert('error', 'Error while publishing! Please try again later.');\r\n }\r\n // console.devLog(data);\r\n $('.vsCodeInput .loader-wrapper').fadeOut();\r\n $('.vsCodeInput.publish .accept-button').removeClass('disabled');\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n }\r\n};\r\nvar addNewComponent = function(\r\n c_name,\r\n display_name,\r\n SearchTag,\r\n group,\r\n IconURL\r\n) {\r\n $('.add-control-card .actions .accept-button .loader-wrapper').fadeIn();\r\n $('.add-control-card .actions .accept-button').addClass('disabled');\r\n var reqObj = {\r\n action: 'add',\r\n operation: 'addStudioControl',\r\n\r\n status: 0,\r\n group_id: group,\r\n control_name: c_name,\r\n\r\n tags: SearchTag,\r\n icon_url: IconURL,\r\n display_name: display_name,\r\n coffee: '',\r\n handlebars: '',\r\n css: '',\r\n js: '',\r\n angular_js: '',\r\n angular_css: '',\r\n angular_ts: '',\r\n designer_html: '',\r\n designer_css: '',\r\n is_designer: 1\r\n };\r\n var onSuccess = function(data) {\r\n let resp = JSON.parse(data);\r\n if (resp.success == false) {\r\n ShowVSAlert(\r\n 'error',\r\n 'A control with the same unique name already exists in the global/Local scope.'\r\n );\r\n // ShowVSAlert('error', 'You already have a control with same Unique name or a control with same unique name exists in Global scope');\r\n $('.add-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.add-control-card .actions .accept-button').removeClass('disabled');\r\n return false;\r\n }\r\n $('.overlay-vs-input').css('display', 'none');\r\n ShowVSAlert('Success', 'Added successfully.');\r\n $('.add-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.add-control-card .actions .accept-button').removeClass('disabled');\r\n clearAddNewComponentFields();\r\n // refreshControlList(resp).then(function (response) {\r\n // callListAfterRefresh(response.id);\r\n // });\r\n editor.ControlManager.refreshList(resp.id);\r\n };\r\n var onAjaxError = function(data) {\r\n console.devLog(data);\r\n if (data.status == 401) {\r\n ShowVSAlert('error', \"It seems like you've been logged out.\");\r\n }\r\n $('.region-two-button-save .loading').css('display', 'none');\r\n $('.add-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.add-control-card .actions .accept-button').removeClass('disabled');\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n};\r\nvar updateControlMetaData = function(\r\n control_id,\r\n display_name,\r\n tags,\r\n group,\r\n status,\r\n icon_url,\r\n isDeprecated,\r\n onMarketplace,\r\n mkpgroup,\r\n mkpimageurl,\r\n supdevices\r\n) {\r\n $('.edit-control-card .actions .accept-button .loader-wrapper').fadeIn();\r\n $('.edit-control-card .actions .accept-button').addClass('disabled');\r\n var reqObj = {\r\n operation: 'updateControlMeta',\r\n\r\n control_id: control_id,\r\n tags: tags,\r\n icon_url: icon_url,\r\n display_name: display_name,\r\n isDeprecated: isDeprecated,\r\n isOnMarketplace: onMarketplace ? 1 : 0,\r\n marketplace_data: JSON.stringify({\r\n image: mkpimageurl,\r\n group: mkpgroup,\r\n devices: supdevices\r\n }),\r\n dependencyJSON: JSON.stringify({ localDependencies: [] }),\r\n group: group,\r\n status: status\r\n };\r\n var onSuccess = function(data) {\r\n if (typeof data == 'string') {\r\n data = JSON.parse(data);\r\n }\r\n if (data.success) {\r\n // refreshControlList();\r\n editor.ControlManager.refreshList();\r\n $('.region-two-button-save .loading').css('display', 'none');\r\n ShowVSAlert('Success', 'Saved successfully!');\r\n $('.script_item.is-component-selected .script_id').text(\r\n this.display_name\r\n );\r\n if (this.status == 0) {\r\n $('.script_item.is-component-selected .status')\r\n .removeClass('is-active')\r\n .addClass('is-draft')\r\n .text('draft');\r\n } else {\r\n $('.script_item.is-component-selected .status')\r\n .removeClass('is-draft')\r\n .addClass('is-active')\r\n .text('active');\r\n }\r\n $('.edit-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.edit-control-card .actions .accept-button').removeClass('disabled');\r\n $('.edit-control-card .header .close-button').trigger('click');\r\n } else {\r\n $('.region-two-button-save .loading').css('display', 'none');\r\n ShowVSAlert('error', data.message);\r\n $('.edit-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.edit-control-card .actions .accept-button').removeClass('disabled');\r\n }\r\n };\r\n var onAjaxError = function(data) {\r\n // console.devLog(data);\r\n if (data.status == 401) {\r\n ShowVSAlert('error', \"It seems like you've been logged out.\");\r\n }\r\n $('.region-two-button-save .loading').css('display', 'none');\r\n $('.edit-control-card .actions .accept-button .loader-wrapper').fadeOut();\r\n $('.edit-control-card .actions .accept-button').removeClass('disabled');\r\n ShowVSAlert('error', 'Saved successfully!');\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess.bind(reqObj),\r\n onAjaxError\r\n );\r\n};\r\nvar getComponent = function(id) {\r\n // console.devLog($($this[0]).data().control_id)\r\n console.devLog(id);\r\n var reqObj = {\r\n operation: 'getStudioControlByID',\r\n control_id: id\r\n };\r\n\r\n var onSuccess = function(data) {\r\n data = JSON.parse(data);\r\n var dev_document = data.filter(function(element) {\r\n return element['doc_type'] == 'dev';\r\n })[0];\r\n // var dev_document = data.find(function(element) {\r\n // return element['doc_type'] == 'dev';\r\n // });\r\n var code = '';\r\n if (isControlListEmpty) {\r\n code = designerCodeForFirstControl;\r\n } else {\r\n var html = dev_document.designer_html || '';\r\n var css = ``;\r\n code = html + css;\r\n }\r\n editor.CssComposer.clear();\r\n editor.DomComponents.getWrapper().set('content', '');\r\n editor.setComponents(code.trim());\r\n StateManager.init(editor, dev_document.states_data);\r\n var currentDocumentMeta = controlsMeta.filter(function(e) {\r\n return e.control_id == dev_document.control_id;\r\n })[0];\r\n // var currentDocumentMeta = controlsMeta.find(function(e) {\r\n // return e.control_id == dev_document.control_id;\r\n // });\r\n dev_document['group'] = currentDocumentMeta.group;\r\n dev_document['status'] = currentDocumentMeta.status;\r\n dev_document['isDeprecated'] = currentDocumentMeta.isDeprecated || 0;\r\n dev_document['isOnMarketplace'] = currentDocumentMeta.isOnMarketplace || 0;\r\n // current_control.value = JSON.stringify(dev_document);\r\n editor.Config.current_control = JSON.stringify(dev_document);\r\n\r\n hideLoader();\r\n if (isControlListEmpty) {\r\n isControlListEmpty = false;\r\n saveButtonClicked();\r\n }\r\n };\r\n var onAjaxError = function(data) {\r\n hideLoader();\r\n if (data.status == 401) {\r\n ShowVSAlert('error', \"It seems like you've been logged out.\");\r\n }\r\n console.devLog('1');\r\n console.devLog(data);\r\n };\r\n fnAjaxRequest(\r\n url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess,\r\n onAjaxError\r\n );\r\n};\r\nvar HandleBarsHelpers = function() {\r\n Handlebars.registerHelper('ifCond', function(v1, v2, options) {\r\n if (v1 === v2) {\r\n return options.fn(this);\r\n }\r\n return options.inverse(this);\r\n });\r\n};\r\nHandleBarsHelpers();\r\n\r\n/**\r\n * upload image to s3 and returns image url.\r\n */\r\nvar uploadImagetoS3 = function(fileData, success, error) {\r\n if (fileData) {\r\n var formData = new FormData();\r\n if (fileData instanceof Blob) {\r\n var extension = fileData.type.split('/')[1];\r\n formData.append(\r\n 'blob',\r\n fileData,\r\n 'api_' + new Date().getTime() + '.' + extension\r\n );\r\n } else {\r\n formData.append('file', fileData);\r\n }\r\n formData.append('dhqOperation', 'sessionImageUpload');\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: url + 'Handler/FormBuilderResponseHandler.ashx',\r\n data: formData,\r\n success: success.bind(this),\r\n error: error.bind(this),\r\n processData: false,\r\n contentType: false\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * hides the group and modal from the edit and add control modal.\r\n */\r\nvar hideGroupAndIconFromModal = function() {\r\n let $group,\r\n $iconPicker,\r\n $marketplace,\r\n $mkpgrp,\r\n $mkpimgupload,\r\n $supdevice,\r\n $status,\r\n $depricated;\r\n $group = $('.edit-control-card .item-wrapper.group');\r\n $iconPicker = $('.edit-control-card .item-wrapper.icon-picker');\r\n $marketplace = $('.edit-control-card .item-wrapper .isOnMarketplace');\r\n $mkpgrp = $('.edit-control-card .item-wrapper.marketplace-group');\r\n $mkpimgupload = $('.edit-control-card .item-wrapper.image');\r\n $supdevice = $('.edit-control-card .item-wrapper.sd');\r\n $status = $('.edit-control-card .item-wrapper.status');\r\n $depricated = $('.edit-control-card .item-wrapper.depricated');\r\n if ($marketplace.length && $marketplace.prop('checked')) {\r\n $group.addClass('hide');\r\n $iconPicker.addClass('hide');\r\n $status.addClass('hide');\r\n $depricated.addClass('hide');\r\n $mkpgrp.removeClass('hide');\r\n $mkpimgupload.removeClass('hide');\r\n $supdevice.removeClass('hide');\r\n } else if ($marketplace.length) {\r\n $group.removeClass('hide');\r\n $iconPicker.removeClass('hide');\r\n $status.removeClass('hide');\r\n $depricated.removeClass('hide');\r\n $mkpgrp.addClass('hide');\r\n $mkpimgupload.addClass('hide');\r\n $supdevice.addClass('hide');\r\n }\r\n};\r\n\r\nvar bindDragEvents = function($droparea, target) {\r\n let dropArea = $droparea[0];\r\n ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {\r\n dropArea.addEventListener(eventName, preventDefaults, false);\r\n });\r\n dropArea.addEventListener('drop', handleDrop.bind(this), false);\r\n\r\n function handleDrop(e) {\r\n let dt = e.dataTransfer;\r\n let files = dt.files;\r\n if (target == 'add') {\r\n var $loader = $('.add-control-card .item-wrapper.image .image_loader');\r\n $loader.removeClass('hide');\r\n uploadImagetoS3(\r\n files[0],\r\n addControlMarketplaceImgSuccess.bind($loader),\r\n errorForControlMarketplaceImg.bind($loader)\r\n );\r\n } else {\r\n var $loader = $('.edit-control-card .item-wrapper.image .image_loader');\r\n $loader.removeClass('hide');\r\n uploadImagetoS3(\r\n files[0],\r\n editControlMarketplaceImgSuccess.bind($loader),\r\n errorForControlMarketplaceImg.bind($loader)\r\n );\r\n }\r\n }\r\n\r\n function preventDefaults(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n};\r\n\r\nvar addControlMarketplaceImgSuccess = function(data) {\r\n if (typeof data === 'string') {\r\n data = JSON.parse(data);\r\n }\r\n $('.add-control-card .item-wrapper.image .marketplace-icon img').attr(\r\n 'src',\r\n data.image_url\r\n );\r\n this.addClass('hide');\r\n};\r\n\r\nvar editControlMarketplaceImgSuccess = function(data) {\r\n if (typeof data === 'string') {\r\n data = JSON.parse(data);\r\n }\r\n $('.edit-control-card .item-wrapper.image .marketplace-icon img').attr(\r\n 'src',\r\n data.image_url\r\n );\r\n this.addClass('hide');\r\n};\r\n\r\nasync function validateCss() {\r\n let data = await exportPlugin.validateCss();\r\n if (!data.success) {\r\n ShowVSAlert('error', data.resp, 10000);\r\n }\r\n return data;\r\n}\r\n\r\nvar errorForControlMarketplaceImg = function(error) {\r\n console.log(error);\r\n this.addClass('hide');\r\n};\r\nvar bindClickEvent = function() {\r\n // market place toggle button for add and edit modal events\r\n $('body').on(\r\n 'click',\r\n '.edit-control-card .item-wrapper.image .drop_zone span',\r\n function() {\r\n $('.edit-control-card .item-wrapper.image input').trigger('click');\r\n }\r\n );\r\n $('body').on(\r\n 'change',\r\n '.edit-control-card .item-wrapper.image input',\r\n function(e) {\r\n var fileData = e.target.files && e.target.files[0];\r\n var $loader = $('.edit-control-card .item-wrapper.image .image_loader');\r\n $loader.removeClass('hide');\r\n uploadImagetoS3(\r\n fileData,\r\n editControlMarketplaceImgSuccess.bind($loader),\r\n errorForControlMarketplaceImg.bind($loader)\r\n );\r\n }\r\n );\r\n bindDragEvents(\r\n $('.edit-control-card .item-wrapper.image .image-upload-holder'),\r\n 'edit'\r\n );\r\n $('body').on(\r\n 'change',\r\n '.edit-control-card .isOnMarketplace:input',\r\n function() {\r\n hideGroupAndIconFromModal('edit');\r\n }\r\n );\r\n $('.edit-control-card .item-wrapper.sd .select-bar .item').on(\r\n 'click',\r\n function(e) {\r\n $(e.currentTarget).toggleClass('selected');\r\n }\r\n );\r\n /// market place events end here\r\n $('body').on('click', '.accordion-body .script_item', function() {\r\n var $this = $(this);\r\n $('.accordion-body .script_item').removeClass('is-component-selected');\r\n $this.addClass('is-component-selected');\r\n var id = $this.data('control_id');\r\n let name = $this.find('.script_id').text();\r\n editor.Panels.getPanel('controlName').set(\r\n 'prependContent',\r\n `
${name}
`\r\n );\r\n showLoader();\r\n getComponent(id);\r\n });\r\n $('.region-one-image').on('click', function() {\r\n window.location.href = '/apps.aspx';\r\n });\r\n $('.display-header-option-script').on('click', function() {\r\n var $this = $(this);\r\n $('.display-header-option-script').removeClass('is-selected');\r\n $this.addClass('is-selected');\r\n var clicked = $this.data('for');\r\n $('.editor-body').addClass('editor-hidden');\r\n $('#' + clicked).removeClass('editor-hidden');\r\n });\r\n $('.sidebar-close-button').on('click', function() {\r\n closeSidebar();\r\n });\r\n $('.list-header .header-main .header-primary .search input').on(\r\n 'input',\r\n function() {\r\n var $this = $(this);\r\n var searchText = $this.val().toLowerCase();\r\n $('.accordion-body.for-functions .script_item').each(function(index, el) {\r\n var $el = $(el);\r\n var control_name = $el.find('.script_id').text();\r\n if (control_name.toLowerCase().includes(searchText)) {\r\n $el.show();\r\n } else {\r\n $el.hide();\r\n }\r\n });\r\n }\r\n );\r\n $('.header-accordion').on('click', function() {\r\n // var $this = $(this);\r\n // var accordionFor = $this.data('for');\r\n // $(\".\" + accordionFor).slideToggle();\r\n });\r\n $('body').on('click', '.vsCodeAlert .close-button', function() {\r\n $('.vsCodeAlert').fadeOut();\r\n });\r\n $('.add-control-card .actions .close-button').on('click', function() {\r\n clearAddNewComponentFields();\r\n });\r\n $('.edit-control-card .actions .close-button').on('click', function() {\r\n clearUpdateComponentFields();\r\n });\r\n $('.region-two-button-publish').on('click', function() {\r\n // var errorsInCode = monaco.editor.getModelMarkers({});\r\n // if (errorsInCode.length == 0) {\r\n $('.overlay-vs-input.for-publish').css('display', 'block');\r\n $('.vsCodeInput .release_notes').focus();\r\n $('.overlay-vs-input.for-publish')\r\n .off('keydown')\r\n .on('keydown', function(e) {\r\n if (e.keyCode == 13) {\r\n $('.vsCodeInput.publish .accept-button').trigger('click');\r\n $('.vsCodeInput .release_notes').blur();\r\n }\r\n })\r\n .keydown(function(e) {\r\n if (e.keyCode == 27) {\r\n $('.actions .close-button').trigger('click');\r\n $('.vsCodeInput .release_notes').blur();\r\n }\r\n });\r\n // } else {\r\n // ShowVSAlert('error', 'Document contains errors,Please correct before saving')\r\n // }\r\n });\r\n $('.vsCodeInput.publish .accept-button').on('click', function() {\r\n $(this).addClass('disabled');\r\n var Notes = $('.vsCodeInput .release_notes').val();\r\n if (!Notes) {\r\n $('.vsCodeInput .release_notes').addClass('red-border');\r\n return false;\r\n } else {\r\n $('.vsCodeInput .release_notes').removeClass('red-border');\r\n }\r\n $('.vsCodeInput .loader-wrapper').fadeIn();\r\n\r\n // var isControlNamesValid = validateControlNamesOnScripts()\r\n // if (!isControlNamesValid) {\r\n // $('.vsCodeInput .loader-wrapper').fadeOut();\r\n // return;\r\n // }\r\n saveButtonClicked();\r\n PublishCode();\r\n });\r\n $('.add-control-card .actions .accept-button').on('click', function() {\r\n var $nameContainer = $(\r\n '.add-control-card .item-wrapper.name .text-value input'\r\n );\r\n var $dispNameContainer = $(\r\n '.add-control-card .item-wrapper.disp-name .text-value input'\r\n );\r\n var $searchTagContainer = $(\r\n '.add-control-card .item-wrapper.search-tag .text-value input'\r\n );\r\n var $groupContainer = $(\r\n '.add-control-card .item-wrapper.group .text-value select'\r\n );\r\n var $IconContainer = $('.add-control-card .icon-picker .image-url');\r\n\r\n var f_name = $nameContainer.val().trim();\r\n var display_name = $dispNameContainer.val().trim();\r\n var SearchTag = $searchTagContainer.val();\r\n var group = $groupContainer.val();\r\n var IconURL = $IconContainer.val();\r\n\r\n var isValidFname = validateField($nameContainer, {\r\n checkIsEmpty: true,\r\n checkSpecialChar: true,\r\n checkSpace: true\r\n });\r\n var isValidDisplayName = validateField($dispNameContainer, {\r\n checkIsEmpty: true,\r\n checkSpecialChar: true,\r\n checkSpace: false\r\n });\r\n var isValidSearchTag = validateField($searchTagContainer, {\r\n checkIsEmpty: false,\r\n checkSpecialChar: true,\r\n checkSpace: false,\r\n ignoreSpecialCharacter: ','\r\n });\r\n\r\n var isFilledGroup = group == '' ? false : true;\r\n var isIconPicked = IconURL == '' ? false : true;\r\n\r\n if (!isFilledGroup) {\r\n $('.add-control-card .dropdown-dark').addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $groupContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a group'\r\n );\r\n } else {\r\n $('.add-control-card .dropdown-dark').removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $groupContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n if (!isIconPicked) {\r\n $('.add-control-card .existing-icon-list').addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $IconContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a component Icon'\r\n );\r\n } else {\r\n $('.add-control-card .existing-icon-list').removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $IconContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n\r\n if (\r\n isValidFname &&\r\n isValidDisplayName &&\r\n isValidSearchTag &&\r\n isFilledGroup &&\r\n isIconPicked\r\n ) {\r\n addNewComponent(f_name, display_name, SearchTag, group, IconURL);\r\n }\r\n });\r\n $('.edit-control-card .accept-button').on('click', function() {\r\n // var current_control_json = current_control.value;\r\n var current_control_json = editor.Config.current_control;\r\n if (current_control_json) {\r\n current_control_json = JSON.parse(current_control_json);\r\n }\r\n var control_id = current_control_json.control_id;\r\n var $dispNameContainer = $(\r\n '.edit-control-card .item-wrapper.disp-name .text-value input'\r\n );\r\n var $searchTagContainer = $(\r\n '.edit-control-card .item-wrapper.search-tag .text-value input'\r\n );\r\n var $groupContainer = $(\r\n '.edit-control-card .item-wrapper.group .text-value select'\r\n );\r\n var $IconContainer = $('.edit-control-card .icon-picker .image-url');\r\n\r\n var $MarketplaceToggle = $('.edit-control-card .marketplace input');\r\n\r\n var $MarketplaceGroup = $('.edit-control-card .marketplace-group select');\r\n\r\n var $MarketplaceImage = $('.edit-control-card .item-wrapper.image img');\r\n\r\n var $supdevices = $('.edit-control-card .item-wrapper.sd .select-bar');\r\n\r\n var status = $('.edit-control-card .item-wrapper.status .mobileToggle')[0]\r\n .checked\r\n ? 1\r\n : 0;\r\n var isDeprecated = $(\r\n '.edit-control-card .item-wrapper.depricated .isDeprecated'\r\n )[0].checked\r\n ? 1\r\n : 0;\r\n\r\n var IconURL = $IconContainer.val();\r\n var display_name = $dispNameContainer.val();\r\n var SearchTag = $searchTagContainer.val();\r\n var isOnMarketplace = $MarketplaceToggle.prop('checked');\r\n var imageurl = $MarketplaceImage.prop('src');\r\n var supdevices = [];\r\n $supdevices.find('.item.selected').each(function(i, e) {\r\n supdevices.push(e.dataset.device);\r\n });\r\n var isValidDisplayName = validateField($dispNameContainer, {\r\n checkIsEmpty: true,\r\n checkSpecialChar: true,\r\n checkSpace: false\r\n });\r\n var isValidSearchTag = validateField($searchTagContainer, {\r\n checkIsEmpty: true,\r\n checkSpecialChar: false,\r\n checkSpace: false\r\n });\r\n\r\n var group = $groupContainer.val();\r\n var marketplaceGroup = $MarketplaceGroup.val();\r\n\r\n if (isOnMarketplace) {\r\n var isFilledGroup = true;\r\n var isIconPicked = true;\r\n var isMarketGroupFilled = marketplaceGroup.length == 0 ? false : true;\r\n var isImageUploaded = imageurl.indexOf('amazonaws') > -1 ? true : false;\r\n var isdeviceselected = supdevices.length > 0 ? true : false;\r\n if (!isMarketGroupFilled) {\r\n $('.edit-control-card .marketplace-group .dropdown-dark').addClass(\r\n 'red-border'\r\n );\r\n showErrorInAddScriptModal(\r\n $MarketplaceGroup.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a group'\r\n );\r\n } else {\r\n $('.edit-control-card .marketplace-group .dropdown-dark').removeClass(\r\n 'red-border'\r\n );\r\n showErrorInAddScriptModal(\r\n $MarketplaceGroup.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n if (!isdeviceselected) {\r\n $supdevices.addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $supdevices.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a supported device'\r\n );\r\n } else {\r\n $supdevices.removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $supdevices.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n if (!isImageUploaded) {\r\n $('.edit-control-card .image-upload-holder').addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $MarketplaceImage.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please upload an Icon'\r\n );\r\n } else {\r\n $('.edit-control-card .image-upload-holder').removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $MarketplaceImage.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n } else {\r\n var isFilledGroup = group == '' ? false : true;\r\n var isIconPicked = IconURL == '' ? false : true;\r\n var isMarketGroupFilled = true;\r\n var isImageUploaded = true;\r\n var isdeviceselected = true;\r\n if (!isFilledGroup) {\r\n $('.edit-control-card .dropdown-dark').addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $groupContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a group'\r\n );\r\n } else {\r\n $('.edit-control-card .dropdown-dark').removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $groupContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n\r\n if (!isIconPicked) {\r\n $('.edit-control-card .existing-icon-list').addClass('red-border');\r\n showErrorInAddScriptModal(\r\n $IconContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n 'Please select a component Icon'\r\n );\r\n } else {\r\n $('.edit-control-card .existing-icon-list').removeClass('red-border');\r\n showErrorInAddScriptModal(\r\n $IconContainer.parents('.item-wrapper').find('.error-msg-box'),\r\n ''\r\n );\r\n }\r\n }\r\n\r\n if (\r\n isValidDisplayName &&\r\n isValidSearchTag &&\r\n isFilledGroup &&\r\n isMarketGroupFilled &&\r\n isImageUploaded &&\r\n isdeviceselected &&\r\n isIconPicked\r\n ) {\r\n current_control_json.display_name = display_name;\r\n current_control_json.status = status;\r\n current_control_json.tags = SearchTag;\r\n current_control_json.group = Number(group);\r\n current_control_json.isDeprecated = isDeprecated;\r\n current_control_json.icon_url = IconURL;\r\n current_control_json.isOnMarketplace = isOnMarketplace;\r\n current_control_json.marketplace_data = {\r\n group: marketplaceGroup,\r\n image: imageurl,\r\n devices: supdevices\r\n };\r\n\r\n // current_control.value = JSON.stringify(current_control_json);\r\n editor.Config.current_control = JSON.stringify(current_control_json);\r\n updateControlMetaData(\r\n control_id,\r\n display_name,\r\n SearchTag,\r\n group,\r\n status,\r\n IconURL,\r\n isDeprecated,\r\n isOnMarketplace,\r\n marketplaceGroup,\r\n imageurl,\r\n supdevices\r\n );\r\n }\r\n });\r\n $('.for-edit-function .close-button').on('click', function() {\r\n clearModalContentForAll();\r\n clearUpdateComponentFields();\r\n $('.for-edit-function').fadeOut();\r\n });\r\n $(\r\n '.add-control-card .body .item-wrapper.icon-picker .existing-icon-list .icon-image'\r\n )\r\n .off('click')\r\n .on('click', function() {\r\n var $this = $(this);\r\n var imageURL = $this.find('.ui.image').data('cmpIconUrl');\r\n $(\r\n '.add-control-card .body .item-wrapper.icon-picker .existing-icon-list .icon-image'\r\n ).removeClass('is-selected');\r\n $this.addClass('is-selected');\r\n $('.add-control-card .icon-picker .image-url').val(imageURL);\r\n });\r\n $(\r\n '.edit-control-card .body .item-wrapper.icon-picker .existing-icon-list .icon-image'\r\n )\r\n .off('click')\r\n .on('click', function() {\r\n var $this = $(this);\r\n var imageURL = $this.find('.ui.image').data('cmpIconUrl');\r\n\r\n $(\r\n '.edit-control-card .body .item-wrapper.icon-picker .existing-icon-list .icon-image'\r\n ).removeClass('is-selected');\r\n $this.addClass('is-selected');\r\n $('.edit-control-card .icon-picker .image-url').val(imageURL);\r\n });\r\n $('.for-add-function .header-close-button')\r\n .off('click')\r\n .on('click', function() {\r\n $('.overlay-vs-input.for-add-function').fadeOut(function() {\r\n clearModalContentForAll();\r\n clearAddNewComponentFields();\r\n });\r\n });\r\n $('.actions .close-button')\r\n .off('click')\r\n .on('click', function() {\r\n $('.overlay-vs-input').fadeOut(function() {\r\n clearModalContentForAll();\r\n $('.release_notes').val('');\r\n });\r\n });\r\n $('.vsCodeInput .header .close-button')\r\n .off('click')\r\n .on('click', function() {\r\n $('.overlay-vs-input').css('display', 'none');\r\n });\r\n $(window).bind('keydown', function(event) {\r\n event.stopPropagation();\r\n if (event.key === 'Escape') {\r\n handleEscapeButton();\r\n }\r\n if (event.ctrlKey || event.metaKey) {\r\n switch (String.fromCharCode(event.which).toLowerCase()) {\r\n case 's':\r\n event.preventDefault();\r\n $('.region-two-button-save').trigger('click');\r\n break;\r\n case 'p':\r\n if (event.altKey) {\r\n event.preventDefault();\r\n $('.region-two-button-publish').trigger('click');\r\n }\r\n break;\r\n case 'b':\r\n $('.open-drawer').trigger('click');\r\n break;\r\n case '¼':\r\n case '¾':\r\n shiftTabToLeft(event);\r\n break;\r\n }\r\n }\r\n // if((e.ctrlKey && e.which == 9)){\r\n // alert('lol')\r\n // }\r\n });\r\n\r\n // documentation\r\n $('body').on('mouseenter', '[data-hover_popup_doc_id]', infoPlugin.showPopUp);\r\n $('body').on('click', '[data-popup_doc_id]', infoPlugin.showPopUp);\r\n};\r\n\r\nvar init = async function() {\r\n await getAllControlIcons();\r\n await getControlsGroup();\r\n await getMkpControlsGroup();\r\n infoPlugin.init();\r\n bindClickEvent();\r\n editorEventHandler.initEventHandler();\r\n editor.Panels.getButton('views', 'open-blocks').set('active', 1);\r\n};\r\n\r\nexport default {\r\n addControl: openAddControlModal,\r\n editControl: openEditControlModal,\r\n saveControl: saveButtonClicked,\r\n openSidebar: openSidebar,\r\n export: openPublishModal,\r\n init: init,\r\n validateCss: validateCss,\r\n stateManager: StateManager,\r\n exportPlugin: exportPlugin,\r\n infoPlugin: infoPlugin\r\n};\r\n","// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nmodule.exports = function prettierBytes (num) {\n if (typeof num !== 'number' || isNaN(num)) {\n throw new TypeError('Expected a number, got ' + typeof num)\n }\n\n var neg = num < 0\n var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n if (neg) {\n num = -num\n }\n\n if (num < 1) {\n return (neg ? '-' : '') + num + ' B'\n }\n\n var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = Number(num / Math.pow(1024, exponent))\n var unit = units[exponent]\n\n if (num >= 10 || num % 1 === 0) {\n // Do not show decimals when the number is two-digit, or if the number has no\n // decimal component.\n return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit\n } else {\n return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit\n }\n}\n","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar NetworkError = /*#__PURE__*/function (_Error) {\n _inheritsLoose(NetworkError, _Error);\n\n function NetworkError(error, xhr) {\n var _this;\n\n if (xhr === void 0) {\n xhr = null;\n }\n\n _this = _Error.call(this, \"This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.\\n\\nSource error: [\" + error + \"]\") || this;\n _this.isNetworkError = true;\n _this.request = xhr;\n return _this;\n }\n\n return NetworkError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nmodule.exports = NetworkError;","/**\n * Array.prototype.findIndex ponyfill for old browsers.\n */\nfunction findIndex(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) return i;\n }\n\n return -1;\n}\n\nfunction createCancelError() {\n return new Error('Cancelled');\n}\n\nmodule.exports = /*#__PURE__*/function () {\n function RateLimitedQueue(limit) {\n if (typeof limit !== 'number' || limit === 0) {\n this.limit = Infinity;\n } else {\n this.limit = limit;\n }\n\n this.activeRequests = 0;\n this.queuedHandlers = [];\n }\n\n var _proto = RateLimitedQueue.prototype;\n\n _proto._call = function _call(fn) {\n var _this = this;\n\n this.activeRequests += 1;\n var _done = false;\n var cancelActive;\n\n try {\n cancelActive = fn();\n } catch (err) {\n this.activeRequests -= 1;\n throw err;\n }\n\n return {\n abort: function abort() {\n if (_done) return;\n _done = true;\n _this.activeRequests -= 1;\n cancelActive();\n\n _this._queueNext();\n },\n done: function done() {\n if (_done) return;\n _done = true;\n _this.activeRequests -= 1;\n\n _this._queueNext();\n }\n };\n };\n\n _proto._queueNext = function _queueNext() {\n var _this2 = this;\n\n // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n // one by one without continuously _advancing_ it (and starting new tasks before immediately\n // aborting them)\n Promise.resolve().then(function () {\n _this2._next();\n });\n };\n\n _proto._next = function _next() {\n if (this.activeRequests >= this.limit) {\n return;\n }\n\n if (this.queuedHandlers.length === 0) {\n return;\n } // Dispatch the next request, and update the abort/done handlers\n // so that cancelling it does the Right Thing (and doesn't just try\n // to dequeue an already-running request).\n\n\n var next = this.queuedHandlers.shift();\n\n var handler = this._call(next.fn);\n\n next.abort = handler.abort;\n next.done = handler.done;\n };\n\n _proto._queue = function _queue(fn, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var handler = {\n fn: fn,\n priority: options.priority || 0,\n abort: function abort() {\n _this3._dequeue(handler);\n },\n done: function done() {\n throw new Error('Cannot mark a queued request as done: this indicates a bug');\n }\n };\n var index = findIndex(this.queuedHandlers, function (other) {\n return handler.priority > other.priority;\n });\n\n if (index === -1) {\n this.queuedHandlers.push(handler);\n } else {\n this.queuedHandlers.splice(index, 0, handler);\n }\n\n return handler;\n };\n\n _proto._dequeue = function _dequeue(handler) {\n var index = this.queuedHandlers.indexOf(handler);\n\n if (index !== -1) {\n this.queuedHandlers.splice(index, 1);\n }\n };\n\n _proto.run = function run(fn, queueOptions) {\n if (this.activeRequests < this.limit) {\n return this._call(fn);\n }\n\n return this._queue(fn, queueOptions);\n };\n\n _proto.wrapPromiseFunction = function wrapPromiseFunction(fn, queueOptions) {\n var _this4 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var queuedRequest;\n var outerPromise = new Promise(function (resolve, reject) {\n queuedRequest = _this4.run(function () {\n var cancelError;\n var innerPromise;\n\n try {\n innerPromise = Promise.resolve(fn.apply(void 0, args));\n } catch (err) {\n innerPromise = Promise.reject(err);\n }\n\n innerPromise.then(function (result) {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n resolve(result);\n }\n }, function (err) {\n if (cancelError) {\n reject(cancelError);\n } else {\n queuedRequest.done();\n reject(err);\n }\n });\n return function () {\n cancelError = createCancelError();\n };\n }, queueOptions);\n });\n\n outerPromise.abort = function () {\n queuedRequest.abort();\n };\n\n return outerPromise;\n };\n };\n\n return RateLimitedQueue;\n}();","var throttle = require('lodash.throttle');\n\nfunction _emitSocketProgress(uploader, progressData, file) {\n var progress = progressData.progress,\n bytesUploaded = progressData.bytesUploaded,\n bytesTotal = progressData.bytesTotal;\n\n if (progress) {\n uploader.uppy.log(\"Upload progress: \" + progress);\n uploader.uppy.emit('upload-progress', file, {\n uploader: uploader,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n });\n }\n}\n\nmodule.exports = throttle(_emitSocketProgress, 300, {\n leading: true,\n trailing: true\n});","module.exports = function getSocketHost(url) {\n // get the host domain\n var regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n var host = regex.exec(url)[1];\n var socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n return socketProtocol + \"://\" + host;\n};","/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nmodule.exports = /*#__PURE__*/function () {\n function EventTracker(emitter) {\n this._events = [];\n this._emitter = emitter;\n }\n\n var _proto = EventTracker.prototype;\n\n _proto.on = function on(event, fn) {\n this._events.push([event, fn]);\n\n return this._emitter.on(event, fn);\n };\n\n _proto.remove = function remove() {\n var _this = this;\n\n this._events.forEach(function (_ref) {\n var event = _ref[0],\n fn = _ref[1];\n\n _this._emitter.off(event, fn);\n });\n };\n\n return EventTracker;\n}();","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // Internet Explorer and Edge do not support colors.\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n default: {\r\n id: '',\r\n name: '',\r\n className: '',\r\n icon: '',\r\n isActive: false\r\n },\r\n\r\n startRecordingState() {\r\n if (this.get('className')) {\r\n const commands = editor.Commands;\r\n let commandName = 'recordState';\r\n let command = commands.get(commandName);\r\n let options = {\r\n command: commandName\r\n };\r\n commands.runCommand(command, { ...options, sender: this });\r\n }\r\n },\r\n\r\n stopRecordingState() {\r\n if (this.get('className')) {\r\n const commands = editor.Commands;\r\n let commandName = 'recordState';\r\n let command = commands.get(commandName);\r\n let options = {\r\n command: commandName\r\n };\r\n commands.stopCommand(command, { ...options, sender: this, force: 1 });\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n /**\r\n * Start select position event\r\n * @param {HTMLElement} trg\r\n * @private\r\n * */\r\n startSelectPosition(trg, doc) {\r\n this.isPointed = false;\r\n var utils = this.editorModel.get('Utils');\r\n if (utils && !this.sorter)\r\n this.sorter = new utils.Sorter({\r\n container: this.getCanvasBody(),\r\n placer: this.canvas.getPlacerEl(),\r\n containerSel: '*',\r\n itemSel: '*',\r\n pfx: this.ppfx,\r\n direction: 'a',\r\n document: doc,\r\n wmargin: 1,\r\n nested: 1,\r\n em: this.editorModel,\r\n canvasRelative: 1,\r\n scale: () => this.em.getZoomDecimal()\r\n });\r\n trg && this.sorter.startSort(trg);\r\n },\r\n\r\n /**\r\n * Get frame position\r\n * @return {Object}\r\n * @private\r\n */\r\n getOffsetDim() {\r\n var frameOff = this.offset(this.canvas.getFrameEl());\r\n var canvasOff = this.offset(this.canvas.getElement());\r\n var top = frameOff.top - canvasOff.top;\r\n var left = frameOff.left - canvasOff.left;\r\n return { top, left };\r\n },\r\n\r\n /**\r\n * Stop select position event\r\n * @private\r\n * */\r\n stopSelectPosition() {\r\n this.posTargetCollection = null;\r\n this.posIndex =\r\n this.posMethod == 'after' && this.cDim.length !== 0\r\n ? this.posIndex + 1\r\n : this.posIndex; //Normalize\r\n if (this.sorter) {\r\n this.sorter.moved = 0;\r\n this.sorter.endMove();\r\n }\r\n if (this.cDim) {\r\n this.posIsLastEl =\r\n this.cDim.length !== 0 &&\r\n this.posMethod == 'after' &&\r\n this.posIndex == this.cDim.length;\r\n this.posTargetEl =\r\n this.cDim.length === 0\r\n ? $(this.outsideElem)\r\n : !this.posIsLastEl && this.cDim[this.posIndex]\r\n ? $(this.cDim[this.posIndex][5]).parent()\r\n : $(this.outsideElem);\r\n this.posTargetModel = this.posTargetEl.data('model');\r\n this.posTargetCollection = this.posTargetEl.data('model-comp');\r\n }\r\n },\r\n\r\n /**\r\n * Enabel select position\r\n * @private\r\n */\r\n enable() {\r\n this.startSelectPosition();\r\n },\r\n\r\n /**\r\n * Check if the pointer is near to the float component\r\n * @param {number} index\r\n * @param {string} method\r\n * @param {Array} dims\r\n * @return {Boolean}\r\n * @private\r\n * */\r\n nearFloat(index, method, dims) {\r\n var i = index || 0;\r\n var m = method || 'before';\r\n var len = dims.length;\r\n var isLast = len !== 0 && m == 'after' && i == len;\r\n if (\r\n len !== 0 &&\r\n ((!isLast && !dims[i][4]) ||\r\n (dims[i - 1] && !dims[i - 1][4]) ||\r\n (isLast && !dims[i - 1][4]))\r\n )\r\n return 1;\r\n return 0;\r\n },\r\n\r\n run() {\r\n this.enable();\r\n },\r\n\r\n stop() {\r\n this.stopSelectPosition();\r\n this.$wrapper.css('cursor', '');\r\n this.$wrapper.unbind();\r\n }\r\n};\r\n","import Promise from 'promise-polyfill';\r\n\r\nwindow.Promise = window.Promise || Promise;\r\n\r\nexport default (typeof fetch == 'function'\r\n ? fetch.bind()\r\n : (url, options) => {\r\n return new Promise((res, rej) => {\r\n const req = new XMLHttpRequest();\r\n req.open(options.method || 'get', url);\r\n req.withCredentials = options.credentials == 'include';\r\n\r\n for (let k in options.headers || {}) {\r\n req.setRequestHeader(k, options.headers[k]);\r\n }\r\n\r\n req.onload = e =>\r\n res({\r\n status: req.status,\r\n statusText: req.statusText,\r\n text: () => Promise.resolve(req.responseText)\r\n });\r\n req.onerror = rej;\r\n\r\n // Actually, fetch doesn't support onProgress feature\r\n if (req.upload && options.onProgress) {\r\n req.upload.onprogress = options.onProgress;\r\n }\r\n\r\n // Include body only if present\r\n options.body ? req.send(options.body) : req.send();\r\n });\r\n });\r\n","import { each, isString } from 'underscore';\r\n\r\nexport default config => {\r\n var TEXT_NODE = 'span';\r\n var c = config;\r\n var modelAttrStart = 'data-gjs-';\r\n\r\n return {\r\n compTypes: '',\r\n\r\n modelAttrStart,\r\n\r\n /**\r\n * Extract component props from an attribute object\r\n * @param {Object} attr\r\n * @returns {Object} An object containing props and attributes without them\r\n */\r\n splitPropsFromAttr(attr = {}) {\r\n const props = {};\r\n const attrs = {};\r\n\r\n each(attr, (value, key) => {\r\n if (key.indexOf(this.modelAttrStart) === 0) {\r\n const modelAttr = key.replace(modelAttrStart, '');\r\n const valueLen = value.length;\r\n const valStr = value && isString(value);\r\n const firstChar = valStr && value.substr(0, 1);\r\n const lastChar = valStr && value.substr(valueLen - 1);\r\n value = value === 'true' ? true : value;\r\n value = value === 'false' ? false : value;\r\n\r\n // Try to parse JSON where it's possible\r\n // I can get false positive here (eg. a selector '[data-attr]')\r\n // so put it under try/catch and let fail silently\r\n try {\r\n value =\r\n (firstChar == '{' && lastChar == '}') ||\r\n (firstChar == '[' && lastChar == ']')\r\n ? JSON.parse(value)\r\n : value;\r\n } catch (e) {}\r\n\r\n props[modelAttr] = value;\r\n } else {\r\n attrs[key] = value;\r\n }\r\n });\r\n\r\n return {\r\n props,\r\n attrs\r\n };\r\n },\r\n\r\n /**\r\n * Parse style string to object\r\n * @param {string} str\r\n * @return {Object}\r\n * @example\r\n * var stl = ParserHtml.parseStyle('color:black; width:100px; test:value;');\r\n * console.log(stl);\r\n * // {color: 'black', width: '100px', test: 'value'}\r\n */\r\n parseStyle(str) {\r\n var result = {};\r\n var decls = str.split(';');\r\n for (var i = 0, len = decls.length; i < len; i++) {\r\n var decl = decls[i].trim();\r\n if (!decl) continue;\r\n var prop = decl.split(':');\r\n result[prop[0].trim()] = prop\r\n .slice(1)\r\n .join(':')\r\n .trim();\r\n }\r\n return result;\r\n },\r\n\r\n /**\r\n * Parse class string to array\r\n * @param {string} str\r\n * @return {Array}\r\n * @example\r\n * var res = ParserHtml.parseClass('test1 test2 test3');\r\n * console.log(res);\r\n * // ['test1', 'test2', 'test3']\r\n */\r\n parseClass(str) {\r\n const result = [];\r\n const cls = str.split(' ');\r\n for (let i = 0, len = cls.length; i < len; i++) {\r\n const cl = cls[i].trim();\r\n if (!cl) continue;\r\n result.push(cl);\r\n }\r\n return result;\r\n },\r\n\r\n /**\r\n * Get data from the node element\r\n * @param {HTMLElement} el DOM element to traverse\r\n * @return {Array}\r\n */\r\n parseNode(el) {\r\n const result = [];\r\n const nodes = el.childNodes;\r\n\r\n for (var i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n const attrs = node.attributes || [];\r\n const attrsLen = attrs.length;\r\n const nodePrev = result[result.length - 1];\r\n const nodeChild = node.childNodes.length;\r\n const ct = this.compTypes;\r\n let model = {};\r\n\r\n // Start with understanding what kind of component it is\r\n if (ct) {\r\n let obj = '';\r\n let type =\r\n node.getAttribute && node.getAttribute(`${modelAttrStart}type`);\r\n\r\n // If the type is already defined, use it\r\n if (type) {\r\n model = { type };\r\n } else {\r\n // Iterate over all available Component Types and\r\n // the first with a valid result will be that component\r\n for (let it = 0; it < ct.length; it++) {\r\n const compType = ct[it];\r\n obj = compType.model.isComponent(node);\r\n\r\n if (obj) {\r\n if (typeof obj !== 'object') {\r\n obj = { type: compType.id };\r\n }\r\n break;\r\n }\r\n }\r\n\r\n model = obj;\r\n }\r\n }\r\n\r\n // Set tag name if not yet done\r\n if (!model.tagName) {\r\n model.tagName = node.tagName ? node.tagName.toLowerCase() : '';\r\n }\r\n\r\n if (attrsLen) {\r\n model.attributes = {};\r\n }\r\n\r\n // Parse attributes\r\n for (let j = 0; j < attrsLen; j++) {\r\n const nodeName = attrs[j].nodeName;\r\n let nodeValue = attrs[j].nodeValue;\r\n\r\n // Isolate attributes\r\n if (nodeName == 'style') {\r\n model.style = this.parseStyle(nodeValue);\r\n } else if (nodeName == 'class') {\r\n model.classes = this.parseClass(nodeValue);\r\n } else if (nodeName == 'contenteditable') {\r\n continue;\r\n } else if (nodeName.indexOf(modelAttrStart) === 0) {\r\n const modelAttr = nodeName.replace(modelAttrStart, '');\r\n const valueLen = nodeValue.length;\r\n const firstChar = nodeValue && nodeValue.substr(0, 1);\r\n const lastChar = nodeValue && nodeValue.substr(valueLen - 1);\r\n nodeValue = nodeValue === 'true' ? true : nodeValue;\r\n nodeValue = nodeValue === 'false' ? false : nodeValue;\r\n\r\n // Try to parse JSON where it's possible\r\n // I can get false positive here (eg. a selector '[data-attr]')\r\n // so put it under try/catch and let fail silently\r\n try {\r\n nodeValue =\r\n (firstChar == '{' && lastChar == '}') ||\r\n (firstChar == '[' && lastChar == ']')\r\n ? JSON.parse(nodeValue)\r\n : nodeValue;\r\n } catch (e) {}\r\n\r\n model[modelAttr] = nodeValue;\r\n } else {\r\n model.attributes[nodeName] = nodeValue;\r\n }\r\n }\r\n\r\n // Check for nested elements but avoid it if already provided\r\n if (nodeChild && !model.components) {\r\n // Avoid infinite nested text nodes\r\n const firstChild = node.childNodes[0];\r\n\r\n // If there is only one child and it's a TEXTNODE\r\n // just make it content of the current node\r\n if (nodeChild === 1 && firstChild.nodeType === 3) {\r\n !model.type && (model.type = 'text');\r\n model.content = firstChild.nodeValue;\r\n } else {\r\n model.components = this.parseNode(node);\r\n }\r\n }\r\n\r\n // Check if it's a text node and if could be moved to the prevous model\r\n if (model.type == 'textnode') {\r\n if (nodePrev && nodePrev.type == 'textnode') {\r\n nodePrev.content += model.content;\r\n continue;\r\n }\r\n\r\n // Throw away empty nodes (keep spaces)\r\n if (!config.keepEmptyTextNodes) {\r\n const content = node.nodeValue;\r\n if (content != ' ' && !content.trim()) {\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n // If all children are texts and there is some textnode the parent should\r\n // be text too otherwise I'm unable to edit texnodes\r\n const comps = model.components;\r\n if (!model.type && comps) {\r\n let allTxt = 1;\r\n let foundTextNode = 0;\r\n\r\n for (let ci = 0; ci < comps.length; ci++) {\r\n const comp = comps[ci];\r\n const cType = comp.type;\r\n\r\n if (\r\n ['text', 'textnode'].indexOf(cType) < 0 &&\r\n c.textTags.indexOf(comp.tagName) < 0\r\n ) {\r\n allTxt = 0;\r\n break;\r\n }\r\n\r\n if (cType == 'textnode') {\r\n foundTextNode = 1;\r\n }\r\n }\r\n\r\n if (allTxt && foundTextNode) {\r\n model.type = 'text';\r\n }\r\n }\r\n\r\n // If tagName is still empty and is not a textnode, do not push it\r\n if (!model.tagName && model.type != 'textnode') {\r\n continue;\r\n }\r\n\r\n result.push(model);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Parse HTML string to a desired model object\r\n * @param {string} str HTML string\r\n * @param {ParserCss} parserCss In case there is style tags inside HTML\r\n * @return {Object}\r\n */\r\n parse(str, parserCss) {\r\n var config = (c.em && c.em.get('Config')) || {};\r\n var res = { html: '', css: '' };\r\n var el = document.createElement('div');\r\n el.innerHTML = str;\r\n var scripts = el.querySelectorAll('script');\r\n var i = scripts.length;\r\n\r\n // Remove all scripts\r\n if (!config.allowScripts) {\r\n while (i--) scripts[i].parentNode.removeChild(scripts[i]);\r\n }\r\n\r\n // Detach style tags and parse them\r\n if (parserCss) {\r\n var styleStr = '';\r\n var styles = el.querySelectorAll('style');\r\n var j = styles.length;\r\n\r\n while (j--) {\r\n styleStr = styles[j].innerHTML + styleStr;\r\n styles[j].parentNode.removeChild(styles[j]);\r\n }\r\n\r\n if (styleStr) res.css = parserCss.parse(styleStr);\r\n }\r\n\r\n var result = this.parseNode(el);\r\n\r\n if (result.length == 1) result = result[0];\r\n\r\n res.html = result;\r\n\r\n return res;\r\n }\r\n };\r\n};\r\n","import { isFunction } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nconst Model = Backbone.Model;\r\nconst View = Backbone.View;\r\n\r\nexport default {\r\n types: [],\r\n\r\n initialize(models, opts) {\r\n this.model = (attrs = {}, options = {}) => {\r\n let Model, View, type;\r\n\r\n if (attrs && attrs.type) {\r\n const baseType = this.getBaseType();\r\n type = this.getType(attrs.type);\r\n Model = type ? type.model : baseType.model;\r\n View = type ? type.view : baseType.view;\r\n } else {\r\n const typeFound = this.recognizeType(attrs);\r\n type = typeFound.type;\r\n Model = type.model;\r\n View = type.view;\r\n attrs = typeFound.attributes;\r\n }\r\n\r\n const model = new Model(attrs, options);\r\n model.typeView = View;\r\n return model;\r\n };\r\n const init = this.init && this.init.bind(this);\r\n init && init();\r\n },\r\n\r\n /**\r\n * Recognize type by any value\r\n * @param {mixed} value\r\n * @return {Object} Found type\r\n */\r\n recognizeType(value) {\r\n const types = this.getTypes();\r\n\r\n for (let i = 0; i < types.length; i++) {\r\n const type = types[i];\r\n let typeFound = type.isType(value);\r\n typeFound =\r\n typeof typeFound == 'boolean' && typeFound\r\n ? { type: type.id }\r\n : typeFound;\r\n\r\n if (typeFound) {\r\n return {\r\n type,\r\n attributes: typeFound\r\n };\r\n }\r\n }\r\n\r\n // If, for any reason, the type is not found it'll return the base one\r\n return {\r\n type: this.getBaseType(),\r\n attributes: value\r\n };\r\n },\r\n\r\n /**\r\n * Returns the base type (last object in the stack)\r\n * @return {Object}\r\n */\r\n getBaseType() {\r\n const types = this.getTypes();\r\n return types[types.length - 1];\r\n },\r\n\r\n /**\r\n * Get types\r\n * @return {Array}\r\n */\r\n getTypes() {\r\n return this.types;\r\n },\r\n\r\n /**\r\n * Get type\r\n * @param {string} id Type ID\r\n * @return {Object} Type definition\r\n */\r\n getType(id) {\r\n const types = this.getTypes();\r\n\r\n for (let i = 0; i < types.length; i++) {\r\n const type = types[i];\r\n if (type.id === id) {\r\n return type;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Add new type\r\n * @param {string} id Type ID\r\n * @param {Object} definition Definition of the type. Each definition contains\r\n * `model` (business logic), `view` (presentation logic)\r\n * and `isType` function which recognize the type of the\r\n * passed entity\r\n * addType('my-type', {\r\n * model: {},\r\n * view: {},\r\n * isType: (value) => {},\r\n * })\r\n */\r\n addType(id, definition) {\r\n const type = this.getType(id);\r\n const baseType = this.getBaseType();\r\n const ModelInst = type ? type.model : baseType.model;\r\n const ViewInst = type ? type.view : baseType.view;\r\n let { model, view, isType } = definition;\r\n model =\r\n model instanceof Model || isFunction(model)\r\n ? model\r\n : ModelInst.extend(model || {});\r\n view =\r\n view instanceof View || isFunction(view)\r\n ? view\r\n : ViewInst.extend(view || {});\r\n\r\n if (type) {\r\n type.model = model;\r\n type.view = view;\r\n type.isType = isType || type.isType;\r\n } else {\r\n definition.id = id;\r\n definition.model = model;\r\n definition.view = view;\r\n definition.isType =\r\n isType ||\r\n function(value) {\r\n if (value && value.type == id) {\r\n return true;\r\n }\r\n };\r\n this.getTypes().unshift(definition);\r\n }\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n // Default view\r\n itemView: '',\r\n\r\n // Defines the View per type\r\n itemsView: '',\r\n\r\n itemType: 'type',\r\n\r\n initialize(opts, config) {\r\n this.config = config || {};\r\n },\r\n\r\n /**\r\n * Add new model to the collection\r\n * @param {Model} model\r\n * @private\r\n * */\r\n addTo(model) {\r\n this.add(model);\r\n },\r\n\r\n itemViewNotFound(type) {\r\n const { config, ns } = this;\r\n const { em } = config;\r\n const warn = `${ns ? `[${ns}]: ` : ''}'${type}' type not found`;\r\n em && em.logWarning(warn);\r\n },\r\n\r\n /**\r\n * Render new model inside the view\r\n * @param {Model} model\r\n * @param {Object} fragment Fragment collection\r\n * @private\r\n * */\r\n add(model, fragment) {\r\n const { config, reuseView, itemsView = {} } = this;\r\n var frag = fragment || null;\r\n var itemView = this.itemView;\r\n var typeField = model.get(this.itemType);\r\n let view;\r\n\r\n if (itemsView[typeField]) {\r\n itemView = itemsView[typeField];\r\n } else if (typeField && !itemsView[typeField]) {\r\n this.itemViewNotFound(typeField);\r\n }\r\n\r\n if (model.view && reuseView) {\r\n view = model.view;\r\n } else {\r\n view = new itemView({ model, config }, config);\r\n }\r\n\r\n var rendered = view.render().el;\r\n\r\n if (frag) frag.appendChild(rendered);\r\n else this.$el.append(rendered);\r\n },\r\n\r\n render() {\r\n var frag = document.createDocumentFragment();\r\n this.$el.empty();\r\n\r\n if (this.collection.length)\r\n this.collection.each(function(model) {\r\n this.add(model, frag);\r\n }, this);\r\n\r\n this.$el.append(frag);\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isUndefined } from 'underscore';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.opts = o || {};\r\n this.config = o.config || {};\r\n const coll = this.collection;\r\n this.listenTo(coll, 'add', this.addTo);\r\n this.listenTo(coll, 'reset', this.resetChildren);\r\n this.listenTo(coll, 'remove', this.removeChildren);\r\n },\r\n\r\n removeChildren(removed, coll, opts = {}) {\r\n const em = this.config.em;\r\n const view = removed.view;\r\n const tempComp = removed.opt.temporary;\r\n const tempRemove = opts.temporary;\r\n if (!view) return;\r\n view.remove.apply(view);\r\n const { childrenView, scriptContainer } = view;\r\n childrenView && childrenView.stopListening();\r\n scriptContainer && scriptContainer.remove();\r\n removed.components().forEach(it => this.removeChildren(it, coll, opts));\r\n\r\n if (em && !tempRemove) {\r\n // Remove the component from the global list\r\n const id = removed.getId();\r\n const domc = em.get('DomComponents');\r\n delete domc.componentsById[id];\r\n\r\n // Remove all related CSS rules\r\n const allRules = em.get('CssComposer').getAll();\r\n allRules.remove(\r\n allRules.filter(\r\n rule => rule.getSelectors().getFullString() === `#${id}`\r\n )\r\n );\r\n\r\n if (!tempComp) {\r\n const cm = em.get('Commands');\r\n const hasSign = removed.get('style-signature');\r\n const optStyle = { target: removed };\r\n hasSign && cm.run('core:component-style-clear', optStyle);\r\n removed.removed();\r\n em.trigger('component:remove', removed);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Add to collection\r\n * @param {Model} model\r\n * @param {Collection} coll\r\n * @param {Object} opts\r\n * @private\r\n * */\r\n addTo(model, coll = {}, opts = {}) {\r\n const em = this.config.em;\r\n const i = this.collection.indexOf(model);\r\n this.addToCollection(model, null, i);\r\n\r\n if (em && !opts.temporary) {\r\n const triggerAdd = model => {\r\n em.trigger('component:add', model);\r\n model.components().forEach(comp => triggerAdd(comp));\r\n };\r\n triggerAdd(model);\r\n }\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param {Object} Model\r\n * @param {Object} Fragment collection\r\n * @param {Integer} Index of append\r\n *\r\n * @return {Object} Object rendered\r\n * @private\r\n * */\r\n addToCollection(model, fragmentEl, index) {\r\n if (!this.compView) this.compView = require('./ComponentView').default;\r\n const { config, opts } = this;\r\n const fragment = fragmentEl || null;\r\n const dt = opts.componentTypes;\r\n const type = model.get('type');\r\n let viewObject = this.compView;\r\n\r\n for (let it = 0; it < dt.length; it++) {\r\n if (dt[it].id == type) {\r\n viewObject = dt[it].view;\r\n break;\r\n }\r\n }\r\n\r\n const view = new viewObject({\r\n model,\r\n config,\r\n componentTypes: dt\r\n });\r\n let rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n const parent = this.parentEl;\r\n const children = parent.childNodes;\r\n\r\n if (!isUndefined(index)) {\r\n const lastIndex = children.length == index;\r\n\r\n // If the added model is the last of collection\r\n // need to change the logic of append\r\n if (lastIndex) {\r\n index--;\r\n }\r\n\r\n // In case the added is new in the collection index will be -1\r\n if (lastIndex || !children.length) {\r\n parent.appendChild(rendered);\r\n } else {\r\n parent.insertBefore(rendered, children[index]);\r\n }\r\n } else {\r\n parent.appendChild(rendered);\r\n }\r\n }\r\n\r\n return rendered;\r\n },\r\n\r\n resetChildren() {\r\n this.parentEl.innerHTML = '';\r\n this.collection.each(model => this.addToCollection(model));\r\n },\r\n\r\n render(parent) {\r\n const el = this.el;\r\n const frag = document.createDocumentFragment();\r\n this.parentEl = parent || this.el;\r\n this.collection.each(model => this.addToCollection(model, frag));\r\n el.innerHTML = '';\r\n el.appendChild(frag);\r\n return this;\r\n }\r\n});\r\n","import { isUndefined, isString } from 'underscore';\r\nimport { getModel } from 'utils/mixins';\r\nimport Backbone from 'backbone';\r\nimport ComponentView from 'dom_components/view/ComponentView';\r\n\r\nconst inputProp = 'contentEditable';\r\nconst $ = Backbone.$;\r\nlet ItemsView;\r\n\r\nexport default Backbone.View.extend({\r\n events: {\r\n 'mousedown [data-toggle-move]': 'startSort',\r\n 'touchstart [data-toggle-move]': 'startSort',\r\n 'click [data-toggle-visible]': 'toggleVisibility',\r\n 'click [data-toggle-select]': 'handleSelect',\r\n 'mouseover [data-toggle-select]': 'handleHover',\r\n 'click [data-toggle-open]': 'toggleOpening',\r\n 'dblclick [data-name]': 'handleEdit',\r\n 'focusout [data-name]': 'handleEditEnd'\r\n },\r\n\r\n template(model) {\r\n const { pfx, ppfx, config, clsNoEdit } = this;\r\n const { hidable } = config;\r\n const count = this.countChildren(model);\r\n const addClass = !count ? this.clsNoChild : '';\r\n const clsTitle = `${this.clsTitle} ${addClass}`;\r\n const clsTitleC = `${this.clsTitleC} ${ppfx}one-bg`;\r\n const clsCaret = `${this.clsCaret} fa fa-chevron-right`;\r\n const clsInput = `${this.inputNameCls} ${clsNoEdit} ${ppfx}no-app`;\r\n const level = this.level + 1;\r\n const gut = `${30 + level * 10}px`;\r\n const name = model.getName();\r\n const icon = model.getIcon();\r\n const clsBase = `${pfx}layer`;\r\n\r\n return `\r\n ${\r\n hidable\r\n ? ``\r\n : ''\r\n }\r\n
\r\n
\r\n
\r\n \r\n ${icon ? `${icon}` : ''}\r\n ${name}\r\n
\r\n
\r\n
\r\n
${count || ''}
\r\n
\r\n \r\n
\r\n
`;\r\n },\r\n\r\n initialize(o = {}) {\r\n this.opt = o;\r\n this.level = o.level;\r\n this.config = o.config;\r\n this.em = o.config.em;\r\n this.ppfx = this.em.get('Config').stylePrefix;\r\n this.sorter = o.sorter || '';\r\n this.pfx = this.config.stylePrefix;\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const model = this.model;\r\n const components = model.get('components');\r\n const type = model.get('type') || 'default';\r\n model.set('open', false);\r\n this.listenTo(components, 'remove add reset', this.checkChildren);\r\n this.listenTo(model, 'change:status', this.updateStatus);\r\n this.listenTo(model, 'change:open', this.updateOpening);\r\n this.listenTo(model, 'change:style:display', this.updateVisibility);\r\n this.className = `${pfx}layer ${pfx}layer__t-${type} no-select ${ppfx}two-color`;\r\n this.inputNameCls = `${ppfx}layer-name`;\r\n this.clsTitleC = `${pfx}layer-title-c`;\r\n this.clsTitle = `${pfx}layer-title`;\r\n this.clsCaret = `${pfx}layer-caret`;\r\n this.clsCount = `${pfx}layer-count`;\r\n this.clsMove = `${pfx}layer-move`;\r\n this.clsChildren = `${pfx}layer-children`;\r\n this.clsNoChild = `${pfx}layer-no-chld`;\r\n this.clsEdit = `${this.inputNameCls}--edit`;\r\n this.clsNoEdit = `${this.inputNameCls}--no-edit`;\r\n this.$el.data('model', model);\r\n this.$el.data('collection', components);\r\n model.viewLayer = this;\r\n },\r\n\r\n getVisibilityEl() {\r\n if (!this.eyeEl) {\r\n this.eyeEl = this.$el.children(`.${this.pfx}layer-vis`);\r\n }\r\n\r\n return this.eyeEl;\r\n },\r\n\r\n updateVisibility() {\r\n const pfx = this.pfx;\r\n const model = this.model;\r\n const hClass = `${pfx}layer-hidden`;\r\n const hideIcon = 'fa-eye-slash';\r\n const hidden = model.getStyle().display == 'none';\r\n const method = hidden ? 'addClass' : 'removeClass';\r\n this.$el[method](hClass);\r\n this.getVisibilityEl()[method](hideIcon);\r\n },\r\n\r\n /**\r\n * Toggle visibility\r\n * @param\tEvent\r\n *\r\n * @return \tvoid\r\n * */\r\n toggleVisibility(e) {\r\n e && e.stopPropagation();\r\n const model = this.model;\r\n const style = model.getStyle();\r\n const hidden = style.display == 'none';\r\n\r\n if (hidden) {\r\n delete style.display;\r\n } else {\r\n style.display = 'none';\r\n }\r\n\r\n model.setStyle(style);\r\n },\r\n\r\n /**\r\n * Handle the edit of the component name\r\n */\r\n handleEdit(e) {\r\n e && e.stopPropagation();\r\n const { em, $el, clsNoEdit, clsEdit } = this;\r\n const inputEl = this.getInputName();\r\n inputEl[inputProp] = true;\r\n inputEl.focus();\r\n em && em.setEditing(1);\r\n $el\r\n .find(`.${this.inputNameCls}`)\r\n .removeClass(clsNoEdit)\r\n .addClass(clsEdit);\r\n },\r\n\r\n /**\r\n * Handle with the end of editing of the component name\r\n */\r\n handleEditEnd(e) {\r\n e && e.stopPropagation();\r\n const { em, $el, clsNoEdit, clsEdit } = this;\r\n const inputEl = this.getInputName();\r\n const name = inputEl.textContent;\r\n inputEl.scrollLeft = 0;\r\n inputEl[inputProp] = false;\r\n this.model.set({ name });\r\n em && em.setEditing(0);\r\n $el\r\n .find(`.${this.inputNameCls}`)\r\n .addClass(clsNoEdit)\r\n .removeClass(clsEdit);\r\n },\r\n\r\n /**\r\n * Get the input containing the name of the component\r\n * @return {HTMLElement}\r\n */\r\n getInputName() {\r\n if (!this.inputName) {\r\n this.inputName = this.el.querySelector(`.${this.inputNameCls}`);\r\n }\r\n return this.inputName;\r\n },\r\n\r\n /**\r\n * Update item opening\r\n *\r\n * @return void\r\n * */\r\n updateOpening() {\r\n var opened = this.opt.opened || {};\r\n var model = this.model;\r\n const chvDown = 'fa-chevron-down';\r\n\r\n if (model.get('open')) {\r\n this.$el.addClass('open');\r\n this.getCaret().addClass(chvDown);\r\n opened[model.cid] = model;\r\n } else {\r\n this.$el.removeClass('open');\r\n this.getCaret().removeClass(chvDown);\r\n delete opened[model.cid];\r\n }\r\n },\r\n\r\n /**\r\n * Toggle item opening\r\n * @param {Object}\te\r\n *\r\n * @return void\r\n * */\r\n toggleOpening(e) {\r\n e.stopPropagation();\r\n\r\n if (!this.model.get('components').length) return;\r\n\r\n this.model.set('open', !this.model.get('open'));\r\n },\r\n\r\n /**\r\n * Handle component selection\r\n */\r\n handleSelect(e) {\r\n e.stopPropagation();\r\n const { em, config } = this;\r\n\r\n if (em) {\r\n const model = this.model;\r\n em.setSelected(model, { fromLayers: 1 });\r\n const scroll = config.scrollCanvas;\r\n scroll && em.get('Canvas').scrollTo(model, scroll);\r\n }\r\n },\r\n\r\n /**\r\n * Handle component selection\r\n */\r\n handleHover(e) {\r\n e.stopPropagation();\r\n const { em, config, model } = this;\r\n em && config.showHover && em.setHovered(model, { fromLayers: 1 });\r\n },\r\n\r\n /**\r\n * Delegate to sorter\r\n * @param\tEvent\r\n * */\r\n startSort(e) {\r\n e.stopPropagation();\r\n const sorter = this.sorter;\r\n // Right or middel click\r\n if (e.button && e.button !== 0) return;\r\n sorter && sorter.startSort(e.target);\r\n },\r\n\r\n /**\r\n * Freeze item\r\n * @return\tvoid\r\n * */\r\n freeze() {\r\n this.$el.addClass(this.pfx + 'opac50');\r\n this.model.set('open', 0);\r\n },\r\n\r\n /**\r\n * Unfreeze item\r\n * @return\tvoid\r\n * */\r\n unfreeze() {\r\n this.$el.removeClass(this.pfx + 'opac50');\r\n },\r\n\r\n /**\r\n * Update item on status change\r\n * @param\tEvent\r\n * */\r\n updateStatus(e) {\r\n ComponentView.prototype.updateStatus.apply(this, [\r\n {\r\n avoidHover: !this.config.highlightHover\r\n }\r\n ]);\r\n },\r\n\r\n /**\r\n * Check if component is visible\r\n *\r\n * @return bool\r\n * */\r\n isVisible() {\r\n var css = this.model.get('style'),\r\n pr = css.display;\r\n if (pr && pr == 'none') return;\r\n return 1;\r\n },\r\n\r\n /**\r\n * Update item aspect after children changes\r\n *\r\n * @return void\r\n * */\r\n checkChildren() {\r\n const model = this.model;\r\n const count = this.countChildren(model);\r\n const pfx = this.pfx;\r\n const noChildCls = this.clsNoChild;\r\n const title = this.$el\r\n .children(`.${this.clsTitleC}`)\r\n .children(`.${this.clsTitle}`);\r\n\r\n if (!this.cnt) {\r\n this.cnt = this.$el.children(`.${this.clsCount}`);\r\n }\r\n\r\n if (count) {\r\n title.removeClass(noChildCls);\r\n this.cnt.html(count);\r\n } else {\r\n title.addClass(noChildCls);\r\n this.cnt.empty();\r\n model.set('open', 0);\r\n }\r\n },\r\n\r\n /**\r\n * Count children inside model\r\n * @param {Object} model\r\n * @return {number}\r\n * @private\r\n */\r\n countChildren(model) {\r\n var count = 0;\r\n model.get('components').each(function(m) {\r\n var isCountable = this.opt.isCountable;\r\n var hide = this.config.hideTextnode;\r\n if (isCountable && !isCountable(m, hide)) return;\r\n count++;\r\n }, this);\r\n return count;\r\n },\r\n\r\n getCaret() {\r\n if (!this.caret || !this.caret.length) {\r\n const pfx = this.pfx;\r\n this.caret = this.$el\r\n .children(`.${this.clsTitleC}`)\r\n .find(`.${this.clsCaret}`);\r\n }\r\n\r\n return this.caret;\r\n },\r\n\r\n setRoot(el) {\r\n el = isString(el) ? this.em.getWrapper().find(el)[0] : el;\r\n const model = getModel(el, $);\r\n if (!model) return;\r\n this.stopListening();\r\n this.model = model;\r\n this.initialize(this.opt);\r\n this.render();\r\n },\r\n\r\n render() {\r\n const { model, config, pfx, ppfx, opt } = this;\r\n const { isCountable } = opt;\r\n const hidden = isCountable && !isCountable(model, config.hideTextnode);\r\n const vis = this.isVisible();\r\n const el = this.$el.empty();\r\n const level = this.level + 1;\r\n\r\n if (isUndefined(ItemsView)) {\r\n ItemsView = require('./ItemsView').default;\r\n }\r\n\r\n const children = new ItemsView({\r\n collection: model.get('components'),\r\n config: this.config,\r\n sorter: this.sorter,\r\n opened: this.opt.opened,\r\n parent: model,\r\n level\r\n }).render().$el;\r\n\r\n if (!this.config.showWrapper && level === 1) {\r\n el.append(children);\r\n } else {\r\n el.html(this.template(model));\r\n el.find(`.${this.clsChildren}`).append(children);\r\n }\r\n\r\n if (!model.get('draggable') || !this.config.sortable) {\r\n el.children(`.${this.clsMove}`).remove();\r\n }\r\n\r\n !vis && (this.className += ` ${pfx}hide`);\r\n hidden && (this.className += ` ${ppfx}hidden`);\r\n el.attr('class', this.className);\r\n this.updateOpening();\r\n this.updateStatus();\r\n this.updateVisibility();\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isUndefined } from 'underscore';\r\nimport ColorPicker from 'utils/ColorPicker';\r\nimport Input from './Input';\r\n\r\nconst $ = Backbone.$;\r\nColorPicker($);\r\n\r\nexport default Input.extend({\r\n template() {\r\n const ppfx = this.ppfx;\r\n return `\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n },\r\n\r\n inputClass() {\r\n const ppfx = this.ppfx;\r\n return `${ppfx}field ${ppfx}field-color`;\r\n },\r\n\r\n holderClass() {\r\n return `${this.ppfx}input-holder`;\r\n },\r\n\r\n /**\r\n * Set value to the model\r\n * @param {string} val\r\n * @param {Object} opts\r\n */\r\n setValue(val, opts = {}) {\r\n const model = this.model;\r\n const def = model.get('defaults');\r\n const value = !isUndefined(val) ? val : !isUndefined(def) ? def : '';\r\n const inputEl = this.getInputEl();\r\n const colorEl = this.getColorEl();\r\n const valueClr = value != 'none' ? value : '';\r\n inputEl.value = value;\r\n colorEl.get(0).style.backgroundColor = valueClr;\r\n\r\n // This prevents from adding multiple thumbs in spectrum\r\n if (opts.fromTarget) {\r\n colorEl.spectrum('set', valueClr);\r\n this.noneColor = value == 'none';\r\n }\r\n },\r\n\r\n /**\r\n * Get the color input element\r\n * @return {HTMLElement}\r\n */\r\n getColorEl() {\r\n if (!this.colorEl) {\r\n const self = this;\r\n const ppfx = this.ppfx;\r\n var model = this.model;\r\n\r\n var colorEl = $(`
`);\r\n var cpStyle = colorEl.get(0).style;\r\n var elToAppend = this.em && this.em.config ? this.em.config.el : '';\r\n var colorPickerConfig =\r\n (this.em && this.em.getConfig && this.em.getConfig('colorPicker')) ||\r\n {};\r\n const getColor = color => {\r\n let cl =\r\n color.getAlpha() == 1 ? color.toHexString() : color.toRgbString();\r\n return cl.replace(/ /g, '');\r\n };\r\n\r\n let changed = 0;\r\n let previousColor;\r\n this.$el.find(`[data-colorp-c]`).append(colorEl);\r\n colorEl.spectrum({\r\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\r\n appendTo: elToAppend || 'body',\r\n maxSelectionSize: 8,\r\n showPalette: true,\r\n showAlpha: true,\r\n chooseText: 'Ok',\r\n cancelText: '⨯',\r\n palette: [],\r\n\r\n // config expanded here so that the functions below are not overridden\r\n ...colorPickerConfig,\r\n\r\n move(color) {\r\n const cl = getColor(color);\r\n cpStyle.backgroundColor = cl;\r\n model.setValueFromInput(cl, 0);\r\n },\r\n change(color) {\r\n changed = 1;\r\n const cl = getColor(color);\r\n cpStyle.backgroundColor = cl;\r\n model.setValueFromInput(cl);\r\n self.noneColor = 0;\r\n },\r\n show(color) {\r\n changed = 0;\r\n previousColor = getColor(color);\r\n },\r\n hide(color) {\r\n if (!changed && previousColor) {\r\n if (self.noneColor) {\r\n previousColor = '';\r\n }\r\n cpStyle.backgroundColor = previousColor;\r\n colorEl.spectrum('set', previousColor);\r\n model.setValueFromInput(previousColor, 0);\r\n }\r\n }\r\n });\r\n\r\n this.colorEl = colorEl;\r\n }\r\n return this.colorEl;\r\n },\r\n\r\n render() {\r\n Input.prototype.render.call(this);\r\n // This will make the color input available on render\r\n this.getColorEl();\r\n return this;\r\n }\r\n});\r\n","// Without jquery I have to update few stuff\r\n//\r\n// Spectrum Colorpicker v1.8.0\r\n// https://github.com/bgrins/spectrum\r\n// Author: Brian Grinstead\r\n// License: MIT\r\n\r\nexport default function($, undefined) {\r\n 'use strict';\r\n\r\n var defaultOpts = {\r\n // Callbacks\r\n beforeShow: noop,\r\n move: noop,\r\n change: noop,\r\n show: noop,\r\n hide: noop,\r\n\r\n // Options\r\n color: false,\r\n flat: false,\r\n showInput: false,\r\n allowEmpty: false,\r\n showButtons: true,\r\n clickoutFiresChange: true,\r\n showInitial: false,\r\n showPalette: false,\r\n showPaletteOnly: false,\r\n hideAfterPaletteSelect: false,\r\n togglePaletteOnly: false,\r\n showSelectionPalette: true,\r\n localStorageKey: false,\r\n appendTo: 'body',\r\n maxSelectionSize: 7,\r\n cancelText: 'cancel',\r\n chooseText: 'choose',\r\n togglePaletteMoreText: 'more',\r\n togglePaletteLessText: 'less',\r\n clearText: 'Clear Color Selection',\r\n noColorSelectedText: 'No Color Selected',\r\n preferredFormat: false,\r\n className: '', // Deprecated - use containerClassName and replacerClassName instead.\r\n containerClassName: '',\r\n replacerClassName: '',\r\n showAlpha: false,\r\n theme: 'sp-light',\r\n palette: [\r\n [\r\n '#ffffff',\r\n '#000000',\r\n '#ff0000',\r\n '#ff8000',\r\n '#ffff00',\r\n '#008000',\r\n '#0000ff',\r\n '#4b0082',\r\n '#9400d3'\r\n ]\r\n ],\r\n selectionPalette: [],\r\n disabled: false,\r\n offset: null\r\n },\r\n spectrums = [],\r\n IE = !!/msie/i.exec(window.navigator.userAgent),\r\n rgbaSupport = (function() {\r\n function contains(str, substr) {\r\n return !!~('' + str).indexOf(substr);\r\n }\r\n\r\n var elem = document.createElement('div');\r\n var style = elem.style;\r\n style.cssText = 'background-color:rgba(0,0,0,.5)';\r\n return (\r\n contains(style.backgroundColor, 'rgba') ||\r\n contains(style.backgroundColor, 'hsla')\r\n );\r\n })(),\r\n replaceInput = [\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n '
'\r\n ].join(''),\r\n markup = (function() {\r\n // IE does not support gradients with multiple stops, so we need to simulate\r\n // that for the rainbow slider with 8 divs that each have a single gradient\r\n var gradientFix = '';\r\n if (IE) {\r\n for (var i = 1; i <= 6; i++) {\r\n gradientFix += \"
\";\r\n }\r\n }\r\n\r\n return [\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"\",\r\n '
',\r\n '
',\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n \"
\",\r\n '
',\r\n '
',\r\n '
',\r\n \"
\",\r\n '
',\r\n \"
\",\r\n \"
\",\r\n gradientFix,\r\n '
',\r\n '
',\r\n \"
\",\r\n '
',\r\n \"
\",\r\n \"\",\r\n '
',\r\n \"
\",\r\n \"
\",\r\n \"\",\r\n \"\",\r\n '
',\r\n '
',\r\n '
'\r\n ].join('');\r\n })();\r\n\r\n function paletteTemplate(p, color, className, opts) {\r\n var html = [];\r\n for (var i = 0; i < p.length; i++) {\r\n var current = p[i];\r\n if (current) {\r\n var tiny = tinycolor(current);\r\n var c =\r\n tiny.toHsl().l < 0.5\r\n ? 'sp-thumb-el sp-thumb-dark'\r\n : 'sp-thumb-el sp-thumb-light';\r\n c += tinycolor.equals(color, current) ? ' sp-thumb-active' : '';\r\n var formattedString = tiny.toString(opts.preferredFormat || 'rgb');\r\n var swatchStyle = rgbaSupport\r\n ? 'background-color:' + tiny.toRgbString()\r\n : 'filter:' + tiny.toFilter();\r\n html.push(\r\n ''\r\n );\r\n } else {\r\n var cls = 'sp-clear-display';\r\n html.push(\r\n $('
')\r\n .append(\r\n $(\r\n ''\r\n ).attr('title', opts.noColorSelectedText)\r\n )\r\n .html()\r\n );\r\n }\r\n }\r\n return \"
\" + html.join('') + '
';\r\n }\r\n\r\n function hideAll() {\r\n for (var i = 0; i < spectrums.length; i++) {\r\n if (spectrums[i]) {\r\n spectrums[i].hide();\r\n }\r\n }\r\n }\r\n\r\n function instanceOptions(o, callbackContext) {\r\n var opts = $.extend({}, defaultOpts, o);\r\n opts.callbacks = {\r\n move: bind(opts.move, callbackContext),\r\n change: bind(opts.change, callbackContext),\r\n show: bind(opts.show, callbackContext),\r\n hide: bind(opts.hide, callbackContext),\r\n beforeShow: bind(opts.beforeShow, callbackContext)\r\n };\r\n return opts;\r\n }\r\n\r\n function spectrum(element, o) {\r\n var opts = instanceOptions(o, element),\r\n flat = opts.flat,\r\n showSelectionPalette = opts.showSelectionPalette,\r\n localStorageKey = opts.localStorageKey,\r\n theme = opts.theme,\r\n callbacks = opts.callbacks,\r\n resize = throttle(reflow, 10),\r\n visible = false,\r\n isDragging = false,\r\n dragWidth = 0,\r\n dragHeight = 0,\r\n dragHelperHeight = 0,\r\n slideHeight = 0,\r\n slideWidth = 0,\r\n alphaWidth = 0,\r\n alphaSlideHelperWidth = 0,\r\n slideHelperHeight = 0,\r\n currentHue = 0,\r\n currentSaturation = 0,\r\n currentValue = 0,\r\n currentAlpha = 1,\r\n palette = [],\r\n paletteArray = [],\r\n paletteLookup = {},\r\n selectionPalette = opts.selectionPalette.slice(0),\r\n maxSelectionSize = opts.maxSelectionSize,\r\n draggingClass = 'sp-dragging',\r\n shiftMovementDirection = null;\r\n\r\n var doc = element.ownerDocument,\r\n body = doc.body,\r\n boundElement = $(element),\r\n disabled = false,\r\n container = $(markup, doc).addClass(theme),\r\n pickerContainer = container.find('.sp-picker-container'),\r\n dragger = container.find('.sp-color'),\r\n dragHelper = container.find('.sp-dragger'),\r\n slider = container.find('.sp-hue'),\r\n slideHelper = container.find('.sp-slider'),\r\n alphaSliderInner = container.find('.sp-alpha-inner'),\r\n alphaSlider = container.find('.sp-alpha'),\r\n alphaSlideHelper = container.find('.sp-alpha-handle'),\r\n textInput = container.find('.sp-input'),\r\n paletteContainer = container.find('.sp-palette'),\r\n initialColorContainer = container.find('.sp-initial'),\r\n cancelButton = container.find('.sp-cancel'),\r\n clearButton = container.find('.sp-clear'),\r\n chooseButton = container.find('.sp-choose'),\r\n toggleButton = container.find('.sp-palette-toggle'),\r\n isInput = boundElement.is('input'),\r\n isInputTypeColor =\r\n isInput &&\r\n boundElement.attr('type') === 'color' &&\r\n inputTypeColorSupport(),\r\n shouldReplace = isInput && !flat,\r\n replacer = shouldReplace\r\n ? $(replaceInput)\r\n .addClass(theme)\r\n .addClass(opts.className)\r\n .addClass(opts.replacerClassName)\r\n : $([]),\r\n offsetElement = shouldReplace ? replacer : boundElement,\r\n previewElement = replacer.find('.sp-preview-inner'),\r\n initialColor = opts.color || (isInput && boundElement.val()),\r\n colorOnShow = false,\r\n currentPreferredFormat = opts.preferredFormat,\r\n clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange,\r\n isEmpty = !initialColor,\r\n allowEmpty = opts.allowEmpty && !isInputTypeColor;\r\n\r\n function applyOptions() {\r\n if (opts.showPaletteOnly) {\r\n opts.showPalette = true;\r\n }\r\n\r\n toggleButton.text(\r\n opts.showPaletteOnly\r\n ? opts.togglePaletteMoreText\r\n : opts.togglePaletteLessText\r\n );\r\n\r\n if (opts.palette) {\r\n palette = opts.palette.slice(0);\r\n paletteArray = $.isArray(palette[0]) ? palette : [palette];\r\n paletteLookup = {};\r\n for (var i = 0; i < paletteArray.length; i++) {\r\n for (var j = 0; j < paletteArray[i].length; j++) {\r\n var rgb = tinycolor(paletteArray[i][j]).toRgbString();\r\n paletteLookup[rgb] = true;\r\n }\r\n }\r\n }\r\n\r\n container.toggleClass('sp-flat', flat);\r\n container.toggleClass('sp-input-disabled', !opts.showInput);\r\n container.toggleClass('sp-alpha-enabled', opts.showAlpha);\r\n container.toggleClass('sp-clear-enabled', allowEmpty);\r\n container.toggleClass('sp-buttons-disabled', !opts.showButtons);\r\n container.toggleClass(\r\n 'sp-palette-buttons-disabled',\r\n !opts.togglePaletteOnly\r\n );\r\n container.toggleClass('sp-palette-disabled', !opts.showPalette);\r\n container.toggleClass('sp-palette-only', opts.showPaletteOnly);\r\n container.toggleClass('sp-initial-disabled', !opts.showInitial);\r\n container.addClass(opts.className).addClass(opts.containerClassName);\r\n\r\n reflow();\r\n }\r\n\r\n function initialize() {\r\n if (IE) {\r\n container.find('*:not(input)').attr('unselectable', 'on');\r\n }\r\n\r\n applyOptions();\r\n\r\n if (shouldReplace) {\r\n boundElement.after(replacer).hide();\r\n }\r\n\r\n if (!allowEmpty) {\r\n clearButton.hide();\r\n }\r\n\r\n if (flat) {\r\n boundElement.after(container).hide();\r\n } else {\r\n var appendTo =\r\n opts.appendTo === 'parent' ? boundElement.parent() : $(opts.appendTo);\r\n if (appendTo.length !== 1) {\r\n appendTo = $('body');\r\n }\r\n\r\n appendTo.append(container);\r\n }\r\n\r\n updateSelectionPaletteFromStorage();\r\n\r\n offsetElement.bind('click.spectrum touchstart.spectrum', function(e) {\r\n if (!disabled) {\r\n toggle();\r\n }\r\n\r\n e.stopPropagation();\r\n\r\n if (!$(e.target).is('input')) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n if (boundElement.is(':disabled') || opts.disabled === true) {\r\n disable();\r\n }\r\n\r\n // Prevent clicks from bubbling up to document. This would cause it to be hidden.\r\n container.click(stopPropagation);\r\n\r\n // Handle user typed input\r\n textInput.change(setFromTextInput);\r\n textInput.bind('paste', function() {\r\n setTimeout(setFromTextInput, 1);\r\n });\r\n textInput.keydown(function(e) {\r\n if (e.keyCode == 13) {\r\n setFromTextInput();\r\n }\r\n });\r\n\r\n cancelButton.text(opts.cancelText);\r\n cancelButton.bind('click.spectrum', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n revert();\r\n hide();\r\n });\r\n\r\n clearButton.attr('title', opts.clearText);\r\n clearButton.bind('click.spectrum', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n isEmpty = true;\r\n move();\r\n\r\n if (flat) {\r\n //for the flat style, this is a change event\r\n updateOriginalInput(true);\r\n }\r\n });\r\n\r\n chooseButton.text(opts.chooseText);\r\n chooseButton.bind('click.spectrum', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (IE && textInput.is(':focus')) {\r\n textInput.trigger('change');\r\n }\r\n\r\n if (isValid()) {\r\n updateOriginalInput(true);\r\n hide();\r\n }\r\n });\r\n\r\n toggleButton.text(\r\n opts.showPaletteOnly\r\n ? opts.togglePaletteMoreText\r\n : opts.togglePaletteLessText\r\n );\r\n toggleButton.bind('click.spectrum', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n opts.showPaletteOnly = !opts.showPaletteOnly;\r\n\r\n // To make sure the Picker area is drawn on the right, next to the\r\n // Palette area (and not below the palette), first move the Palette\r\n // to the left to make space for the picker, plus 5px extra.\r\n // The 'applyOptions' function puts the whole container back into place\r\n // and takes care of the button-text and the sp-palette-only CSS class.\r\n if (!opts.showPaletteOnly && !flat) {\r\n container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5));\r\n }\r\n applyOptions();\r\n });\r\n\r\n draggable(\r\n alphaSlider,\r\n function(dragX, dragY, e) {\r\n currentAlpha = dragX / alphaWidth;\r\n isEmpty = false;\r\n if (e.shiftKey) {\r\n currentAlpha = Math.round(currentAlpha * 10) / 10;\r\n }\r\n\r\n move();\r\n },\r\n dragStart,\r\n dragStop\r\n );\r\n\r\n draggable(\r\n slider,\r\n function(dragX, dragY) {\r\n currentHue = parseFloat(dragY / slideHeight);\r\n isEmpty = false;\r\n if (!opts.showAlpha) {\r\n currentAlpha = 1;\r\n }\r\n move();\r\n },\r\n dragStart,\r\n dragStop\r\n );\r\n\r\n draggable(\r\n dragger,\r\n function(dragX, dragY, e) {\r\n // shift+drag should snap the movement to either the x or y axis.\r\n if (!e.shiftKey) {\r\n shiftMovementDirection = null;\r\n } else if (!shiftMovementDirection) {\r\n var oldDragX = currentSaturation * dragWidth;\r\n var oldDragY = dragHeight - currentValue * dragHeight;\r\n var furtherFromX =\r\n Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY);\r\n\r\n shiftMovementDirection = furtherFromX ? 'x' : 'y';\r\n }\r\n\r\n var setSaturation =\r\n !shiftMovementDirection || shiftMovementDirection === 'x';\r\n var setValue =\r\n !shiftMovementDirection || shiftMovementDirection === 'y';\r\n\r\n if (setSaturation) {\r\n currentSaturation = parseFloat(dragX / dragWidth);\r\n }\r\n if (setValue) {\r\n currentValue = parseFloat((dragHeight - dragY) / dragHeight);\r\n }\r\n\r\n isEmpty = false;\r\n if (!opts.showAlpha) {\r\n currentAlpha = 1;\r\n }\r\n\r\n move();\r\n },\r\n dragStart,\r\n dragStop\r\n );\r\n\r\n if (!!initialColor) {\r\n set(initialColor);\r\n\r\n // In case color was black - update the preview UI and set the format\r\n // since the set function will not run (default color is black).\r\n updateUI();\r\n currentPreferredFormat =\r\n opts.preferredFormat || tinycolor(initialColor).format;\r\n\r\n addColorToSelectionPalette(initialColor);\r\n } else {\r\n updateUI();\r\n }\r\n\r\n if (flat) {\r\n show();\r\n }\r\n\r\n function paletteElementClick(e) {\r\n if (e.data && e.data.ignore) {\r\n set(\r\n $(e.target)\r\n .closest('.sp-thumb-el')\r\n .data('color')\r\n );\r\n move();\r\n } else {\r\n set(\r\n $(e.target)\r\n .closest('.sp-thumb-el')\r\n .data('color')\r\n );\r\n move();\r\n updateOriginalInput(true);\r\n if (opts.hideAfterPaletteSelect) {\r\n hide();\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n var paletteEvent = IE\r\n ? 'mousedown.spectrum'\r\n : 'click.spectrum touchstart.spectrum';\r\n paletteContainer.delegate(\r\n '.sp-thumb-el',\r\n paletteEvent,\r\n paletteElementClick\r\n );\r\n initialColorContainer.delegate(\r\n '.sp-thumb-el:nth-child(1)',\r\n paletteEvent,\r\n { ignore: true },\r\n paletteElementClick\r\n );\r\n }\r\n\r\n function updateSelectionPaletteFromStorage() {\r\n if (localStorageKey && window.localStorage) {\r\n // Migrate old palettes over to new format. May want to remove this eventually.\r\n try {\r\n var oldPalette = window.localStorage[localStorageKey].split(',#');\r\n if (oldPalette.length > 1) {\r\n delete window.localStorage[localStorageKey];\r\n $.each(oldPalette, function(i, c) {\r\n addColorToSelectionPalette(c);\r\n });\r\n }\r\n } catch (e) {}\r\n\r\n try {\r\n selectionPalette = window.localStorage[localStorageKey].split(';');\r\n } catch (e) {}\r\n }\r\n }\r\n\r\n function addColorToSelectionPalette(color) {\r\n if (showSelectionPalette) {\r\n var rgb = tinycolor(color).toRgbString();\r\n if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) {\r\n selectionPalette.push(rgb);\r\n while (selectionPalette.length > maxSelectionSize) {\r\n selectionPalette.shift();\r\n }\r\n }\r\n\r\n if (localStorageKey && window.localStorage) {\r\n try {\r\n window.localStorage[localStorageKey] = selectionPalette.join(';');\r\n } catch (e) {}\r\n }\r\n }\r\n }\r\n\r\n function getUniqueSelectionPalette() {\r\n var unique = [];\r\n if (opts.showPalette) {\r\n for (var i = 0; i < selectionPalette.length; i++) {\r\n var rgb = tinycolor(selectionPalette[i]).toRgbString();\r\n\r\n if (!paletteLookup[rgb]) {\r\n unique.push(selectionPalette[i]);\r\n }\r\n }\r\n }\r\n\r\n return unique.reverse().slice(0, opts.maxSelectionSize);\r\n }\r\n\r\n function drawPalette() {\r\n var currentColor = get();\r\n\r\n var html = $.map(paletteArray, function(palette, i) {\r\n return paletteTemplate(\r\n palette,\r\n currentColor,\r\n 'sp-palette-row sp-palette-row-' + i,\r\n opts\r\n );\r\n });\r\n\r\n updateSelectionPaletteFromStorage();\r\n\r\n if (selectionPalette) {\r\n html.push(\r\n paletteTemplate(\r\n getUniqueSelectionPalette(),\r\n currentColor,\r\n 'sp-palette-row sp-palette-row-selection',\r\n opts\r\n )\r\n );\r\n }\r\n\r\n paletteContainer.html(html.join(''));\r\n }\r\n\r\n function drawInitial() {\r\n if (opts.showInitial) {\r\n var initial = colorOnShow;\r\n var current = get();\r\n initialColorContainer.html(\r\n paletteTemplate(\r\n [initial, current],\r\n current,\r\n 'sp-palette-row-initial',\r\n opts\r\n )\r\n );\r\n }\r\n }\r\n\r\n function dragStart() {\r\n if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) {\r\n reflow();\r\n }\r\n isDragging = true;\r\n container.addClass(draggingClass);\r\n shiftMovementDirection = null;\r\n boundElement.trigger('dragstart.spectrum', [get()]);\r\n }\r\n\r\n function dragStop() {\r\n isDragging = false;\r\n container.removeClass(draggingClass);\r\n boundElement.trigger('dragstop.spectrum', [get()]);\r\n }\r\n\r\n function setFromTextInput() {\r\n var value = textInput.val();\r\n\r\n if ((value === null || value === '') && allowEmpty) {\r\n set(null);\r\n updateOriginalInput(true);\r\n } else {\r\n var tiny = tinycolor(value);\r\n if (tiny.isValid()) {\r\n set(tiny);\r\n updateOriginalInput(true);\r\n } else {\r\n textInput.addClass('sp-validation-error');\r\n }\r\n }\r\n }\r\n\r\n function toggle() {\r\n if (visible) {\r\n hide();\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function show() {\r\n var event = $.Event('beforeShow.spectrum');\r\n\r\n if (visible) {\r\n reflow();\r\n return;\r\n }\r\n\r\n boundElement.trigger(event, [get()]);\r\n\r\n if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) {\r\n return;\r\n }\r\n\r\n hideAll();\r\n visible = true;\r\n\r\n var $doc = $(doc);\r\n $doc.bind('keydown.spectrum', onkeydown);\r\n $doc.bind('click.spectrum', clickout);\r\n $(window).bind('resize.spectrum', resize);\r\n replacer.addClass('sp-active');\r\n container.removeClass('sp-hidden');\r\n\r\n reflow();\r\n updateUI();\r\n\r\n colorOnShow = get();\r\n\r\n drawInitial();\r\n callbacks.show(colorOnShow);\r\n boundElement.trigger('show.spectrum', [colorOnShow]);\r\n }\r\n\r\n function onkeydown(e) {\r\n // Close on ESC\r\n if (e.keyCode === 27) {\r\n hide();\r\n }\r\n }\r\n\r\n function clickout(e) {\r\n // Return on right click.\r\n if (e.button == 2) {\r\n return;\r\n }\r\n\r\n // If a drag event was happening during the mouseup, don't hide\r\n // on click.\r\n if (isDragging) {\r\n return;\r\n }\r\n\r\n if (clickoutFiresChange) {\r\n updateOriginalInput(true);\r\n } else {\r\n revert();\r\n }\r\n hide();\r\n }\r\n\r\n function hide() {\r\n // Return if hiding is unnecessary\r\n if (!visible || flat) {\r\n return;\r\n }\r\n visible = false;\r\n\r\n $(doc).unbind('keydown.spectrum', onkeydown);\r\n $(doc).unbind('click.spectrum', clickout);\r\n $(window).unbind('resize.spectrum', resize);\r\n\r\n replacer.removeClass('sp-active');\r\n container.addClass('sp-hidden');\r\n\r\n callbacks.hide(get());\r\n boundElement.trigger('hide.spectrum', [get()]);\r\n }\r\n\r\n function revert() {\r\n set(colorOnShow, true);\r\n }\r\n\r\n function set(color, ignoreFormatChange) {\r\n if (tinycolor.equals(color, get())) {\r\n // Update UI just in case a validation error needs\r\n // to be cleared.\r\n updateUI();\r\n return;\r\n }\r\n\r\n var newColor, newHsv;\r\n if (!color && allowEmpty) {\r\n isEmpty = true;\r\n } else {\r\n isEmpty = false;\r\n newColor = tinycolor(color);\r\n newHsv = newColor.toHsv();\r\n\r\n currentHue = (newHsv.h % 360) / 360;\r\n currentSaturation = newHsv.s;\r\n currentValue = newHsv.v;\r\n currentAlpha = newHsv.a;\r\n }\r\n updateUI();\r\n\r\n if (newColor && newColor.isValid() && !ignoreFormatChange) {\r\n currentPreferredFormat = opts.preferredFormat || newColor.getFormat();\r\n }\r\n }\r\n\r\n function get(opts) {\r\n opts = opts || {};\r\n\r\n if (allowEmpty && isEmpty) {\r\n return null;\r\n }\r\n\r\n return tinycolor.fromRatio(\r\n {\r\n h: currentHue,\r\n s: currentSaturation,\r\n v: currentValue,\r\n a: Math.round(currentAlpha * 100) / 100\r\n },\r\n { format: opts.format || currentPreferredFormat }\r\n );\r\n }\r\n\r\n function isValid() {\r\n return !textInput.hasClass('sp-validation-error');\r\n }\r\n\r\n function move() {\r\n updateUI();\r\n\r\n callbacks.move(get());\r\n boundElement.trigger('move.spectrum', [get()]);\r\n }\r\n\r\n function updateUI() {\r\n textInput.removeClass('sp-validation-error');\r\n\r\n updateHelperLocations();\r\n\r\n // Update dragger background color (gradients take care of saturation and value).\r\n var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 });\r\n dragger.css('background-color', flatColor.toHexString());\r\n\r\n // Get a format that alpha will be included in (hex and names ignore alpha)\r\n var format = currentPreferredFormat;\r\n if (currentAlpha < 1 && !(currentAlpha === 0 && format === 'name')) {\r\n if (\r\n format === 'hex' ||\r\n format === 'hex3' ||\r\n format === 'hex6' ||\r\n format === 'name'\r\n ) {\r\n format = 'rgb';\r\n }\r\n }\r\n\r\n var realColor = get({ format: format }),\r\n displayColor = '';\r\n\r\n //reset background info for preview element\r\n previewElement.removeClass('sp-clear-display');\r\n previewElement.css('background-color', 'transparent');\r\n\r\n if (!realColor && allowEmpty) {\r\n // Update the replaced elements background with icon indicating no color selection\r\n previewElement.addClass('sp-clear-display');\r\n } else {\r\n var realHex = realColor.toHexString(),\r\n realRgb = realColor.toRgbString();\r\n\r\n // Update the replaced elements background color (with actual selected color)\r\n if (rgbaSupport || realColor.alpha === 1) {\r\n previewElement.css('background-color', realRgb);\r\n } else {\r\n previewElement.css('background-color', 'transparent');\r\n previewElement.css('filter', realColor.toFilter());\r\n }\r\n\r\n if (opts.showAlpha) {\r\n var rgb = realColor.toRgb();\r\n rgb.a = 0;\r\n var realAlpha = tinycolor(rgb).toRgbString();\r\n var gradient =\r\n 'linear-gradient(left, ' + realAlpha + ', ' + realHex + ')';\r\n\r\n if (IE) {\r\n alphaSliderInner.css(\r\n 'filter',\r\n tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)\r\n );\r\n } else {\r\n alphaSliderInner.css('background', '-webkit-' + gradient);\r\n alphaSliderInner.css('background', '-moz-' + gradient);\r\n alphaSliderInner.css('background', '-ms-' + gradient);\r\n // Use current syntax gradient on unprefixed property.\r\n alphaSliderInner.css(\r\n 'background',\r\n 'linear-gradient(to right, ' + realAlpha + ', ' + realHex + ')'\r\n );\r\n }\r\n }\r\n\r\n displayColor = realColor.toString(format);\r\n }\r\n\r\n // Update the text entry input as it changes happen\r\n if (opts.showInput) {\r\n textInput.val(displayColor);\r\n }\r\n\r\n if (opts.showPalette) {\r\n drawPalette();\r\n }\r\n\r\n drawInitial();\r\n }\r\n\r\n function updateHelperLocations() {\r\n var s = currentSaturation;\r\n var v = currentValue;\r\n\r\n if (allowEmpty && isEmpty) {\r\n //if selected color is empty, hide the helpers\r\n alphaSlideHelper.hide();\r\n slideHelper.hide();\r\n dragHelper.hide();\r\n } else {\r\n //make sure helpers are visible\r\n alphaSlideHelper.show();\r\n slideHelper.show();\r\n dragHelper.show();\r\n\r\n // Where to show the little circle in that displays your current selected color\r\n var dragX = s * dragWidth;\r\n var dragY = dragHeight - v * dragHeight;\r\n dragX = Math.max(\r\n -dragHelperHeight,\r\n Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight)\r\n );\r\n dragY = Math.max(\r\n -dragHelperHeight,\r\n Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight)\r\n );\r\n dragHelper.css({\r\n top: dragY + 'px',\r\n left: dragX + 'px'\r\n });\r\n\r\n var alphaX = currentAlpha * alphaWidth;\r\n alphaSlideHelper.css({\r\n left: alphaX - alphaSlideHelperWidth / 2 + 'px'\r\n });\r\n\r\n // Where to show the bar that displays your current selected hue\r\n var slideY = currentHue * slideHeight;\r\n slideHelper.css({\r\n top: slideY - slideHelperHeight + 'px'\r\n });\r\n }\r\n }\r\n\r\n function updateOriginalInput(fireCallback) {\r\n var color = get(),\r\n displayColor = '',\r\n hasChanged = !tinycolor.equals(color, colorOnShow);\r\n\r\n if (color) {\r\n displayColor = color.toString(currentPreferredFormat);\r\n // Update the selection palette with the current color\r\n addColorToSelectionPalette(color);\r\n }\r\n\r\n if (isInput) {\r\n boundElement.val(displayColor);\r\n }\r\n\r\n if (fireCallback && hasChanged) {\r\n callbacks.change(color);\r\n boundElement.trigger('change', [color]);\r\n }\r\n }\r\n\r\n function reflow() {\r\n if (!visible) {\r\n return; // Calculations would be useless and wouldn't be reliable anyways\r\n }\r\n dragWidth = dragger.width();\r\n dragHeight = dragger.height();\r\n dragHelperHeight = dragHelper.height();\r\n slideWidth = slider.width();\r\n slideHeight = slider.height();\r\n slideHelperHeight = slideHelper.height();\r\n alphaWidth = alphaSlider.width();\r\n alphaSlideHelperWidth = alphaSlideHelper.width();\r\n\r\n if (!flat) {\r\n container.css('position', 'absolute');\r\n if (opts.offset) {\r\n container.offset(opts.offset);\r\n } else {\r\n container.offset(getOffset(container, offsetElement));\r\n }\r\n }\r\n\r\n updateHelperLocations();\r\n\r\n if (opts.showPalette) {\r\n drawPalette();\r\n }\r\n\r\n boundElement.trigger('reflow.spectrum');\r\n }\r\n\r\n function destroy() {\r\n boundElement.show();\r\n offsetElement.unbind('click.spectrum touchstart.spectrum');\r\n container.remove();\r\n replacer.remove();\r\n spectrums[spect.id] = null;\r\n }\r\n\r\n function option(optionName, optionValue) {\r\n if (optionName === undefined) {\r\n return $.extend({}, opts);\r\n }\r\n if (optionValue === undefined) {\r\n return opts[optionName];\r\n }\r\n\r\n opts[optionName] = optionValue;\r\n\r\n if (optionName === 'preferredFormat') {\r\n currentPreferredFormat = opts.preferredFormat;\r\n }\r\n applyOptions();\r\n }\r\n\r\n function enable() {\r\n disabled = false;\r\n boundElement.attr('disabled', false);\r\n offsetElement.removeClass('sp-disabled');\r\n }\r\n\r\n function disable() {\r\n hide();\r\n disabled = true;\r\n boundElement.attr('disabled', true);\r\n offsetElement.addClass('sp-disabled');\r\n }\r\n\r\n function setOffset(coord) {\r\n opts.offset = coord;\r\n reflow();\r\n }\r\n\r\n initialize();\r\n\r\n var spect = {\r\n show: show,\r\n hide: hide,\r\n toggle: toggle,\r\n reflow: reflow,\r\n option: option,\r\n enable: enable,\r\n disable: disable,\r\n offset: setOffset,\r\n set: function(c) {\r\n set(c);\r\n updateOriginalInput();\r\n },\r\n get: get,\r\n destroy: destroy,\r\n container: container\r\n };\r\n\r\n spect.id = spectrums.push(spect) - 1;\r\n\r\n return spect;\r\n }\r\n\r\n /**\r\n * checkOffset - get the offset below/above and left/right element depending on screen position\r\n * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js\r\n */\r\n function getOffset(picker, input) {\r\n var extraY = 0;\r\n var dpWidth = picker.outerWidth();\r\n var dpHeight = picker.outerHeight();\r\n var inputHeight = input.outerHeight();\r\n var doc = picker[0].ownerDocument;\r\n var docElem = doc.documentElement;\r\n var cW = docElem.clientWidth;\r\n var cH = docElem.clientHeight;\r\n var scL = $(doc).scrollLeft();\r\n var scT = $(doc).scrollTop();\r\n var viewWidth = cW + scL;\r\n var viewHeight = cH + scT;\r\n var offset = input.offset();\r\n\r\n offset.top += inputHeight;\r\n\r\n offset.left -= Math.min(\r\n offset.left,\r\n offset.left + dpWidth > viewWidth && viewWidth > dpWidth\r\n ? Math.abs(offset.left + dpWidth - viewWidth)\r\n : 0\r\n );\r\n\r\n offset.top -= Math.min(\r\n offset.top,\r\n offset.top + dpHeight > viewHeight && viewHeight > dpHeight\r\n ? Math.abs(dpHeight + inputHeight - extraY)\r\n : extraY\r\n );\r\n\r\n return offset;\r\n }\r\n\r\n /**\r\n * noop - do nothing\r\n */\r\n function noop() {}\r\n\r\n /**\r\n * stopPropagation - makes the code only doing this a little easier to read in line\r\n */\r\n function stopPropagation(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n /**\r\n * Create a function bound to a given object\r\n * Thanks to underscore.js\r\n */\r\n function bind(func, obj) {\r\n var slice = Array.prototype.slice;\r\n var args = slice.call(arguments, 2);\r\n return function() {\r\n return func.apply(obj, args.concat(slice.call(arguments)));\r\n };\r\n }\r\n\r\n /**\r\n * Lightweight drag helper. Handles containment within the element, so that\r\n * when dragging, the x is within [0,element.width] and y is within [0,element.height]\r\n */\r\n function draggable(element, onmove, onstart, onstop) {\r\n onmove = onmove || function() {};\r\n onstart = onstart || function() {};\r\n onstop = onstop || function() {};\r\n var doc = document;\r\n var dragging = false;\r\n var offset = {};\r\n var maxHeight = 0;\r\n var maxWidth = 0;\r\n var hasTouch = 'ontouchstart' in window;\r\n\r\n var duringDragEvents = {};\r\n duringDragEvents['selectstart'] = prevent;\r\n duringDragEvents['dragstart'] = prevent;\r\n duringDragEvents['touchmove mousemove'] = move;\r\n duringDragEvents['touchend mouseup'] = stop;\r\n\r\n function prevent(e) {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n e.returnValue = false;\r\n }\r\n\r\n function move(e) {\r\n if (dragging) {\r\n // Mouseup happened outside of window\r\n if (IE && doc.documentMode < 9 && !e.button) {\r\n return stop();\r\n }\r\n\r\n var t0 = e && e.touches && e.touches[0];\r\n var pageX = (t0 && t0.pageX) || e.pageX;\r\n var pageY = (t0 && t0.pageY) || e.pageY;\r\n\r\n var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth));\r\n var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight));\r\n\r\n if (hasTouch) {\r\n // Stop scrolling in iOS\r\n prevent(e);\r\n }\r\n\r\n onmove.apply(element, [dragX, dragY, e]);\r\n }\r\n }\r\n\r\n function start(e) {\r\n var rightclick = e.which ? e.which == 3 : e.button == 2;\r\n\r\n if (!rightclick && !dragging) {\r\n if (onstart.apply(element, arguments) !== false) {\r\n dragging = true;\r\n maxHeight = $(element).height();\r\n maxWidth = $(element).width();\r\n offset = $(element).offset();\r\n\r\n $(doc).bind(duringDragEvents);\r\n $(doc.body).addClass('sp-dragging');\r\n\r\n move(e);\r\n\r\n prevent(e);\r\n }\r\n }\r\n }\r\n\r\n function stop() {\r\n if (dragging) {\r\n $(doc).unbind(duringDragEvents);\r\n $(doc.body).removeClass('sp-dragging');\r\n\r\n // Wait a tick before notifying observers to allow the click event\r\n // to fire in Chrome.\r\n setTimeout(function() {\r\n onstop.apply(element, arguments);\r\n }, 0);\r\n }\r\n dragging = false;\r\n }\r\n\r\n $(element).bind('touchstart mousedown', start);\r\n }\r\n\r\n function throttle(func, wait, debounce) {\r\n var timeout;\r\n return function() {\r\n var context = this,\r\n args = arguments;\r\n var throttler = function() {\r\n timeout = null;\r\n func.apply(context, args);\r\n };\r\n if (debounce) clearTimeout(timeout);\r\n if (debounce || !timeout) timeout = setTimeout(throttler, wait);\r\n };\r\n }\r\n\r\n function inputTypeColorSupport() {\r\n return $.fn.spectrum.inputTypeColorSupport();\r\n }\r\n\r\n /**\r\n * Define a jQuery plugin\r\n */\r\n var dataID = 'spectrum.id';\r\n $.fn.spectrum = function(opts, extra) {\r\n if (typeof opts == 'string') {\r\n var returnValue = this;\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n this.each(function() {\r\n var spect = spectrums[$(this).data(dataID)];\r\n if (spect) {\r\n var method = spect[opts];\r\n if (!method) {\r\n throw new Error(\"Spectrum: no such method: '\" + opts + \"'\");\r\n }\r\n\r\n if (opts == 'get') {\r\n returnValue = spect.get();\r\n } else if (opts == 'container') {\r\n returnValue = spect.container;\r\n } else if (opts == 'option') {\r\n returnValue = spect.option.apply(spect, args);\r\n } else if (opts == 'destroy') {\r\n spect.destroy();\r\n $(this).removeData(dataID);\r\n } else {\r\n method.apply(spect, args);\r\n }\r\n }\r\n });\r\n\r\n return returnValue;\r\n }\r\n\r\n // Initializing a new instance of spectrum\r\n return this.spectrum('destroy').each(function() {\r\n var options = $.extend({}, opts, $(this).data());\r\n var spect = spectrum(this, options);\r\n $(this).data(dataID, spect.id);\r\n });\r\n };\r\n\r\n $.fn.spectrum.load = true;\r\n $.fn.spectrum.loadOpts = {};\r\n $.fn.spectrum.draggable = draggable;\r\n $.fn.spectrum.defaults = defaultOpts;\r\n $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() {\r\n if (typeof inputTypeColorSupport._cachedResult === 'undefined') {\r\n var colorInput = $(\"\")[0]; // if color element is supported, value will default to not null\r\n inputTypeColorSupport._cachedResult =\r\n colorInput.type === 'color' && colorInput.value !== '';\r\n }\r\n return inputTypeColorSupport._cachedResult;\r\n };\r\n\r\n $.spectrum = {};\r\n $.spectrum.localization = {};\r\n $.spectrum.palettes = {};\r\n\r\n $.fn.spectrum.processNativeColorInputs = function() {\r\n var colorInputs = $('input[type=color]');\r\n if (colorInputs.length && !inputTypeColorSupport()) {\r\n colorInputs.spectrum({\r\n preferredFormat: 'hex6'\r\n });\r\n }\r\n };\r\n\r\n // TinyColor v1.1.2\r\n // https://github.com/bgrins/TinyColor\r\n // Brian Grinstead, MIT License\r\n\r\n //(function() {\r\n\r\n var trimLeft = /^[\\s,#]+/,\r\n trimRight = /\\s+$/,\r\n tinyCounter = 0,\r\n math = Math,\r\n mathRound = math.round,\r\n mathMin = math.min,\r\n mathMax = math.max,\r\n mathRandom = math.random;\r\n\r\n var tinycolor = function(color, opts) {\r\n color = color ? color : '';\r\n opts = opts || {};\r\n\r\n // If input is already a tinycolor, return itself\r\n if (color instanceof tinycolor) {\r\n return color;\r\n }\r\n // If we are called as a function, call using new instead\r\n if (!(this instanceof tinycolor)) {\r\n return new tinycolor(color, opts);\r\n }\r\n\r\n var rgb = inputToRGB(color);\r\n (this._originalInput = color),\r\n (this._r = rgb.r),\r\n (this._g = rgb.g),\r\n (this._b = rgb.b),\r\n (this._a = rgb.a),\r\n (this._roundA = mathRound(100 * this._a) / 100),\r\n (this._format = opts.format || rgb.format);\r\n this._gradientType = opts.gradientType;\r\n\r\n // Don't let the range of [0,255] come back in [0,1].\r\n // Potentially lose a little bit of precision here, but will fix issues where\r\n // .5 gets interpreted as half of the total, instead of half of 1\r\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\r\n if (this._r < 1) {\r\n this._r = mathRound(this._r);\r\n }\r\n if (this._g < 1) {\r\n this._g = mathRound(this._g);\r\n }\r\n if (this._b < 1) {\r\n this._b = mathRound(this._b);\r\n }\r\n\r\n this._ok = rgb.ok;\r\n this._tc_id = tinyCounter++;\r\n };\r\n\r\n tinycolor.prototype = {\r\n isDark: function() {\r\n return this.getBrightness() < 128;\r\n },\r\n isLight: function() {\r\n return !this.isDark();\r\n },\r\n isValid: function() {\r\n return this._ok;\r\n },\r\n getOriginalInput: function() {\r\n return this._originalInput;\r\n },\r\n getFormat: function() {\r\n return this._format;\r\n },\r\n getAlpha: function() {\r\n return this._a;\r\n },\r\n getBrightness: function() {\r\n var rgb = this.toRgb();\r\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\r\n },\r\n setAlpha: function(value) {\r\n this._a = boundAlpha(value);\r\n this._roundA = mathRound(100 * this._a) / 100;\r\n return this;\r\n },\r\n toHsv: function() {\r\n var hsv = rgbToHsv(this._r, this._g, this._b);\r\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\r\n },\r\n toHsvString: function() {\r\n var hsv = rgbToHsv(this._r, this._g, this._b);\r\n var h = mathRound(hsv.h * 360),\r\n s = mathRound(hsv.s * 100),\r\n v = mathRound(hsv.v * 100);\r\n return this._a == 1\r\n ? 'hsv(' + h + ', ' + s + '%, ' + v + '%)'\r\n : 'hsva(' + h + ', ' + s + '%, ' + v + '%, ' + this._roundA + ')';\r\n },\r\n toHsl: function() {\r\n var hsl = rgbToHsl(this._r, this._g, this._b);\r\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\r\n },\r\n toHslString: function() {\r\n var hsl = rgbToHsl(this._r, this._g, this._b);\r\n var h = mathRound(hsl.h * 360),\r\n s = mathRound(hsl.s * 100),\r\n l = mathRound(hsl.l * 100);\r\n return this._a == 1\r\n ? 'hsl(' + h + ', ' + s + '%, ' + l + '%)'\r\n : 'hsla(' + h + ', ' + s + '%, ' + l + '%, ' + this._roundA + ')';\r\n },\r\n toHex: function(allow3Char) {\r\n return rgbToHex(this._r, this._g, this._b, allow3Char);\r\n },\r\n toHexString: function(allow3Char) {\r\n return '#' + this.toHex(allow3Char);\r\n },\r\n toHex8: function() {\r\n return rgbaToHex(this._r, this._g, this._b, this._a);\r\n },\r\n toHex8String: function() {\r\n return '#' + this.toHex8();\r\n },\r\n toRgb: function() {\r\n return {\r\n r: mathRound(this._r),\r\n g: mathRound(this._g),\r\n b: mathRound(this._b),\r\n a: this._a\r\n };\r\n },\r\n toRgbString: function() {\r\n return this._a == 1\r\n ? 'rgb(' +\r\n mathRound(this._r) +\r\n ', ' +\r\n mathRound(this._g) +\r\n ', ' +\r\n mathRound(this._b) +\r\n ')'\r\n : 'rgba(' +\r\n mathRound(this._r) +\r\n ', ' +\r\n mathRound(this._g) +\r\n ', ' +\r\n mathRound(this._b) +\r\n ', ' +\r\n this._roundA +\r\n ')';\r\n },\r\n toPercentageRgb: function() {\r\n return {\r\n r: mathRound(bound01(this._r, 255) * 100) + '%',\r\n g: mathRound(bound01(this._g, 255) * 100) + '%',\r\n b: mathRound(bound01(this._b, 255) * 100) + '%',\r\n a: this._a\r\n };\r\n },\r\n toPercentageRgbString: function() {\r\n return this._a == 1\r\n ? 'rgb(' +\r\n mathRound(bound01(this._r, 255) * 100) +\r\n '%, ' +\r\n mathRound(bound01(this._g, 255) * 100) +\r\n '%, ' +\r\n mathRound(bound01(this._b, 255) * 100) +\r\n '%)'\r\n : 'rgba(' +\r\n mathRound(bound01(this._r, 255) * 100) +\r\n '%, ' +\r\n mathRound(bound01(this._g, 255) * 100) +\r\n '%, ' +\r\n mathRound(bound01(this._b, 255) * 100) +\r\n '%, ' +\r\n this._roundA +\r\n ')';\r\n },\r\n toName: function() {\r\n if (this._a === 0) {\r\n return 'transparent';\r\n }\r\n\r\n if (this._a < 1) {\r\n return false;\r\n }\r\n\r\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\r\n },\r\n toFilter: function(secondColor) {\r\n var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a);\r\n var secondHex8String = hex8String;\r\n var gradientType = this._gradientType ? 'GradientType = 1, ' : '';\r\n\r\n if (secondColor) {\r\n var s = tinycolor(secondColor);\r\n secondHex8String = s.toHex8String();\r\n }\r\n\r\n return (\r\n 'progid:DXImageTransform.Microsoft.gradient(' +\r\n gradientType +\r\n 'startColorstr=' +\r\n hex8String +\r\n ',endColorstr=' +\r\n secondHex8String +\r\n ')'\r\n );\r\n },\r\n toString: function(format) {\r\n var formatSet = !!format;\r\n format = format || this._format;\r\n\r\n var formattedString = false;\r\n var hasAlpha = this._a < 1 && this._a >= 0;\r\n var needsAlphaFormat =\r\n !formatSet &&\r\n hasAlpha &&\r\n (format === 'hex' ||\r\n format === 'hex6' ||\r\n format === 'hex3' ||\r\n format === 'name');\r\n\r\n if (needsAlphaFormat) {\r\n // Special case for \"transparent\", all other non-alpha formats\r\n // will return rgba when there is transparency.\r\n if (format === 'name' && this._a === 0) {\r\n return this.toName();\r\n }\r\n return this.toRgbString();\r\n }\r\n if (format === 'rgb') {\r\n formattedString = this.toRgbString();\r\n }\r\n if (format === 'prgb') {\r\n formattedString = this.toPercentageRgbString();\r\n }\r\n if (format === 'hex' || format === 'hex6') {\r\n formattedString = this.toHexString();\r\n }\r\n if (format === 'hex3') {\r\n formattedString = this.toHexString(true);\r\n }\r\n if (format === 'hex8') {\r\n formattedString = this.toHex8String();\r\n }\r\n if (format === 'name') {\r\n formattedString = this.toName();\r\n }\r\n if (format === 'hsl') {\r\n formattedString = this.toHslString();\r\n }\r\n if (format === 'hsv') {\r\n formattedString = this.toHsvString();\r\n }\r\n\r\n return formattedString || this.toHexString();\r\n },\r\n\r\n _applyModification: function(fn, args) {\r\n var color = fn.apply(null, [this].concat([].slice.call(args)));\r\n this._r = color._r;\r\n this._g = color._g;\r\n this._b = color._b;\r\n this.setAlpha(color._a);\r\n return this;\r\n },\r\n lighten: function() {\r\n return this._applyModification(lighten, arguments);\r\n },\r\n brighten: function() {\r\n return this._applyModification(brighten, arguments);\r\n },\r\n darken: function() {\r\n return this._applyModification(darken, arguments);\r\n },\r\n desaturate: function() {\r\n return this._applyModification(desaturate, arguments);\r\n },\r\n saturate: function() {\r\n return this._applyModification(saturate, arguments);\r\n },\r\n greyscale: function() {\r\n return this._applyModification(greyscale, arguments);\r\n },\r\n spin: function() {\r\n return this._applyModification(spin, arguments);\r\n },\r\n\r\n _applyCombination: function(fn, args) {\r\n return fn.apply(null, [this].concat([].slice.call(args)));\r\n },\r\n analogous: function() {\r\n return this._applyCombination(analogous, arguments);\r\n },\r\n complement: function() {\r\n return this._applyCombination(complement, arguments);\r\n },\r\n monochromatic: function() {\r\n return this._applyCombination(monochromatic, arguments);\r\n },\r\n splitcomplement: function() {\r\n return this._applyCombination(splitcomplement, arguments);\r\n },\r\n triad: function() {\r\n return this._applyCombination(triad, arguments);\r\n },\r\n tetrad: function() {\r\n return this._applyCombination(tetrad, arguments);\r\n }\r\n };\r\n\r\n // If input is an object, force 1 into \"1.0\" to handle ratios properly\r\n // String input requires \"1.0\" as input, so 1 will be treated as 1\r\n tinycolor.fromRatio = function(color, opts) {\r\n if (typeof color == 'object') {\r\n var newColor = {};\r\n for (var i in color) {\r\n if (color.hasOwnProperty(i)) {\r\n if (i === 'a') {\r\n newColor[i] = color[i];\r\n } else {\r\n newColor[i] = convertToPercentage(color[i]);\r\n }\r\n }\r\n }\r\n color = newColor;\r\n }\r\n\r\n return tinycolor(color, opts);\r\n };\r\n\r\n // Given a string or object, convert that input to RGB\r\n // Possible string inputs:\r\n //\r\n // \"red\"\r\n // \"#f00\" or \"f00\"\r\n // \"#ff0000\" or \"ff0000\"\r\n // \"#ff000000\" or \"ff000000\"\r\n // \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\r\n // \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\r\n // \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\r\n // \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\r\n // \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\r\n // \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\r\n // \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\r\n //\r\n function inputToRGB(color) {\r\n var rgb = { r: 0, g: 0, b: 0 };\r\n var a = 1;\r\n var ok = false;\r\n var format = false;\r\n\r\n if (typeof color == 'string') {\r\n color = stringInputToObject(color);\r\n }\r\n\r\n if (typeof color == 'object') {\r\n if (\r\n color.hasOwnProperty('r') &&\r\n color.hasOwnProperty('g') &&\r\n color.hasOwnProperty('b')\r\n ) {\r\n rgb = rgbToRgb(color.r, color.g, color.b);\r\n ok = true;\r\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\r\n } else if (\r\n color.hasOwnProperty('h') &&\r\n color.hasOwnProperty('s') &&\r\n color.hasOwnProperty('v')\r\n ) {\r\n color.s = convertToPercentage(color.s);\r\n color.v = convertToPercentage(color.v);\r\n rgb = hsvToRgb(color.h, color.s, color.v);\r\n ok = true;\r\n format = 'hsv';\r\n } else if (\r\n color.hasOwnProperty('h') &&\r\n color.hasOwnProperty('s') &&\r\n color.hasOwnProperty('l')\r\n ) {\r\n color.s = convertToPercentage(color.s);\r\n color.l = convertToPercentage(color.l);\r\n rgb = hslToRgb(color.h, color.s, color.l);\r\n ok = true;\r\n format = 'hsl';\r\n }\r\n\r\n if (color.hasOwnProperty('a')) {\r\n a = color.a;\r\n }\r\n }\r\n\r\n a = boundAlpha(a);\r\n\r\n return {\r\n ok: ok,\r\n format: color.format || format,\r\n r: mathMin(255, mathMax(rgb.r, 0)),\r\n g: mathMin(255, mathMax(rgb.g, 0)),\r\n b: mathMin(255, mathMax(rgb.b, 0)),\r\n a: a\r\n };\r\n }\r\n\r\n // Conversion Functions\r\n // --------------------\r\n\r\n // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\r\n // \r\n\r\n // `rgbToRgb`\r\n // Handle bounds / percentage checking to conform to CSS color spec\r\n // \r\n // *Assumes:* r, g, b in [0, 255] or [0, 1]\r\n // *Returns:* { r, g, b } in [0, 255]\r\n function rgbToRgb(r, g, b) {\r\n return {\r\n r: bound01(r, 255) * 255,\r\n g: bound01(g, 255) * 255,\r\n b: bound01(b, 255) * 255\r\n };\r\n }\r\n\r\n // `rgbToHsl`\r\n // Converts an RGB color value to HSL.\r\n // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\r\n // *Returns:* { h, s, l } in [0,1]\r\n function rgbToHsl(r, g, b) {\r\n r = bound01(r, 255);\r\n g = bound01(g, 255);\r\n b = bound01(b, 255);\r\n\r\n var max = mathMax(r, g, b),\r\n min = mathMin(r, g, b);\r\n var h,\r\n s,\r\n l = (max + min) / 2;\r\n\r\n if (max == min) {\r\n h = s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return { h: h, s: s, l: l };\r\n }\r\n\r\n // `hslToRgb`\r\n // Converts an HSL color value to RGB.\r\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\r\n // *Returns:* { r, g, b } in the set [0, 255]\r\n function hslToRgb(h, s, l) {\r\n var r, g, b;\r\n\r\n h = bound01(h, 360);\r\n s = bound01(s, 100);\r\n l = bound01(l, 100);\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n if (s === 0) {\r\n r = g = b = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return { r: r * 255, g: g * 255, b: b * 255 };\r\n }\r\n\r\n // `rgbToHsv`\r\n // Converts an RGB color value to HSV\r\n // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\r\n // *Returns:* { h, s, v } in [0,1]\r\n function rgbToHsv(r, g, b) {\r\n r = bound01(r, 255);\r\n g = bound01(g, 255);\r\n b = bound01(b, 255);\r\n\r\n var max = mathMax(r, g, b),\r\n min = mathMin(r, g, b);\r\n var h,\r\n s,\r\n v = max;\r\n\r\n var d = max - min;\r\n s = max === 0 ? 0 : d / max;\r\n\r\n if (max == min) {\r\n h = 0; // achromatic\r\n } else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n h /= 6;\r\n }\r\n return { h: h, s: s, v: v };\r\n }\r\n\r\n // `hsvToRgb`\r\n // Converts an HSV color value to RGB.\r\n // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\r\n // *Returns:* { r, g, b } in the set [0, 255]\r\n function hsvToRgb(h, s, v) {\r\n h = bound01(h, 360) * 6;\r\n s = bound01(s, 100);\r\n v = bound01(v, 100);\r\n\r\n var i = math.floor(h),\r\n f = h - i,\r\n p = v * (1 - s),\r\n q = v * (1 - f * s),\r\n t = v * (1 - (1 - f) * s),\r\n mod = i % 6,\r\n r = [v, q, p, p, t, v][mod],\r\n g = [t, v, v, q, p, p][mod],\r\n b = [p, p, t, v, v, q][mod];\r\n\r\n return { r: r * 255, g: g * 255, b: b * 255 };\r\n }\r\n\r\n // `rgbToHex`\r\n // Converts an RGB color to hex\r\n // Assumes r, g, and b are contained in the set [0, 255]\r\n // Returns a 3 or 6 character hex\r\n function rgbToHex(r, g, b, allow3Char) {\r\n var hex = [\r\n pad2(mathRound(r).toString(16)),\r\n pad2(mathRound(g).toString(16)),\r\n pad2(mathRound(b).toString(16))\r\n ];\r\n\r\n // Return a 3 character hex if possible\r\n if (\r\n allow3Char &&\r\n hex[0].charAt(0) == hex[0].charAt(1) &&\r\n hex[1].charAt(0) == hex[1].charAt(1) &&\r\n hex[2].charAt(0) == hex[2].charAt(1)\r\n ) {\r\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\r\n }\r\n\r\n return hex.join('');\r\n }\r\n // `rgbaToHex`\r\n // Converts an RGBA color plus alpha transparency to hex\r\n // Assumes r, g, b and a are contained in the set [0, 255]\r\n // Returns an 8 character hex\r\n function rgbaToHex(r, g, b, a) {\r\n var hex = [\r\n pad2(convertDecimalToHex(a)),\r\n pad2(mathRound(r).toString(16)),\r\n pad2(mathRound(g).toString(16)),\r\n pad2(mathRound(b).toString(16))\r\n ];\r\n\r\n return hex.join('');\r\n }\r\n\r\n // `equals`\r\n // Can be called with any tinycolor input\r\n tinycolor.equals = function(color1, color2) {\r\n if (!color1 || !color2) {\r\n return false;\r\n }\r\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\r\n };\r\n tinycolor.random = function() {\r\n return tinycolor.fromRatio({\r\n r: mathRandom(),\r\n g: mathRandom(),\r\n b: mathRandom()\r\n });\r\n };\r\n\r\n // Modification Functions\r\n // ----------------------\r\n // Thanks to less.js for some of the basics here\r\n // \r\n\r\n function desaturate(color, amount) {\r\n amount = amount === 0 ? 0 : amount || 10;\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.s -= amount / 100;\r\n hsl.s = clamp01(hsl.s);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function saturate(color, amount) {\r\n amount = amount === 0 ? 0 : amount || 10;\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.s += amount / 100;\r\n hsl.s = clamp01(hsl.s);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function greyscale(color) {\r\n return tinycolor(color).desaturate(100);\r\n }\r\n\r\n function lighten(color, amount) {\r\n amount = amount === 0 ? 0 : amount || 10;\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.l += amount / 100;\r\n hsl.l = clamp01(hsl.l);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function brighten(color, amount) {\r\n amount = amount === 0 ? 0 : amount || 10;\r\n var rgb = tinycolor(color).toRgb();\r\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * -(amount / 100))));\r\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * -(amount / 100))));\r\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * -(amount / 100))));\r\n return tinycolor(rgb);\r\n }\r\n\r\n function darken(color, amount) {\r\n amount = amount === 0 ? 0 : amount || 10;\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.l -= amount / 100;\r\n hsl.l = clamp01(hsl.l);\r\n return tinycolor(hsl);\r\n }\r\n\r\n // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\r\n // Values outside of this range will be wrapped into this range.\r\n function spin(color, amount) {\r\n var hsl = tinycolor(color).toHsl();\r\n var hue = (mathRound(hsl.h) + amount) % 360;\r\n hsl.h = hue < 0 ? 360 + hue : hue;\r\n return tinycolor(hsl);\r\n }\r\n\r\n // Combination Functions\r\n // ---------------------\r\n // Thanks to jQuery xColor for some of the ideas behind these\r\n // \r\n\r\n function complement(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.h = (hsl.h + 180) % 360;\r\n return tinycolor(hsl);\r\n }\r\n\r\n function triad(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\r\n ];\r\n }\r\n\r\n function tetrad(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\r\n ];\r\n }\r\n\r\n function splitcomplement(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l })\r\n ];\r\n }\r\n\r\n function analogous(color, results, slices) {\r\n results = results || 6;\r\n slices = slices || 30;\r\n\r\n var hsl = tinycolor(color).toHsl();\r\n var part = 360 / slices;\r\n var ret = [tinycolor(color)];\r\n\r\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results; ) {\r\n hsl.h = (hsl.h + part) % 360;\r\n ret.push(tinycolor(hsl));\r\n }\r\n return ret;\r\n }\r\n\r\n function monochromatic(color, results) {\r\n results = results || 6;\r\n var hsv = tinycolor(color).toHsv();\r\n var h = hsv.h,\r\n s = hsv.s,\r\n v = hsv.v;\r\n var ret = [];\r\n var modification = 1 / results;\r\n\r\n while (results--) {\r\n ret.push(tinycolor({ h: h, s: s, v: v }));\r\n v = (v + modification) % 1;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n // Utility Functions\r\n // ---------------------\r\n\r\n tinycolor.mix = function(color1, color2, amount) {\r\n amount = amount === 0 ? 0 : amount || 50;\r\n\r\n var rgb1 = tinycolor(color1).toRgb();\r\n var rgb2 = tinycolor(color2).toRgb();\r\n\r\n var p = amount / 100;\r\n var w = p * 2 - 1;\r\n var a = rgb2.a - rgb1.a;\r\n\r\n var w1;\r\n\r\n if (w * a == -1) {\r\n w1 = w;\r\n } else {\r\n w1 = (w + a) / (1 + w * a);\r\n }\r\n\r\n w1 = (w1 + 1) / 2;\r\n\r\n var w2 = 1 - w1;\r\n\r\n var rgba = {\r\n r: rgb2.r * w1 + rgb1.r * w2,\r\n g: rgb2.g * w1 + rgb1.g * w2,\r\n b: rgb2.b * w1 + rgb1.b * w2,\r\n a: rgb2.a * p + rgb1.a * (1 - p)\r\n };\r\n\r\n return tinycolor(rgba);\r\n };\r\n\r\n // Readability Functions\r\n // ---------------------\r\n // \r\n\r\n // `readability`\r\n // Analyze the 2 colors and returns an object with the following properties:\r\n // `brightness`: difference in brightness between the two colors\r\n // `color`: difference in color/hue between the two colors\r\n tinycolor.readability = function(color1, color2) {\r\n var c1 = tinycolor(color1);\r\n var c2 = tinycolor(color2);\r\n var rgb1 = c1.toRgb();\r\n var rgb2 = c2.toRgb();\r\n var brightnessA = c1.getBrightness();\r\n var brightnessB = c2.getBrightness();\r\n var colorDiff =\r\n Math.max(rgb1.r, rgb2.r) -\r\n Math.min(rgb1.r, rgb2.r) +\r\n Math.max(rgb1.g, rgb2.g) -\r\n Math.min(rgb1.g, rgb2.g) +\r\n Math.max(rgb1.b, rgb2.b) -\r\n Math.min(rgb1.b, rgb2.b);\r\n\r\n return {\r\n brightness: Math.abs(brightnessA - brightnessB),\r\n color: colorDiff\r\n };\r\n };\r\n\r\n // `readable`\r\n // http://www.w3.org/TR/AERT#color-contrast\r\n // Ensure that foreground and background color combinations provide sufficient contrast.\r\n // *Example*\r\n // tinycolor.isReadable(\"#000\", \"#111\") => false\r\n tinycolor.isReadable = function(color1, color2) {\r\n var readability = tinycolor.readability(color1, color2);\r\n return readability.brightness > 125 && readability.color > 500;\r\n };\r\n\r\n // `mostReadable`\r\n // Given a base color and a list of possible foreground or background\r\n // colors for that base, returns the most readable color.\r\n // *Example*\r\n // tinycolor.mostReadable(\"#123\", [\"#fff\", \"#000\"]) => \"#000\"\r\n tinycolor.mostReadable = function(baseColor, colorList) {\r\n var bestColor = null;\r\n var bestScore = 0;\r\n var bestIsReadable = false;\r\n for (var i = 0; i < colorList.length; i++) {\r\n // We normalize both around the \"acceptable\" breaking point,\r\n // but rank brightness constrast higher than hue.\r\n\r\n var readability = tinycolor.readability(baseColor, colorList[i]);\r\n var readable = readability.brightness > 125 && readability.color > 500;\r\n var score = 3 * (readability.brightness / 125) + readability.color / 500;\r\n\r\n if (\r\n (readable && !bestIsReadable) ||\r\n (readable && bestIsReadable && score > bestScore) ||\r\n (!readable && !bestIsReadable && score > bestScore)\r\n ) {\r\n bestIsReadable = readable;\r\n bestScore = score;\r\n bestColor = tinycolor(colorList[i]);\r\n }\r\n }\r\n return bestColor;\r\n };\r\n\r\n // Big List of Colors\r\n // ------------------\r\n // \r\n var names = (tinycolor.names = {\r\n aliceblue: 'f0f8ff',\r\n antiquewhite: 'faebd7',\r\n aqua: '0ff',\r\n aquamarine: '7fffd4',\r\n azure: 'f0ffff',\r\n beige: 'f5f5dc',\r\n bisque: 'ffe4c4',\r\n black: '000',\r\n blanchedalmond: 'ffebcd',\r\n blue: '00f',\r\n blueviolet: '8a2be2',\r\n brown: 'a52a2a',\r\n burlywood: 'deb887',\r\n burntsienna: 'ea7e5d',\r\n cadetblue: '5f9ea0',\r\n chartreuse: '7fff00',\r\n chocolate: 'd2691e',\r\n coral: 'ff7f50',\r\n cornflowerblue: '6495ed',\r\n cornsilk: 'fff8dc',\r\n crimson: 'dc143c',\r\n cyan: '0ff',\r\n darkblue: '00008b',\r\n darkcyan: '008b8b',\r\n darkgoldenrod: 'b8860b',\r\n darkgray: 'a9a9a9',\r\n darkgreen: '006400',\r\n darkgrey: 'a9a9a9',\r\n darkkhaki: 'bdb76b',\r\n darkmagenta: '8b008b',\r\n darkolivegreen: '556b2f',\r\n darkorange: 'ff8c00',\r\n darkorchid: '9932cc',\r\n darkred: '8b0000',\r\n darksalmon: 'e9967a',\r\n darkseagreen: '8fbc8f',\r\n darkslateblue: '483d8b',\r\n darkslategray: '2f4f4f',\r\n darkslategrey: '2f4f4f',\r\n darkturquoise: '00ced1',\r\n darkviolet: '9400d3',\r\n deeppink: 'ff1493',\r\n deepskyblue: '00bfff',\r\n dimgray: '696969',\r\n dimgrey: '696969',\r\n dodgerblue: '1e90ff',\r\n firebrick: 'b22222',\r\n floralwhite: 'fffaf0',\r\n forestgreen: '228b22',\r\n fuchsia: 'f0f',\r\n gainsboro: 'dcdcdc',\r\n ghostwhite: 'f8f8ff',\r\n gold: 'ffd700',\r\n goldenrod: 'daa520',\r\n gray: '808080',\r\n green: '008000',\r\n greenyellow: 'adff2f',\r\n grey: '808080',\r\n honeydew: 'f0fff0',\r\n hotpink: 'ff69b4',\r\n indianred: 'cd5c5c',\r\n indigo: '4b0082',\r\n ivory: 'fffff0',\r\n khaki: 'f0e68c',\r\n lavender: 'e6e6fa',\r\n lavenderblush: 'fff0f5',\r\n lawngreen: '7cfc00',\r\n lemonchiffon: 'fffacd',\r\n lightblue: 'add8e6',\r\n lightcoral: 'f08080',\r\n lightcyan: 'e0ffff',\r\n lightgoldenrodyellow: 'fafad2',\r\n lightgray: 'd3d3d3',\r\n lightgreen: '90ee90',\r\n lightgrey: 'd3d3d3',\r\n lightpink: 'ffb6c1',\r\n lightsalmon: 'ffa07a',\r\n lightseagreen: '20b2aa',\r\n lightskyblue: '87cefa',\r\n lightslategray: '789',\r\n lightslategrey: '789',\r\n lightsteelblue: 'b0c4de',\r\n lightyellow: 'ffffe0',\r\n lime: '0f0',\r\n limegreen: '32cd32',\r\n linen: 'faf0e6',\r\n magenta: 'f0f',\r\n maroon: '800000',\r\n mediumaquamarine: '66cdaa',\r\n mediumblue: '0000cd',\r\n mediumorchid: 'ba55d3',\r\n mediumpurple: '9370db',\r\n mediumseagreen: '3cb371',\r\n mediumslateblue: '7b68ee',\r\n mediumspringgreen: '00fa9a',\r\n mediumturquoise: '48d1cc',\r\n mediumvioletred: 'c71585',\r\n midnightblue: '191970',\r\n mintcream: 'f5fffa',\r\n mistyrose: 'ffe4e1',\r\n moccasin: 'ffe4b5',\r\n navajowhite: 'ffdead',\r\n navy: '000080',\r\n oldlace: 'fdf5e6',\r\n olive: '808000',\r\n olivedrab: '6b8e23',\r\n orange: 'ffa500',\r\n orangered: 'ff4500',\r\n orchid: 'da70d6',\r\n palegoldenrod: 'eee8aa',\r\n palegreen: '98fb98',\r\n paleturquoise: 'afeeee',\r\n palevioletred: 'db7093',\r\n papayawhip: 'ffefd5',\r\n peachpuff: 'ffdab9',\r\n peru: 'cd853f',\r\n pink: 'ffc0cb',\r\n plum: 'dda0dd',\r\n powderblue: 'b0e0e6',\r\n purple: '800080',\r\n rebeccapurple: '663399',\r\n red: 'f00',\r\n rosybrown: 'bc8f8f',\r\n royalblue: '4169e1',\r\n saddlebrown: '8b4513',\r\n salmon: 'fa8072',\r\n sandybrown: 'f4a460',\r\n seagreen: '2e8b57',\r\n seashell: 'fff5ee',\r\n sienna: 'a0522d',\r\n silver: 'c0c0c0',\r\n skyblue: '87ceeb',\r\n slateblue: '6a5acd',\r\n slategray: '708090',\r\n slategrey: '708090',\r\n snow: 'fffafa',\r\n springgreen: '00ff7f',\r\n steelblue: '4682b4',\r\n tan: 'd2b48c',\r\n teal: '008080',\r\n thistle: 'd8bfd8',\r\n tomato: 'ff6347',\r\n turquoise: '40e0d0',\r\n violet: 'ee82ee',\r\n wheat: 'f5deb3',\r\n white: 'fff',\r\n whitesmoke: 'f5f5f5',\r\n yellow: 'ff0',\r\n yellowgreen: '9acd32'\r\n });\r\n\r\n // Make it easy to access colors via `hexNames[hex]`\r\n var hexNames = (tinycolor.hexNames = flip(names));\r\n\r\n // Utilities\r\n // ---------\r\n\r\n // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\r\n function flip(o) {\r\n var flipped = {};\r\n for (var i in o) {\r\n if (o.hasOwnProperty(i)) {\r\n flipped[o[i]] = i;\r\n }\r\n }\r\n return flipped;\r\n }\r\n\r\n // Return a valid alpha value [0,1] with all invalid values being set to 1\r\n function boundAlpha(a) {\r\n a = parseFloat(a);\r\n\r\n if (isNaN(a) || a < 0 || a > 1) {\r\n a = 1;\r\n }\r\n\r\n return a;\r\n }\r\n\r\n // Take input from [0, n] and return it as [0, 1]\r\n function bound01(n, max) {\r\n if (isOnePointZero(n)) {\r\n n = '100%';\r\n }\r\n\r\n var processPercent = isPercentage(n);\r\n n = mathMin(max, mathMax(0, parseFloat(n)));\r\n\r\n // Automatically convert percentage into number\r\n if (processPercent) {\r\n n = parseInt(n * max, 10) / 100;\r\n }\r\n\r\n // Handle floating point rounding errors\r\n if (math.abs(n - max) < 0.000001) {\r\n return 1;\r\n }\r\n\r\n // Convert into [0, 1] range if it isn't already\r\n return (n % max) / parseFloat(max);\r\n }\r\n\r\n // Force a number between 0 and 1\r\n function clamp01(val) {\r\n return mathMin(1, mathMax(0, val));\r\n }\r\n\r\n // Parse a base-16 hex value into a base-10 integer\r\n function parseIntFromHex(val) {\r\n return parseInt(val, 16);\r\n }\r\n\r\n // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\r\n // \r\n function isOnePointZero(n) {\r\n return typeof n == 'string' && n.indexOf('.') != -1 && parseFloat(n) === 1;\r\n }\r\n\r\n // Check to see if string passed in is a percentage\r\n function isPercentage(n) {\r\n return typeof n === 'string' && n.indexOf('%') != -1;\r\n }\r\n\r\n // Force a hex value to have 2 characters\r\n function pad2(c) {\r\n return c.length == 1 ? '0' + c : '' + c;\r\n }\r\n\r\n // Replace a decimal with it's percentage value\r\n function convertToPercentage(n) {\r\n if (n <= 1) {\r\n n = n * 100 + '%';\r\n }\r\n\r\n return n;\r\n }\r\n\r\n // Converts a decimal to a hex value\r\n function convertDecimalToHex(d) {\r\n return Math.round(parseFloat(d) * 255).toString(16);\r\n }\r\n // Converts a hex value to a decimal\r\n function convertHexToDecimal(h) {\r\n return parseIntFromHex(h) / 255;\r\n }\r\n\r\n var matchers = (function() {\r\n // \r\n var CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\r\n\r\n // \r\n var CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\r\n\r\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\r\n var CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\r\n\r\n // Actual matching.\r\n // Parentheses and commas are optional, but not required.\r\n // Whitespace can take the place of commas or opening paren\r\n var PERMISSIVE_MATCH3 =\r\n '[\\\\s|\\\\(]+(' +\r\n CSS_UNIT +\r\n ')[,|\\\\s]+(' +\r\n CSS_UNIT +\r\n ')[,|\\\\s]+(' +\r\n CSS_UNIT +\r\n ')\\\\s*\\\\)?';\r\n var PERMISSIVE_MATCH4 =\r\n '[\\\\s|\\\\(]+(' +\r\n CSS_UNIT +\r\n ')[,|\\\\s]+(' +\r\n CSS_UNIT +\r\n ')[,|\\\\s]+(' +\r\n CSS_UNIT +\r\n ')[,|\\\\s]+(' +\r\n CSS_UNIT +\r\n ')\\\\s*\\\\)?';\r\n\r\n return {\r\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\r\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\r\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\r\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\r\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\r\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\r\n hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\r\n hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\r\n hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\r\n };\r\n })();\r\n\r\n // `stringInputToObject`\r\n // Permissive string parsing. Take in a number of formats, and output an object\r\n // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\r\n function stringInputToObject(color) {\r\n color = color\r\n .replace(trimLeft, '')\r\n .replace(trimRight, '')\r\n .toLowerCase();\r\n var named = false;\r\n if (names[color]) {\r\n color = names[color];\r\n named = true;\r\n } else if (color == 'transparent') {\r\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\r\n }\r\n\r\n // Try to match string input using regular expressions.\r\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\r\n // Just return an object and let the conversion functions handle that.\r\n // This way the result will be the same whether the tinycolor is initialized with string or object.\r\n var match;\r\n if ((match = matchers.rgb.exec(color))) {\r\n return { r: match[1], g: match[2], b: match[3] };\r\n }\r\n if ((match = matchers.rgba.exec(color))) {\r\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hsl.exec(color))) {\r\n return { h: match[1], s: match[2], l: match[3] };\r\n }\r\n if ((match = matchers.hsla.exec(color))) {\r\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hsv.exec(color))) {\r\n return { h: match[1], s: match[2], v: match[3] };\r\n }\r\n if ((match = matchers.hsva.exec(color))) {\r\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hex8.exec(color))) {\r\n return {\r\n a: convertHexToDecimal(match[1]),\r\n r: parseIntFromHex(match[2]),\r\n g: parseIntFromHex(match[3]),\r\n b: parseIntFromHex(match[4]),\r\n format: named ? 'name' : 'hex8'\r\n };\r\n }\r\n if ((match = matchers.hex6.exec(color))) {\r\n return {\r\n r: parseIntFromHex(match[1]),\r\n g: parseIntFromHex(match[2]),\r\n b: parseIntFromHex(match[3]),\r\n format: named ? 'name' : 'hex'\r\n };\r\n }\r\n if ((match = matchers.hex3.exec(color))) {\r\n return {\r\n r: parseIntFromHex(match[1] + '' + match[1]),\r\n g: parseIntFromHex(match[2] + '' + match[2]),\r\n b: parseIntFromHex(match[3] + '' + match[3]),\r\n format: named ? 'name' : 'hex'\r\n };\r\n }\r\n\r\n return false;\r\n }\r\n\r\n window.tinycolor = tinycolor;\r\n //})();\r\n\r\n $(function() {\r\n if ($.fn.spectrum.load) {\r\n $.fn.spectrum.processNativeColorInputs();\r\n }\r\n });\r\n}\r\n","// keymaster.js\n// (c) 2011-2013 Thomas Fuchs\n// keymaster.js may be freely distributed under the MIT license.\n\n;(function(global){\n var k,\n _handlers = {},\n _mods = { 16: false, 18: false, 17: false, 91: false },\n _scope = 'all',\n // modifier keys\n _MODIFIERS = {\n '⇧': 16, shift: 16,\n '⌥': 18, alt: 18, option: 18,\n '⌃': 17, ctrl: 17, control: 17,\n '⌘': 91, command: 91\n },\n // special keys\n _MAP = {\n backspace: 8, tab: 9, clear: 12,\n enter: 13, 'return': 13,\n esc: 27, escape: 27, space: 32,\n left: 37, up: 38,\n right: 39, down: 40,\n del: 46, 'delete': 46,\n home: 36, end: 35,\n pageup: 33, pagedown: 34,\n ',': 188, '.': 190, '/': 191,\n '`': 192, '-': 189, '=': 187,\n ';': 186, '\\'': 222,\n '[': 219, ']': 221, '\\\\': 220\n },\n code = function(x){\n return _MAP[x] || x.toUpperCase().charCodeAt(0);\n },\n _downKeys = [];\n\n for(k=1;k<20;k++) _MAP['f'+k] = 111+k;\n\n // IE doesn't support Array#indexOf, so have a simple replacement\n function index(array, item){\n var i = array.length;\n while(i--) if(array[i]===item) return i;\n return -1;\n }\n\n // for comparing mods before unassignment\n function compareArray(a1, a2) {\n if (a1.length != a2.length) return false;\n for (var i = 0; i < a1.length; i++) {\n if (a1[i] !== a2[i]) return false;\n }\n return true;\n }\n\n var modifierMap = {\n 16:'shiftKey',\n 18:'altKey',\n 17:'ctrlKey',\n 91:'metaKey'\n };\n function updateModifierKey(event) {\n for(k in _mods) _mods[k] = event[modifierMap[k]];\n };\n\n // handle keydown event\n function dispatch(event) {\n var key, handler, k, i, modifiersMatch, scope;\n key = event.keyCode;\n\n if (index(_downKeys, key) == -1) {\n _downKeys.push(key);\n }\n\n // if a modifier key, set the key. property to true and return\n if(key == 93 || key == 224) key = 91; // right command on webkit, command on Gecko\n if(key in _mods) {\n _mods[key] = true;\n // 'assignKey' from inside this closure is exported to window.key\n for(k in _MODIFIERS) if(_MODIFIERS[k] == key) assignKey[k] = true;\n return;\n }\n updateModifierKey(event);\n\n // see if we need to ignore the keypress (filter() can can be overridden)\n // by default ignore key presses if a select, textarea, or input is focused\n if(!assignKey.filter.call(this, event)) return;\n\n // abort if no potentially matching shortcuts found\n if (!(key in _handlers)) return;\n\n scope = getScope();\n\n // for each potential shortcut\n for (i = 0; i < _handlers[key].length; i++) {\n handler = _handlers[key][i];\n\n // see if it's in the current scope\n if(handler.scope == scope || handler.scope == 'all'){\n // check if modifiers match if any\n modifiersMatch = handler.mods.length > 0;\n for(k in _mods)\n if((!_mods[k] && index(handler.mods, +k) > -1) ||\n (_mods[k] && index(handler.mods, +k) == -1)) modifiersMatch = false;\n // call the handler and stop the event if neccessary\n if((handler.mods.length == 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91]) || modifiersMatch){\n if(handler.method(event, handler)===false){\n if(event.preventDefault) event.preventDefault();\n else event.returnValue = false;\n if(event.stopPropagation) event.stopPropagation();\n if(event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n }\n };\n\n // unset modifier keys on keyup\n function clearModifier(event){\n var key = event.keyCode, k,\n i = index(_downKeys, key);\n\n // remove key from _downKeys\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n\n if(key == 93 || key == 224) key = 91;\n if(key in _mods) {\n _mods[key] = false;\n for(k in _MODIFIERS) if(_MODIFIERS[k] == key) assignKey[k] = false;\n }\n };\n\n function resetModifiers() {\n for(k in _mods) _mods[k] = false;\n for(k in _MODIFIERS) assignKey[k] = false;\n };\n\n // parse and assign shortcut\n function assignKey(key, scope, method){\n var keys, mods;\n keys = getKeys(key);\n if (method === undefined) {\n method = scope;\n scope = 'all';\n }\n\n // for each shortcut\n for (var i = 0; i < keys.length; i++) {\n // set modifier keys if any\n mods = [];\n key = keys[i].split('+');\n if (key.length > 1){\n mods = getMods(key);\n key = [key[key.length-1]];\n }\n // convert to keycode and...\n key = key[0]\n key = code(key);\n // ...store handler\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({ shortcut: keys[i], scope: scope, method: method, key: keys[i], mods: mods });\n }\n };\n\n // unbind all handlers for given key in current scope\n function unbindKey(key, scope) {\n var multipleKeys, keys,\n mods = [],\n i, j, obj;\n\n multipleKeys = getKeys(key);\n\n for (j = 0; j < multipleKeys.length; j++) {\n keys = multipleKeys[j].split('+');\n\n if (keys.length > 1) {\n mods = getMods(keys);\n key = keys[keys.length - 1];\n }\n\n key = code(key);\n\n if (scope === undefined) {\n scope = getScope();\n }\n if (!_handlers[key]) {\n return;\n }\n for (i = 0; i < _handlers[key].length; i++) {\n obj = _handlers[key][i];\n // only clear handlers if correct scope and mods match\n if (obj.scope === scope && compareArray(obj.mods, mods)) {\n _handlers[key][i] = {};\n }\n }\n }\n };\n\n // Returns true if the key with code 'keyCode' is currently down\n // Converts strings into key codes.\n function isPressed(keyCode) {\n if (typeof(keyCode)=='string') {\n keyCode = code(keyCode);\n }\n return index(_downKeys, keyCode) != -1;\n }\n\n function getPressedKeyCodes() {\n return _downKeys.slice(0);\n }\n\n function filter(event){\n var tagName = (event.target || event.srcElement).tagName;\n // ignore keypressed in any elements that support keyboard data input\n return !(tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA');\n }\n\n // initialize key. to false\n for(k in _MODIFIERS) assignKey[k] = false;\n\n // set current scope (default 'all')\n function setScope(scope){ _scope = scope || 'all' };\n function getScope(){ return _scope || 'all' };\n\n // delete all handlers for a given scope\n function deleteScope(scope){\n var key, handlers, i;\n\n for (key in _handlers) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length; ) {\n if (handlers[i].scope === scope) handlers.splice(i, 1);\n else i++;\n }\n }\n };\n\n // abstract key logic for assign and unassign\n function getKeys(key) {\n var keys;\n key = key.replace(/\\s/g, '');\n keys = key.split(',');\n if ((keys[keys.length - 1]) == '') {\n keys[keys.length - 2] += ',';\n }\n return keys;\n }\n\n // abstract mods logic for assign and unassign\n function getMods(key) {\n var mods = key.slice(0, key.length - 1);\n for (var mi = 0; mi < mods.length; mi++)\n mods[mi] = _MODIFIERS[mods[mi]];\n return mods;\n }\n\n // cross-browser events\n function addEvent(object, event, method) {\n if (object.addEventListener)\n object.addEventListener(event, method, false);\n else if(object.attachEvent)\n object.attachEvent('on'+event, function(){ method(window.event) });\n };\n\n // set the handlers globally on document\n addEvent(document, 'keydown', function(event) { dispatch(event) }); // Passing _scope to a callback to ensure it remains the same by execution. Fixes #48\n addEvent(document, 'keyup', clearModifier);\n\n // reset modifiers to false whenever the window is (re)focused.\n addEvent(window, 'focus', resetModifiers);\n\n // store previously defined key\n var previousKey = global.key;\n\n // restore previously defined key and return reference to our key object\n function noConflict() {\n var k = global.key;\n global.key = previousKey;\n return k;\n }\n\n // set window.key and window.key.set/get/deleteScope, and the default filter\n global.key = assignKey;\n global.key.setScope = setScope;\n global.key.getScope = getScope;\n global.key.deleteScope = deleteScope;\n global.key.filter = filter;\n global.key.isPressed = isPressed;\n global.key.getPressedKeyCodes = getPressedKeyCodes;\n global.key.noConflict = noConflict;\n global.key.unbind = unbindKey;\n\n if(typeof module !== 'undefined') module.exports = assignKey;\n\n})(this);\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.6';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy42JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Declaration, _Node);\n\n function Declaration(defaults) {\n var _this;\n\n _this = _Node.call(this, defaults) || this;\n _this.type = 'decl';\n return _this;\n }\n /**\n * @memberof Declaration#\n * @member {string} prop The declaration’s property name.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value The declaration’s value.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * const decl = root.first.first\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }')\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n\n return Declaration;\n}(_node.default);\n\nvar _default = Declaration;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7OztJQVdNQSxXOzs7OztBQUNKLHVCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLDZCQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLE1BQVo7QUFGcUI7QUFHdEI7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXJDd0JDLGE7O2VBK0RYSCxXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgZGVjbGFyYXRpb24uXG4gKlxuICogQGV4dGVuZHMgTm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9JylcbiAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnZGVjbCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCBUaGUgZGVjbGFyYXRpb27igJlzIHByb3BlcnR5IG5hbWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdFxuICAgKiBkZWNsLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgVGhlIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpXG4gICAqIGNvbnN0IGRlY2wgPSByb290LmZpcnN0LmZpcnN0XG4gICAqIGRlY2wudmFsdWUgLy89PiAnYmxhY2snXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgRGVjbGFyYXRpb24jXG4gICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCBgdHJ1ZWAgaWYgdGhlIGRlY2xhcmF0aW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICogcm9vdC5maXJzdC5sYXN0LmltcG9ydGFudCAgLy89PiB1bmRlZmluZWRcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBEZWNsYXJhdGlvbiNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucy5cbiAgICogKiBgaW1wb3J0YW50YDogdGhlIGNvbnRlbnQgb2YgdGhlIGltcG9ydGFudCBzdGF0ZW1lbnQsXG4gICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBkZWNsYXJhdGlvbiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsXG4gICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgKiBBcyBzdWNoLCBpZiB5b3UgZG9u4oCZdCBjaGFuZ2UgYSBkZWNsYXJhdGlvbuKAmXMgdmFsdWUsXG4gICAqIFBvc3RDU1Mgd2lsbCB1c2UgdGhlIHJhdyB2YWx1ZSB3aXRoIGNvbW1lbnRzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7XFxuICBjb2xvcjpibGFja1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IERlY2xhcmF0aW9uXG4iXSwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _cssSyntaxError = _interopRequireDefault(require(\"./css-syntax-error\"));\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n}\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\n\nvar Node =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} [defaults] Value for node properties.\n */\n function Node(defaults) {\n if (defaults === void 0) {\n defaults = {};\n }\n\n this.raws = {};\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof defaults !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n }\n\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n /**\n * Returns a `CssSyntaxError` instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message Error description.\n * @param {object} [opts] Options.\n * @param {string} opts.plugin Plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the error.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the error.\n *\n * @return {CssSyntaxError} Error object to throw it.\n *\n * @example\n * if (!variables[name]) {\n * throw decl.error('Unknown variable ' + name, { word: name })\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n var _proto = Node.prototype;\n\n _proto.error = function error(message, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n }\n\n return new _cssSyntaxError.default(message);\n }\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result The {@link Result} instance\n * that will receive the warning.\n * @param {string} text Warning message.\n * @param {object} [opts] Options\n * @param {string} opts.plugin Plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word A word inside a node’s string that should\n * be highlighted as the source of the warning.\n * @param {number} opts.index An index inside a node’s string that should\n * be highlighted as the source of the warning.\n *\n * @return {Warning} Created warning object.\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad')\n * })\n * }\n * })\n */\n ;\n\n _proto.warn = function warn(result, text, opts) {\n var data = {\n node: this\n };\n\n for (var i in opts) {\n data[i] = opts[i];\n }\n\n return result.warn(text, data);\n }\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if (decl.prop.match(/^-webkit-/)) {\n * decl.remove()\n * }\n *\n * @return {Node} Node to make calls chain.\n */\n ;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n }\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] A syntax to use\n * in string generation.\n *\n * @return {string} CSS string of this node.\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n ;\n\n _proto.toString = function toString(stringifier) {\n if (stringifier === void 0) {\n stringifier = _stringify.default;\n }\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n }\n /**\n * Returns an exact clone of the node.\n *\n * The resulting cloned node and its (cloned) children will retain\n * code style properties.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @example\n * decl.raws.before //=> \"\\n \"\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop })\n * cloned.raws.before //=> \"\\n \"\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} Clone of the node.\n */\n ;\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] Mew properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop })\n *\n * @return {Node} New node\n */\n ;\n\n _proto.cloneBefore = function cloneBefore(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n }\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] New properties to override in the clone.\n *\n * @return {Node} New node.\n */\n ;\n\n _proto.cloneAfter = function cloneAfter(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n }\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes Mode(s) to replace current one.\n *\n * @example\n * if (atrule.name === 'mixin') {\n * atrule.replaceWith(mixinRules[atrule.params])\n * }\n *\n * @return {Node} Current node to methods chain.\n */\n ;\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _i = 0, _nodes = nodes; _i < _nodes.length; _i++) {\n var node = _nodes[_i];\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n }\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} Next node.\n *\n * @example\n * if (comment.text === 'delete next') {\n * const next = comment.next()\n * if (next) {\n * next.remove()\n * }\n * }\n */\n ;\n\n _proto.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n }\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} Previous node.\n *\n * @example\n * const annotation = decl.prev()\n * if (annotation.type === 'comment') {\n * readAnnotation(annotation.text)\n * }\n */\n ;\n\n _proto.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n }\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.before('content: \"\"')\n */\n ;\n\n _proto.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n }\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * decl.after('color: black')\n */\n ;\n\n _proto.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n _proto.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n }\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop Name of code style property.\n * @param {string} [defaultType] Name of default value, it can be missed\n * if the value is the same as prop.\n *\n * @example\n * const root = postcss.parse('a { background: white }')\n * root.nodes[0].append({ prop: 'color', value: 'black' })\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} Code style value.\n */\n ;\n\n _proto.raw = function raw(prop, defaultType) {\n var str = new _stringifier.default();\n return str.raw(this, prop, defaultType);\n }\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} Root parent.\n */\n ;\n\n _proto.root = function root() {\n var result = this;\n\n while (result.parent) {\n result = result.parent;\n }\n\n return result;\n }\n /**\n * Clear the code style properties for the node and its children.\n *\n * @param {boolean} [keepBetween] Keep the raws.between symbols.\n *\n * @return {undefined}\n *\n * @example\n * node.raws.before //=> ' '\n * node.cleanRaws()\n * node.raws.before //=> undefined\n */\n ;\n\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n _proto.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return {\n line: line,\n column: column\n };\n };\n\n _proto.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n\n return pos;\n }\n /**\n * @memberof Node#\n * @member {string} type String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent The node’s parent node.\n *\n * @example\n * root.nodes[0].parent === root\n */\n\n /**\n * @memberof Node#\n * @member {source} source The input source of the node.\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * })\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop })\n * ```\n *\n * ```js\n * if (atrule.name === 'add-link') {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source })\n * atrule.parent.insertBefore(atrule, rule)\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and */.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n ;\n\n return Node;\n}();\n\nvar _default = Node;\n/**\n * @typedef {object} position\n * @property {number} line Source line in file.\n * @property {number} column Source column in file.\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input {@link Input} with input file\n * @property {position} start The starting position of the node’s source.\n * @property {position} end The ending position of the node’s source.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibmV4dCIsImluZGV4IiwicHJldiIsImJlZm9yZSIsImFkZCIsImFmdGVyIiwidG9KU09OIiwiZml4ZWQiLCJyYXciLCJwcm9wIiwiZGVmYXVsdFR5cGUiLCJzdHIiLCJTdHJpbmdpZmllciIsInJvb3QiLCJjbGVhblJhd3MiLCJrZWVwQmV0d2VlbiIsImJldHdlZW4iLCJwb3NpdGlvbkluc2lkZSIsInN0cmluZyIsInN0YXJ0Iiwid29yZCIsImluZGV4T2YiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW9CQyxHQUFwQixFQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBSUMsTUFBTSxHQUFHLElBQUlGLEdBQUcsQ0FBQ0csV0FBUixFQUFiOztBQUVBLE9BQUssSUFBSUMsQ0FBVCxJQUFjSixHQUFkLEVBQW1C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Li9jc3Mtc3ludGF4LWVycm9yJ1xuaW1wb3J0IFN0cmluZ2lmaWVyIGZyb20gJy4vc3RyaW5naWZpZXInXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuXG5mdW5jdGlvbiBjbG9uZU5vZGUgKG9iaiwgcGFyZW50KSB7XG4gIGxldCBjbG9uZWQgPSBuZXcgb2JqLmNvbnN0cnVjdG9yKClcblxuICBmb3IgKGxldCBpIGluIG9iaikge1xuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KGkpKSBjb250aW51ZVxuICAgIGxldCB2YWx1ZSA9IG9ialtpXVxuICAgIGxldCB0eXBlID0gdHlwZW9mIHZhbHVlXG5cbiAgICBpZiAoaSA9PT0gJ3BhcmVudCcgJiYgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudFxuICAgIH0gZWxzZSBpZiAoaSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjbG9uZWRbaV0gPSB2YWx1ZS5tYXAoaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB2YWx1ZSA9IGNsb25lTm9kZSh2YWx1ZSlcbiAgICAgIGNsb25lZFtpXSA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKipcbiAqIEFsbCBub2RlIGNsYXNzZXMgaW5oZXJpdCB0aGUgZm9sbG93aW5nIGNvbW1vbiBtZXRob2RzLlxuICpcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBOb2RlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFZhbHVlIGZvciBub2RlIHByb3BlcnRpZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICB0aGlzLnJhd3MgPSB7IH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1Bvc3RDU1Mgbm9kZXMgY29uc3RydWN0b3IgYWNjZXB0cyBvYmplY3QsIG5vdCAnICtcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0cylcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBuYW1lIGluIGRlZmF1bHRzKSB7XG4gICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGBDc3NTeW50YXhFcnJvcmAgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIG5vZGUgaW4gdGhlIHNvdXJjZSwgc2hvd2luZyBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyBhbmQgYWxzb1xuICAgKiBhIHNtYWxsIGV4Y2VycHQgdG8gZmFjaWxpdGF0ZSBkZWJ1Z2dpbmcuXG4gICAqXG4gICAqIElmIHByZXNlbnQsIGFuIGlucHV0IHNvdXJjZSBtYXAgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICogb2YgdGhlIHNvdXJjZSwgZXZlbiBmcm9tIGEgcHJldmlvdXMgY29tcGlsYXRpb24gc3RlcFxuICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcHJvZHVjZXMgdmVyeSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICAgICBFcnJvciBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLnBsdWdpbiBQbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyBlcnJvci5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gb3B0cy5pbmRleCAgQW4gaW5kZXggaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7Q3NzU3ludGF4RXJyb3J9IEVycm9yIG9iamVjdCB0byB0aHJvdyBpdC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKCF2YXJpYWJsZXNbbmFtZV0pIHtcbiAgICogICB0aHJvdyBkZWNsLmVycm9yKCdVbmtub3duIHZhcmlhYmxlICcgKyBuYW1lLCB7IHdvcmQ6IG5hbWUgfSlcbiAgICogICAvLyBDc3NTeW50YXhFcnJvcjogcG9zdGNzcy12YXJzOmEuc2Fzczo0OjM6IFVua25vd24gdmFyaWFibGUgJGJsYWNrXG4gICAqICAgLy8gICBjb2xvcjogJGJsYWNrXG4gICAqICAgLy8gYVxuICAgKiAgIC8vICAgICAgICAgIF5cbiAgICogICAvLyAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAqIH1cbiAgICovXG4gIGVycm9yIChtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpXG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2UuaW5wdXQuZXJyb3IobWVzc2FnZSwgcG9zLmxpbmUsIHBvcy5jb2x1bW4sIG9wdHMpXG4gICAgfVxuICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAqXG4gICAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHQgICAgICBUaGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgd2lsbCByZWNlaXZlIHRoZSB3YXJuaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgV2FybmluZyBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgT3B0aW9uc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gUGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgd2FybmluZy5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMud29yZCAgIEEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICBBbiBpbmRleCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcuXG4gICAqXG4gICAqIEByZXR1cm4ge1dhcm5pbmd9IENyZWF0ZWQgd2FybmluZyBvYmplY3QuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHBsdWdpbiA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWRlcHJlY2F0ZWQnLCAoKSA9PiB7XG4gICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICogICAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0RlcHJlY2F0ZWQgcHJvcGVydHkgYmFkJylcbiAgICogICAgIH0pXG4gICAqICAgfVxuICAgKiB9KVxuICAgKi9cbiAgd2FybiAocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgbGV0IGRhdGEgPSB7IG5vZGU6IHRoaXMgfVxuICAgIGZvciAobGV0IGkgaW4gb3B0cykgZGF0YVtpXSA9IG9wdHNbaV1cbiAgICByZXR1cm4gcmVzdWx0Lndhcm4odGV4dCwgZGF0YSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBub2RlIGZyb20gaXRzIHBhcmVudCBhbmQgY2xlYW5zIHRoZSBwYXJlbnQgcHJvcGVydGllc1xuICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChkZWNsLnByb3AubWF0Y2goL14td2Via2l0LS8pKSB7XG4gICAqICAgZGVjbC5yZW1vdmUoKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IE5vZGUgdG8gbWFrZSBjYWxscyBjaGFpbi5cbiAgICovXG4gIHJlbW92ZSAoKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKVxuICAgIH1cbiAgICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIENTUyBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSBBIHN5bnRheCB0byB1c2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScgfSkudG9TdHJpbmcoKSAvLz0+IFwiYSB7fVwiXG4gICAqL1xuICB0b1N0cmluZyAoc3RyaW5naWZpZXIgPSBzdHJpbmdpZnkpIHtcbiAgICBpZiAoc3RyaW5naWZpZXIuc3RyaW5naWZ5KSBzdHJpbmdpZmllciA9IHN0cmluZ2lmaWVyLnN0cmluZ2lmeVxuICAgIGxldCByZXN1bHQgPSAnJ1xuICAgIHN0cmluZ2lmaWVyKHRoaXMsIGkgPT4ge1xuICAgICAgcmVzdWx0ICs9IGlcbiAgICB9KVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGV4YWN0IGNsb25lIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCByZXRhaW5cbiAgICogY29kZSBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTmV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLnJhd3MuYmVmb3JlICAgIC8vPT4gXCJcXG4gIFwiXG4gICAqIGNvbnN0IGNsb25lZCA9IGRlY2wuY2xvbmUoeyBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wIH0pXG4gICAqIGNsb25lZC5yYXdzLmJlZm9yZSAgLy89PiBcIlxcbiAgXCJcbiAgICogY2xvbmVkLnRvU3RyaW5nKCkgICAvLz0+IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwKVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBDbG9uZSBvZiB0aGUgbm9kZS5cbiAgICovXG4gIGNsb25lIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpXG4gICAgZm9yIChsZXQgbmFtZSBpbiBvdmVycmlkZXMpIHtcbiAgICAgIGNsb25lZFtuYW1lXSA9IG92ZXJyaWRlc1tuYW1lXVxuICAgIH1cbiAgICByZXR1cm4gY2xvbmVkXG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgdG8gY2xvbmUgdGhlIG5vZGUgYW5kIGluc2VydCB0aGUgcmVzdWx0aW5nIGNsb25lZCBub2RlXG4gICAqIGJlZm9yZSB0aGUgY3VycmVudCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gTWV3IHByb3BlcnRpZXMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNsb25lLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmNsb25lQmVmb3JlKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBOZXcgbm9kZVxuICAgKi9cbiAgY2xvbmVCZWZvcmUgKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcylcbiAgICB0aGlzLnBhcmVudC5pbnNlcnRCZWZvcmUodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICogYWZ0ZXIgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IFtvdmVycmlkZXNdIE5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gTmV3IG5vZGUuXG4gICAqL1xuICBjbG9uZUFmdGVyIChvdmVycmlkZXMgPSB7IH0pIHtcbiAgICBsZXQgY2xvbmVkID0gdGhpcy5jbG9uZShvdmVycmlkZXMpXG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKVxuICAgIHJldHVybiBjbG9uZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHsuLi5Ob2RlfSBub2RlcyBNb2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChhdHJ1bGUubmFtZSA9PT0gJ21peGluJykge1xuICAgKiAgIGF0cnVsZS5yZXBsYWNlV2l0aChtaXhpblJ1bGVzW2F0cnVsZS5wYXJhbXNdKVxuICAgKiB9XG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IEN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgcmVwbGFjZVdpdGggKC4uLm5vZGVzKSB7XG4gICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBub2RlKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnJlbW92ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgbGFzdCBjaGlsZC5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IE5leHQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogaWYgKGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0Jykge1xuICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKVxuICAgKiAgIGlmIChuZXh0KSB7XG4gICAqICAgICBuZXh0LnJlbW92ZSgpXG4gICAqICAgfVxuICAgKiB9XG4gICAqL1xuICBuZXh0ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggKyAxXVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByZXZpb3VzIGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAqIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGN1cnJlbnQgbm9kZSBpcyB0aGUgZmlyc3QgY2hpbGQuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBQcmV2aW91cyBub2RlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBhbm5vdGF0aW9uID0gZGVjbC5wcmV2KClcbiAgICogaWYgKGFubm90YXRpb24udHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAqICAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KVxuICAgKiB9XG4gICAqL1xuICBwcmV2ICgpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgbGV0IGluZGV4ID0gdGhpcy5wYXJlbnQuaW5kZXgodGhpcylcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQubm9kZXNbaW5kZXggLSAxXVxuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBiZWZvcmUgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpXG4gICAqL1xuICBiZWZvcmUgKGFkZCkge1xuICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBhZGQpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgbmV3IG5vZGUgYWZ0ZXIgY3VycmVudCBub2RlIHRvIGN1cnJlbnQgbm9kZeKAmXMgcGFyZW50LlxuICAgKlxuICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIE5ldyBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpXG4gICAqL1xuICBhZnRlciAoYWRkKSB7XG4gICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgYWRkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICB0b0pTT04gKCkge1xuICAgIGxldCBmaXhlZCA9IHsgfVxuXG4gICAgZm9yIChsZXQgbmFtZSBpbiB0aGlzKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkobmFtZSkpIGNvbnRpbnVlXG4gICAgICBpZiAobmFtZSA9PT0gJ3BhcmVudCcpIGNvbnRpbnVlXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzW25hbWVdXG5cbiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKGkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04pIHtcbiAgICAgICAgICAgIHJldHVybiBpLnRvSlNPTigpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTikge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpeGVkXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBOb2RlI3Jhd3N9IHZhbHVlLiBJZiB0aGUgbm9kZSBpcyBtaXNzaW5nXG4gICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgKiBQb3N0Q1NTIHdpbGwgdHJ5IHRvIGF1dG9kZXRlY3QgdGhlIGNvZGUgc3R5bGUgcHJvcGVydHkgYnkgbG9va2luZ1xuICAgKiBhdCBvdGhlciBub2RlcyBpbiB0aGUgdHJlZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgICAgICAgICAgTmFtZSBvZiBjb2RlIHN0eWxlIHByb3BlcnR5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RlZmF1bHRUeXBlXSBOYW1lIG9mIGRlZmF1bHQgdmFsdWUsIGl0IGNhbiBiZSBtaXNzZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHByb3AuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgYmFja2dyb3VuZDogd2hpdGUgfScpXG4gICAqIHJvb3Qubm9kZXNbMF0uYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogcm9vdC5ub2Rlc1swXS5ub2Rlc1sxXS5yYXdzLmJlZm9yZSAgIC8vPT4gdW5kZWZpbmVkXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvZGUgc3R5bGUgdmFsdWUuXG4gICAqL1xuICByYXcgKHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcigpXG4gICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpXG4gIH1cblxuICAvKipcbiAgICogRmluZHMgdGhlIFJvb3QgaW5zdGFuY2Ugb2YgdGhlIG5vZGXigJlzIHRyZWUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucm9vdCgpID09PSByb290XG4gICAqXG4gICAqIEByZXR1cm4ge1Jvb3R9IFJvb3QgcGFyZW50LlxuICAgKi9cbiAgcm9vdCAoKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXNcbiAgICB3aGlsZSAocmVzdWx0LnBhcmVudCkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudFxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0aWVzIGZvciB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtrZWVwQmV0d2Vlbl0gS2VlcCB0aGUgcmF3cy5iZXR3ZWVuIHN5bWJvbHMuXG4gICAqXG4gICAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbm9kZS5yYXdzLmJlZm9yZSAgLy89PiAnICdcbiAgICogbm9kZS5jbGVhblJhd3MoKVxuICAgKiBub2RlLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgKi9cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIGRlbGV0ZSB0aGlzLnJhd3MuYmVmb3JlXG4gICAgZGVsZXRlIHRoaXMucmF3cy5hZnRlclxuICAgIGlmICgha2VlcEJldHdlZW4pIGRlbGV0ZSB0aGlzLnJhd3MuYmV0d2VlblxuICB9XG5cbiAgcG9zaXRpb25JbnNpZGUgKGluZGV4KSB7XG4gICAgbGV0IHN0cmluZyA9IHRoaXMudG9TdHJpbmcoKVxuICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW5cbiAgICBsZXQgbGluZSA9IHRoaXMuc291cmNlLnN0YXJ0LmxpbmVcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kZXg7IGkrKykge1xuICAgICAgaWYgKHN0cmluZ1tpXSA9PT0gJ1xcbicpIHtcbiAgICAgICAgY29sdW1uID0gMVxuICAgICAgICBsaW5lICs9IDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbHVtbiArPSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbGluZSwgY29sdW1uIH1cbiAgfVxuXG4gIHBvc2l0aW9uQnkgKG9wdHMpIHtcbiAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnRcbiAgICBpZiAob3B0cy5pbmRleCkge1xuICAgICAgcG9zID0gdGhpcy5wb3NpdGlvbkluc2lkZShvcHRzLmluZGV4KVxuICAgIH0gZWxzZSBpZiAob3B0cy53b3JkKSB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLnRvU3RyaW5nKCkuaW5kZXhPZihvcHRzLndvcmQpXG4gICAgICBpZiAoaW5kZXggIT09IC0xKSBwb3MgPSB0aGlzLnBvc2l0aW9uSW5zaWRlKGluZGV4KVxuICAgIH1cbiAgICByZXR1cm4gcG9zXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gdHlwZSBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBub2Rl4oCZcyB0eXBlLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgdmFsdWVzIGFyZSBgcm9vdGAsIGBhdHJ1bGVgLCBgcnVsZWAsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAqIEBtZW1iZXIge0NvbnRhaW5lcn0gcGFyZW50IFRoZSBub2Rl4oCZcyBwYXJlbnQgbm9kZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5ub2Rlc1swXS5wYXJlbnQgPT09IHJvb3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBOb2RlI1xuICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSBUaGUgaW5wdXQgc291cmNlIG9mIHRoZSBub2RlLlxuICAgKlxuICAgKiBUaGUgcHJvcGVydHkgaXMgdXNlZCBpbiBzb3VyY2UgbWFwIGdlbmVyYXRpb24uXG4gICAqXG4gICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgKiB0aGF0IG5vZGUgd2lsbCBub3QgaGF2ZSBhIGBzb3VyY2VgIHByb3BlcnR5IGFuZCB3aWxsIGJlIGFic2VudFxuICAgKiBmcm9tIHRoZSBzb3VyY2UgbWFwLiBGb3IgdGhpcyByZWFzb24sIHRoZSBwbHVnaW4gZGV2ZWxvcGVyIHNob3VsZFxuICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAqIHNvdXJjZSB3aWxsIHJlZmVyZW5jZSB0aGUgb3JpZ2luYWwsIGNsb25lZCBub2RlKSBvciBzZXR0aW5nXG4gICAqIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBtYW51YWxseS5cbiAgICpcbiAgICogYGBganNcbiAgICogLy8gQmFkXG4gICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICogICBwcm9wOiAnLW1vei0nICsgZGVjbC5wcm9wLFxuICAgKiAgIHZhbHVlOiBkZWNsLnZhbHVlXG4gICAqIH0pXG4gICAqXG4gICAqIC8vIEdvb2RcbiAgICogY29uc3QgcHJlZml4ZWQgPSBkZWNsLmNsb25lKHsgcHJvcDogJy1tb3otJyArIGRlY2wucHJvcCB9KVxuICAgKiBgYGBcbiAgICpcbiAgICogYGBganNcbiAgICogaWYgKGF0cnVsZS5uYW1lID09PSAnYWRkLWxpbmsnKSB7XG4gICAqICAgY29uc3QgcnVsZSA9IHBvc3Rjc3MucnVsZSh7IHNlbGVjdG9yOiAnYScsIHNvdXJjZTogYXRydWxlLnNvdXJjZSB9KVxuICAgKiAgIGF0cnVsZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKGF0cnVsZSwgcnVsZSlcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAqIGRlY2wuc291cmNlLnN0YXJ0ICAgICAgLy89PiB7IGxpbmU6IDEwLCBjb2x1bW46IDIgfVxuICAgKiBkZWNsLnNvdXJjZS5lbmQgICAgICAgIC8vPT4geyBsaW5lOiAxMCwgY29sdW1uOiAxMiB9XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgKiAgIGFuIChvcHRpb25hbCkgc2VtaWNvbG9uLlxuICAgKiAqIGBhZnRlck5hbWVgOiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgYXQtcnVsZSBuYW1lIGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqICogYHJpZ2h0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiB0aGUgY29tbWVudOKAmXMgdGV4dFxuICAgKiAgIGFuZCA8Y29kZT4qJiM0Nzs8L2NvZGU+LlxuICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICogICBpZiBpdCBpcyBub3QganVzdCBgIWltcG9ydGFudGAuXG4gICAqXG4gICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICogZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLCBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3NcbiAgICogcHJvcGVydGllcy4gQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICogcm9vdC5maXJzdC5maXJzdC5yYXdzIC8vPT4geyBiZWZvcmU6ICdcXG4gICcsIGJldHdlZW46ICc6JyB9XG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gcG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgU291cmNlIGxpbmUgaW4gZmlsZS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb2x1bW4gU291cmNlIGNvbHVtbiBpbiBmaWxlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICB7QGxpbmsgSW5wdXR9IHdpdGggaW5wdXQgZmlsZVxuICogQHByb3BlcnR5IHtwb3NpdGlvbn0gc3RhcnQgVGhlIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICBUaGUgZW5kaW5nIHBvc2l0aW9uIG9mIHRoZSBub2Rl4oCZcyBzb3VyY2UuXG4gKi9cbiJdLCJmaWxlIjoibm9kZS5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _stringifier = _interopRequireDefault(require(\"./stringifier\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier.default(builder);\n str.stringify(node);\n}\n\nvar _default = stringify;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQztBQUNqQyxNQUFJQyxHQUFHLEdBQUcsSUFBSUMsb0JBQUosQ0FBZ0JGLE9BQWhCLENBQVY7QUFDQUMsRUFBQUEsR0FBRyxDQUFDSCxTQUFKLENBQWNDLElBQWQ7QUFDRDs7ZUFFY0QsUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJ1xuXG5mdW5jdGlvbiBzdHJpbmdpZnkgKG5vZGUsIGJ1aWxkZXIpIHtcbiAgbGV0IHN0ciA9IG5ldyBTdHJpbmdpZmllcihidWlsZGVyKVxuICBzdHIuc3RyaW5naWZ5KG5vZGUpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeVxuIl0sImZpbGUiOiJzdHJpbmdpZnkuanMifQ==\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nvar _input = _interopRequireDefault(require(\"./input\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n var input = new _input.default(css, opts);\n var parser = new _parser.default(input);\n\n try {\n parser.parse();\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n }\n\n throw e;\n }\n\n return parser.root;\n}\n\nvar _default = parse;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7O0FBRUEsU0FBU0EsS0FBVCxDQUFnQkMsR0FBaEIsRUFBcUJDLElBQXJCLEVBQTJCO0FBQ3pCLE1BQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFKLENBQVVILEdBQVYsRUFBZUMsSUFBZixDQUFaO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQUlDLGVBQUosQ0FBV0gsS0FBWCxDQUFiOztBQUNBLE1BQUk7QUFDRkUsSUFBQUEsTUFBTSxDQUFDTCxLQUFQO0FBQ0QsR0FGRCxDQUVFLE9BQU9PLENBQVAsRUFBVTtBQUNWLFFBQUlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQTdCLEVBQTJDO0FBQ3pDLFVBQUlILENBQUMsQ0FBQ0ksSUFBRixLQUFXLGdCQUFYLElBQStCVCxJQUEvQixJQUF1Q0EsSUFBSSxDQUFDVSxJQUFoRCxFQUFzRDtBQUNwRCxZQUFJLFdBQVdDLElBQVgsQ0FBZ0JYLElBQUksQ0FBQ1UsSUFBckIsQ0FBSixFQUFnQztBQUM5QkwsVUFBQUEsQ0FBQyxDQUFDTyxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdELFNBSkQsTUFJTyxJQUFJLFVBQVVELElBQVYsQ0FBZVgsSUFBSSxDQUFDVSxJQUFwQixDQUFKLEVBQStCO0FBQ3BDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0QsU0FKTSxNQUlBLElBQUksV0FBV0QsSUFBWCxDQUFnQlgsSUFBSSxDQUFDVSxJQUFyQixDQUFKLEVBQWdDO0FBQ3JDTCxVQUFBQSxDQUFDLENBQUNPLE9BQUYsSUFBYSxvQ0FDQSwyQkFEQSxHQUVBLHdDQUZiO0FBR0Q7QUFDRjtBQUNGOztBQUNELFVBQU1QLENBQU47QUFDRDs7QUFFRCxTQUFPRixNQUFNLENBQUNVLElBQWQ7QUFDRDs7ZUFFY2YsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZXIgZnJvbSAnLi9wYXJzZXInXG5pbXBvcnQgSW5wdXQgZnJvbSAnLi9pbnB1dCdcblxuZnVuY3Rpb24gcGFyc2UgKGNzcywgb3B0cykge1xuICBsZXQgaW5wdXQgPSBuZXcgSW5wdXQoY3NzLCBvcHRzKVxuICBsZXQgcGFyc2VyID0gbmV3IFBhcnNlcihpbnB1dClcbiAgdHJ5IHtcbiAgICBwYXJzZXIucGFyc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChlLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgb3B0cyAmJiBvcHRzLmZyb20pIHtcbiAgICAgICAgaWYgKC9cXC5zY3NzJC9pLnRlc3Qob3B0cy5mcm9tKSkge1xuICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIFNDU1Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLXNjc3MgcGFyc2VyJ1xuICAgICAgICB9IGVsc2UgaWYgKC9cXC5zYXNzL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInXG4gICAgICAgIH0gZWxzZSBpZiAoL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pKSB7XG4gICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgTGVzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3MtbGVzcyBwYXJzZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZVxuICB9XG5cbiAgcmV0dXJuIHBhcnNlci5yb290XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlXG4iXSwiZmlsZSI6InBhcnNlLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(defaults) {\n var _this;\n\n _this = _Node.call(this, defaults) || this;\n _this.type = 'comment';\n return _this;\n }\n /**\n * @memberof Comment#\n * @member {string} text The comment’s text.\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node.default);\n\nvar _default = Comment;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7SUFRTUEsTzs7Ozs7QUFDSixtQkFBYUMsUUFBYixFQUF1QjtBQUFBOztBQUNyQiw2QkFBTUEsUUFBTjtBQUNBLFVBQUtDLElBQUwsR0FBWSxTQUFaO0FBRnFCO0FBR3RCO0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVhvQkMsYTs7ZUF5QlBILE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGNvbW1lbnQgYmV0d2VlbiBkZWNsYXJhdGlvbnMgb3Igc3RhdGVtZW50cyAocnVsZSBhbmQgYXQtcnVsZXMpLlxuICpcbiAqIENvbW1lbnRzIGluc2lkZSBzZWxlY3RvcnMsIGF0LXJ1bGUgcGFyYW1ldGVycywgb3IgZGVjbGFyYXRpb24gdmFsdWVzXG4gKiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYHJhd3NgIHByb3BlcnRpZXMgZXhwbGFpbmVkIGFib3ZlLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqL1xuY2xhc3MgQ29tbWVudCBleHRlbmRzIE5vZGUge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAnY29tbWVudCdcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICogQG1lbWJlciB7c3RyaW5nfSB0ZXh0IFRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKi9cblxuICAvKipcbiAgICogQG1lbWJlcm9mIENvbW1lbnQjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgKlxuICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgKlxuICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuXG4gICAqICogYGxlZnRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIGAvKmAgYW5kIHRoZSBjb21tZW504oCZcyB0ZXh0LlxuICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZW50XG4iXSwiZmlsZSI6ImNvbW1lbnQuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents an at-rule.\n *\n * If it’s followed in the CSS by a {} block, this node will have\n * a nodes property representing its children.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('@charset \"UTF-8\"; @media print {}')\n *\n * const charset = root.first\n * charset.type //=> 'atrule'\n * charset.nodes //=> undefined\n *\n * const media = root.last\n * media.nodes //=> []\n */\nvar AtRule =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(AtRule, _Container);\n\n function AtRule(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'atrule';\n return _this;\n }\n\n var _proto = AtRule.prototype;\n\n _proto.append = function append() {\n var _Container$prototype$;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n return (_Container$prototype$ = _Container.prototype.append).call.apply(_Container$prototype$, [this].concat(children));\n };\n\n _proto.prepend = function prepend() {\n var _Container$prototype$2;\n\n if (!this.nodes) this.nodes = [];\n\n for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n return (_Container$prototype$2 = _Container.prototype.prepend).call.apply(_Container$prototype$2, [this].concat(children));\n }\n /**\n * @memberof AtRule#\n * @member {string} name The at-rule’s name immediately follows the `@`.\n *\n * @example\n * const root = postcss.parse('@media print {}')\n * media.name //=> 'media'\n * const media = root.first\n */\n\n /**\n * @memberof AtRule#\n * @member {string} params The at-rule’s parameters, the values\n * that follow the at-rule’s name but precede\n * any {} block.\n *\n * @example\n * const root = postcss.parse('@media print, screen {}')\n * const media = root.first\n * media.params //=> 'print, screen'\n */\n\n /**\n * @memberof AtRule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n *\n * PostCSS cleans at-rule parameters from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse(' @media\\nprint {\\n}')\n * root.first.first.raws //=> { before: ' ',\n * // between: ' ',\n * // afterName: '\\n',\n * // after: '\\n' }\n */\n ;\n\n return AtRule;\n}(_container.default);\n\nvar _default = AtRule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF0LXJ1bGUuZXM2Il0sIm5hbWVzIjpbIkF0UnVsZSIsImRlZmF1bHRzIiwidHlwZSIsImFwcGVuZCIsIm5vZGVzIiwiY2hpbGRyZW4iLCJwcmVwZW5kIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0JNQSxNOzs7OztBQUNKLGtCQUFhQyxRQUFiLEVBQXVCO0FBQUE7O0FBQ3JCLGtDQUFNQSxRQUFOO0FBQ0EsVUFBS0MsSUFBTCxHQUFZLFFBQVo7QUFGcUI7QUFHdEI7Ozs7U0FFREMsTSxHQUFBLGtCQUFxQjtBQUFBOztBQUNuQixRQUFJLENBQUMsS0FBS0MsS0FBVixFQUFpQixLQUFLQSxLQUFMLEdBQWEsRUFBYjs7QUFERSxzQ0FBVkMsUUFBVTtBQUFWQSxNQUFBQSxRQUFVO0FBQUE7O0FBRW5CLHlEQUFhRixNQUFiLGtEQUF1QkUsUUFBdkI7QUFDRCxHOztTQUVEQyxPLEdBQUEsbUJBQXNCO0FBQUE7O0FBQ3BCLFFBQUksQ0FBQyxLQUFLRixLQUFWLEVBQWlCLEtBQUtBLEtBQUwsR0FBYSxFQUFiOztBQURHLHVDQUFWQyxRQUFVO0FBQVZBLE1BQUFBLFFBQVU7QUFBQTs7QUFFcEIsMERBQWFDLE9BQWIsbURBQXdCRCxRQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7O0FBWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUF0Q21CRSxrQjs7ZUF1RU5QLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYXQtcnVsZS5cbiAqXG4gKiBJZiBpdOKAmXMgZm9sbG93ZWQgaW4gdGhlIENTUyBieSBhIHt9IGJsb2NrLCB0aGlzIG5vZGUgd2lsbCBoYXZlXG4gKiBhIG5vZGVzIHByb3BlcnR5IHJlcHJlc2VudGluZyBpdHMgY2hpbGRyZW4uXG4gKlxuICogQGV4dGVuZHMgQ29udGFpbmVyXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdAY2hhcnNldCBcIlVURi04XCI7IEBtZWRpYSBwcmludCB7fScpXG4gKlxuICogY29uc3QgY2hhcnNldCA9IHJvb3QuZmlyc3RcbiAqIGNoYXJzZXQudHlwZSAgLy89PiAnYXRydWxlJ1xuICogY2hhcnNldC5ub2RlcyAvLz0+IHVuZGVmaW5lZFxuICpcbiAqIGNvbnN0IG1lZGlhID0gcm9vdC5sYXN0XG4gKiBtZWRpYS5ub2RlcyAgIC8vPT4gW11cbiAqL1xuY2xhc3MgQXRSdWxlIGV4dGVuZHMgQ29udGFpbmVyIHtcbiAgY29uc3RydWN0b3IgKGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoZGVmYXVsdHMpXG4gICAgdGhpcy50eXBlID0gJ2F0cnVsZSdcbiAgfVxuXG4gIGFwcGVuZCAoLi4uY2hpbGRyZW4pIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICAgIHJldHVybiBzdXBlci5hcHBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICBwcmVwZW5kICguLi5jaGlsZHJlbikge1xuICAgIGlmICghdGhpcy5ub2RlcykgdGhpcy5ub2RlcyA9IFtdXG4gICAgcmV0dXJuIHN1cGVyLnByZXBlbmQoLi4uY2hpbGRyZW4pXG4gIH1cblxuICAvKipcbiAgICogQG1lbWJlcm9mIEF0UnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBuYW1lIFRoZSBhdC1ydWxl4oCZcyBuYW1lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIGBAYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQge30nKVxuICAgKiBtZWRpYS5uYW1lIC8vPT4gJ21lZGlhJ1xuICAgKiBjb25zdCBtZWRpYSA9IHJvb3QuZmlyc3RcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge3N0cmluZ30gcGFyYW1zIFRoZSBhdC1ydWxl4oCZcyBwYXJhbWV0ZXJzLCB0aGUgdmFsdWVzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgZm9sbG93IHRoZSBhdC1ydWxl4oCZcyBuYW1lIGJ1dCBwcmVjZWRlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFueSB7fSBibG9jay5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKCdAbWVkaWEgcHJpbnQsIHNjcmVlbiB7fScpXG4gICAqIGNvbnN0IG1lZGlhID0gcm9vdC5maXJzdFxuICAgKiBtZWRpYS5wYXJhbXMgLy89PiAncHJpbnQsIHNjcmVlbidcbiAgICovXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBBdFJ1bGUjXG4gICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICpcbiAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICpcbiAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICogICBhbmQgYF9gIHN5bWJvbHMgYmVmb3JlIHRoZSBkZWNsYXJhdGlvbiAoSUUgaGFjaykuXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICogICB0byB0aGUgZW5kIG9mIHRoZSBub2RlLlxuICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAqICAgYW5kIGB7YCBmb3IgYXQtcnVsZXMuXG4gICAqICogYHNlbWljb2xvbmA6IGNvbnRhaW5zIHRydWUgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYGFmdGVyTmFtZWA6IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBhdC1ydWxlIG5hbWUgYW5kIGl0cyBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBQb3N0Q1NTIGNsZWFucyBhdC1ydWxlIHBhcmFtZXRlcnMgZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgKiBidXQgaXQgc3RvcmVzIG9yaWdpbiBjb250ZW50IGluIHJhd3MgcHJvcGVydGllcy5cbiAgICogQXMgc3VjaCwgaWYgeW91IGRvbuKAmXQgY2hhbmdlIGEgZGVjbGFyYXRpb27igJlzIHZhbHVlLFxuICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJyAgQG1lZGlhXFxucHJpbnQge1xcbn0nKVxuICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJyAgJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBiZXR3ZWVuOiAnICcsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgYWZ0ZXJOYW1lOiAnXFxuJyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgQXRSdWxlXG4iXSwiZmlsZSI6ImF0LXJ1bGUuanMifQ==\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\n\nvar Container =\n/*#__PURE__*/\nfunction (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Container.prototype;\n\n _proto.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n }\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }')\n * const rule = root.first\n *\n * for (const decl of rule.nodes) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop })\n * // Will be executed only for color and z-index\n * })\n */\n ;\n\n _proto.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n if (!this.nodes) return undefined;\n var index, result;\n\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n return result;\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * })\n */\n ;\n\n _proto.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result;\n\n try {\n result = callback(child, i);\n } catch (e) {\n e.postcssNode = child;\n\n if (e.stack && child.source && /\\n\\s{4}at /.test(e.stack)) {\n var s = child.source;\n e.stack = e.stack.replace(/\\n\\s{4}at /, \"$&\" + s.input.from + \":\" + s.start.line + \":\" + s.start.column + \"$&\");\n }\n\n throw e;\n }\n\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n\n return result;\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] String or regular expression\n * to filter declarations by property name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop)\n * })\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove()\n * })\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value)\n * })\n */\n ;\n\n _proto.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n }\n\n if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] String or regular expression\n * to filter rules by selector.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} returns `false` if iteration was broke.\n *\n * @example\n * const selectors = []\n * root.walkRules(rule => {\n * selectors.push(rule.selector)\n * })\n * console.log(`Your CSS uses ${ selectors.length } selectors`)\n */\n ;\n\n _proto.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n }\n\n if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] String or regular expression\n * to filter at-rules by name.\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkAtRules(rule => {\n * if (isOld(rule.name)) rule.remove()\n * })\n *\n * let first = false\n * root.walkAtRules('charset', rule => {\n * if (!first) {\n * first = true\n * } else {\n * rule.remove()\n * }\n * })\n */\n ;\n\n _proto.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n }\n\n if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n }\n\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback Iterator receives each node and index.\n *\n * @return {false|undefined} Returns `false` if iteration was broke.\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove()\n * })\n */\n ;\n\n _proto.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n }\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.append(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n ;\n\n _proto.append = function append() {\n for (var _len = arguments.length, children = new Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _i = 0, _children = children; _i < _children.length; _i++) {\n var child = _children[_i];\n var nodes = this.normalize(child, this.last);\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i2 >= _iterator.length) break;\n _ref = _iterator[_i2++];\n } else {\n _i2 = _iterator.next();\n if (_i2.done) break;\n _ref = _i2.value;\n }\n\n var node = _ref;\n this.nodes.push(node);\n }\n }\n\n return this;\n }\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children New nodes.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' })\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' })\n * rule.prepend(decl1, decl2)\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }) // at-rule\n * root.append({ selector: 'a' }) // rule\n * rule.append({ prop: 'color', value: 'black' }) // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}')\n * root.first.append('color: black; z-index: 1')\n */\n ;\n\n _proto.prepend = function prepend() {\n for (var _len2 = arguments.length, children = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n\n for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i3 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i3 >= _iterator2.length) break;\n _ref2 = _iterator2[_i3++];\n } else {\n _i3 = _iterator2.next();\n if (_i3.done) break;\n _ref2 = _i3.value;\n }\n\n var child = _ref2;\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n\n for (var _iterator3 = nodes, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i4 >= _iterator3.length) break;\n _ref3 = _iterator3[_i4++];\n } else {\n _i4 = _iterator3.next();\n if (_i4.done) break;\n _ref3 = _i4.value;\n }\n\n var node = _ref3;\n this.nodes.unshift(node);\n }\n\n for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n\n return this;\n };\n\n _proto.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n\n if (this.nodes) {\n for (var _iterator4 = this.nodes, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i5 >= _iterator4.length) break;\n _ref4 = _iterator4[_i5++];\n } else {\n _i5 = _iterator4.next();\n if (_i5.done) break;\n _ref4 = _i5.value;\n }\n\n var node = _ref4;\n node.cleanRaws(keepBetween);\n }\n }\n }\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }))\n */\n ;\n\n _proto.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n\n for (var _iterator5 = nodes, _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i6 >= _iterator5.length) break;\n _ref5 = _iterator5[_i6++];\n } else {\n _i6 = _iterator5.next();\n if (_i6.done) break;\n _ref5 = _i6.value;\n }\n\n var node = _ref5;\n this.nodes.splice(exist, 0, node);\n }\n\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n }\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist Child or child’s index.\n * @param {Node|object|string|Node[]} add New node.\n *\n * @return {Node} This node for methods chain.\n */\n ;\n\n _proto.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i7 >= _iterator6.length) break;\n _ref6 = _iterator6[_i7++];\n } else {\n _i7 = _iterator6.next();\n if (_i7.done) break;\n _ref6 = _i7.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist + 1, 0, node);\n }\n\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n }\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child Child or child’s index.\n *\n * @return {Node} This node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl)\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n ;\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n }\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * rule.removeAll()\n * rule.nodes.length //=> 0\n */\n ;\n\n _proto.removeAll = function removeAll() {\n for (var _iterator7 = this.nodes, _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i8 >= _iterator7.length) break;\n _ref7 = _iterator7[_i8++];\n } else {\n _i8 = _iterator7.next();\n if (_i8.done) break;\n _ref7 = _i8.value;\n }\n\n var node = _ref7;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n }\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern Replace pattern.\n * @param {object} opts Options to speed up the search.\n * @param {string|string[]} opts.props An array of property names.\n * @param {string} opts.fast String that’s used to narrow down\n * values and speed up the regexp search.\n * @param {function|string} callback String to replace pattern or callback\n * that returns a new value. The callback\n * will receive the same arguments\n * as those passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} This node for methods chain.\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px'\n * })\n */\n ;\n\n _proto.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n decl.value = decl.value.replace(pattern, callback);\n });\n return this;\n }\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is every child pass condition.\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-')\n */\n ;\n\n _proto.every = function every(condition) {\n return this.nodes.every(condition);\n }\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition Iterator returns true or false.\n *\n * @return {boolean} Is some child pass condition.\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-')\n */\n ;\n\n _proto.some = function some(condition) {\n return this.nodes.some(condition);\n }\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child Child of the current container.\n *\n * @return {number} Child index.\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n ;\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n }\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first === rules.nodes[0]\n */\n ;\n\n _proto.normalize = function normalize(nodes, sample) {\n var _this = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n\n for (var _iterator8 = nodes, _isArray8 = Array.isArray(_iterator8), _i9 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i9 >= _iterator8.length) break;\n _ref8 = _iterator8[_i9++];\n } else {\n _i9 = _iterator8.next();\n if (_i9.done) break;\n _ref8 = _i9.value;\n }\n\n var i = _ref8;\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i10 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i10 >= _iterator9.length) break;\n _ref9 = _iterator9[_i10++];\n } else {\n _i10 = _iterator9.next();\n if (_i10.done) break;\n _ref9 = _i10.value;\n }\n\n var _i11 = _ref9;\n if (_i11.parent) _i11.parent.removeChild(_i11, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n\n nodes = [new _declaration.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (i.parent) i.parent.removeChild(i);\n\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n\n i.parent = _this;\n return i;\n });\n return processed;\n }\n /**\n * @memberof Container#\n * @member {Node[]} nodes An array containing the container’s children.\n *\n * @example\n * const root = postcss.parse('a { color: black }')\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n ;\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last === rule.nodes[rule.nodes.length - 1]\n */\n\n }, {\n key: \"last\",\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node.default);\n\nvar _default = Container;\n/**\n * @callback childCondition\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @param {Node[]} nodes All container children.\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node Container child.\n * @param {number} index Child index.\n * @return {false|undefined} Returning `false` will break iteration.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsImUiLCJwb3N0Y3NzTm9kZSIsInN0YWNrIiwidGVzdCIsInMiLCJyZXBsYWNlIiwiaW5wdXQiLCJmcm9tIiwic3RhcnQiLCJsaW5lIiwiY29sdW1uIiwid2Fsa0RlY2xzIiwicHJvcCIsInR5cGUiLCJSZWdFeHAiLCJ3YWxrUnVsZXMiLCJzZWxlY3RvciIsIndhbGtBdFJ1bGVzIiwibmFtZSIsIndhbGtDb21tZW50cyIsImFwcGVuZCIsImNoaWxkcmVuIiwibm9ybWFsaXplIiwibGFzdCIsIm5vZGUiLCJwcmVwZW5kIiwicmV2ZXJzZSIsImZpcnN0IiwidW5zaGlmdCIsImNsZWFuUmF3cyIsImtlZXBCZXR3ZWVuIiwiaW5zZXJ0QmVmb3JlIiwiZXhpc3QiLCJhZGQiLCJzcGxpY2UiLCJpbnNlcnRBZnRlciIsInJlbW92ZUNoaWxkIiwicmVtb3ZlQWxsIiwicmVwbGFjZVZhbHVlcyIsInBhdHRlcm4iLCJvcHRzIiwiZGVjbCIsInByb3BzIiwiaW5kZXhPZiIsImZhc3QiLCJ2YWx1ZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsInJhd3MiLCJiZWZvcmUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFz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QVA7QUFDakIsYUFBTyxLQUFLYixLQUFMLENBQVcsQ0FBWCxDQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7d0JBUVk7QUFDVixVQUFJLENBQUMsS0FBS0EsS0FBVixFQUFpQixPQUFPYSxTQUFQO0FBQ2pCLGFBQU8sS0FBS2IsS0FBTCxDQUFXLEtBQUtBLEtBQUwsQ0FBV2dCLE1BQVgsR0FBb0IsQ0FBL0IsQ0FBUDtBQUNEOzs7O0VBaGpCcUJtRSxhOztlQSttQlQvRSxTO0FBRWY7Ozs7Ozs7O0FBUUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBDb21tZW50IGZyb20gJy4vY29tbWVudCdcbmltcG9ydCBOb2RlIGZyb20gJy4vbm9kZSdcblxuZnVuY3Rpb24gY2xlYW5Tb3VyY2UgKG5vZGVzKSB7XG4gIHJldHVybiBub2Rlcy5tYXAoaSA9PiB7XG4gICAgaWYgKGkubm9kZXMpIGkubm9kZXMgPSBjbGVhblNvdXJjZShpLm5vZGVzKVxuICAgIGRlbGV0ZSBpLnNvdXJjZVxuICAgIHJldHVybiBpXG4gIH0pXG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcbiAgcHVzaCAoY2hpbGQpIHtcbiAgICBjaGlsZC5wYXJlbnQgPSB0aGlzXG4gICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAqIGNhbGxpbmcgYGNhbGxiYWNrYCBmb3IgZWFjaCBjaGlsZC5cbiAgICpcbiAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBvbmx5IGl0ZXJhdGVzIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLlxuICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICogbm9kZXMsIHVzZSB7QGxpbmsgQ29udGFpbmVyI3dhbGt9LlxuICAgKlxuICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyB0aGUgYXJyYXkgb2YgY2hpbGQgbm9kZXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICogUG9zdENTUyB3aWxsIGFkanVzdCB0aGUgY3VycmVudCBpbmRleCB0byBtYXRjaCB0aGUgbXV0YXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIEl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXguXG4gICAqXG4gICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2UuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKlxuICAgKiBmb3IgKGNvbnN0IGRlY2wgb2YgcnVsZS5ub2Rlcykge1xuICAgKiAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pXG4gICAqICAgLy8gQ3ljbGUgd2lsbCBiZSBpbmZpbml0ZSwgYmVjYXVzZSBjbG9uZUJlZm9yZSBtb3ZlcyB0aGUgY3VycmVudCBub2RlXG4gICAqICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICogfVxuICAgKlxuICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAqICAgZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctd2Via2l0LScgKyBkZWNsLnByb3AgfSlcbiAgICogICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAqIH0pXG4gICAqL1xuICBlYWNoIChjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5sYXN0RWFjaCkgdGhpcy5sYXN0RWFjaCA9IDBcbiAgICBpZiAoIXRoaXMuaW5kZXhlcykgdGhpcy5pbmRleGVzID0geyB9XG5cbiAgICB0aGlzLmxhc3RFYWNoICs9IDFcbiAgICBsZXQgaWQgPSB0aGlzLmxhc3RFYWNoXG4gICAgdGhpcy5pbmRleGVzW2lkXSA9IDBcblxuICAgIGlmICghdGhpcy5ub2RlcykgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IGluZGV4LCByZXN1bHRcbiAgICB3aGlsZSAodGhpcy5pbmRleGVzW2lkXSA8IHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIHJlc3VsdCA9IGNhbGxiYWNrKHRoaXMubm9kZXNbaW5kZXhdLCBpbmRleClcbiAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSBicmVha1xuXG4gICAgICB0aGlzLmluZGV4ZXNbaWRdICs9IDFcbiAgICB9XG5cbiAgICBkZWxldGUgdGhpcy5pbmRleGVzW2lkXVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgLyoqXG4gICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAqIGZvciBlYWNoIG5vZGUuXG4gICAqXG4gICAqIExpa2UgY29udGFpbmVyLmVhY2goKSwgdGhpcyBtZXRob2QgaXMgc2FmZSB0byB1c2VcbiAgICogaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogSWYgeW91IG9ubHkgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIGNvbnRhaW5lcuKAmXMgaW1tZWRpYXRlIGNoaWxkcmVuLFxuICAgKiB1c2Uge0BsaW5rIENvbnRhaW5lciNlYWNofS5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAqICAgLy8gVHJhdmVyc2VzIGFsbCBkZXNjZW5kYW50IG5vZGVzLlxuICAgKiB9KVxuICAgKi9cbiAgd2FsayAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgbGV0IHJlc3VsdFxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGUucG9zdGNzc05vZGUgPSBjaGlsZFxuICAgICAgICBpZiAoZS5zdGFjayAmJiBjaGlsZC5zb3VyY2UgJiYgL1xcblxcc3s0fWF0IC8udGVzdChlLnN0YWNrKSkge1xuICAgICAgICAgIGxldCBzID0gY2hpbGQuc291cmNlXG4gICAgICAgICAgZS5zdGFjayA9IGUuc3RhY2sucmVwbGFjZSgvXFxuXFxzezR9YXQgLyxcbiAgICAgICAgICAgIGAkJiR7IHMuaW5wdXQuZnJvbSB9OiR7IHMuc3RhcnQubGluZSB9OiR7IHMuc3RhcnQuY29sdW1uIH0kJmApXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2Fsaykge1xuICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICpcbiAgICogSWYgeW91IHBhc3MgYSBmaWx0ZXIsIGl0ZXJhdGlvbiB3aWxsIG9ubHkgaGFwcGVuIG92ZXIgZGVjbGFyYXRpb25zXG4gICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtwcm9wXSAgIFN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgZGVjbGFyYXRpb25zIGJ5IHByb3BlcnR5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAqICAgY2hlY2tQcm9wZXJ0eVN1cHBvcnQoZGVjbC5wcm9wKVxuICAgKiB9KVxuICAgKlxuICAgKiByb290LndhbGtEZWNscygnYm9yZGVyLXJhZGl1cycsIGRlY2wgPT4ge1xuICAgKiAgIGRlY2wucmVtb3ZlKClcbiAgICogfSlcbiAgICpcbiAgICogcm9vdC53YWxrRGVjbHMoL15iYWNrZ3JvdW5kLywgZGVjbCA9PiB7XG4gICAqICAgZGVjbC52YWx1ZSA9IHRha2VGaXJzdENvbG9yRnJvbUdyYWRpZW50KGRlY2wudmFsdWUpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrRGVjbHMgKHByb3AsIGNhbGxiYWNrKSB7XG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sgPSBwcm9wXG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAocHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdkZWNsJyAmJiBwcm9wLnRlc3QoY2hpbGQucHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBydWxlc1xuICAgKiB3aXRoIG1hdGNoaW5nIHNlbGVjdG9ycy5cbiAgICpcbiAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtzZWxlY3Rvcl0gU3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIHJ1bGVzIGJ5IHNlbGVjdG9yLlxuICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2VsZWN0b3JzID0gW11cbiAgICogcm9vdC53YWxrUnVsZXMocnVsZSA9PiB7XG4gICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3RvcilcbiAgICogfSlcbiAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHsgc2VsZWN0b3JzLmxlbmd0aCB9IHNlbGVjdG9yc2ApXG4gICAqL1xuICB3YWxrUnVsZXMgKHNlbGVjdG9yLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gc2VsZWN0b3JcblxuICAgICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ3J1bGUnICYmIHNlbGVjdG9yLnRlc3QoY2hpbGQuc2VsZWN0b3IpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy53YWxrKChjaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICogZm9yIGVhY2ggYXQtcnVsZSBub2RlLlxuICAgKlxuICAgKiBJZiB5b3UgcGFzcyBhIGZpbHRlciwgaXRlcmF0aW9uIHdpbGwgb25seSBoYXBwZW4gb3ZlciBhdC1ydWxlc1xuICAgKiB0aGF0IGhhdmUgbWF0Y2hpbmcgbmFtZXMuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbbmFtZV0gICBTdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGF0LXJ1bGVzIGJ5IG5hbWUuXG4gICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgSXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleC5cbiAgICpcbiAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSBSZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC53YWxrQXRSdWxlcyhydWxlID0+IHtcbiAgICogICBpZiAoaXNPbGQocnVsZS5uYW1lKSkgcnVsZS5yZW1vdmUoKVxuICAgKiB9KVxuICAgKlxuICAgKiBsZXQgZmlyc3QgPSBmYWxzZVxuICAgKiByb290LndhbGtBdFJ1bGVzKCdjaGFyc2V0JywgcnVsZSA9PiB7XG4gICAqICAgaWYgKCFmaXJzdCkge1xuICAgKiAgICAgZmlyc3QgPSB0cnVlXG4gICAqICAgfSBlbHNlIHtcbiAgICogICAgIHJ1bGUucmVtb3ZlKClcbiAgICogICB9XG4gICAqIH0pXG4gICAqL1xuICB3YWxrQXRSdWxlcyAobmFtZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayA9IG5hbWVcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgIGlmIChjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLndhbGsoKGNoaWxkLCBpKSA9PiB7XG4gICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2F0cnVsZScgJiYgY2hpbGQubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgKiBmb3IgZWFjaCBjb21tZW50IG5vZGUuXG4gICAqXG4gICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayBJdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IFJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiByb290LndhbGtDb21tZW50cyhjb21tZW50ID0+IHtcbiAgICogICBjb21tZW50LnJlbW92ZSgpXG4gICAqIH0pXG4gICAqL1xuICB3YWxrQ29tbWVudHMgKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHRoaXMud2FsaygoY2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWVudCcpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0cyBuZXcgbm9kZXMgdG8gdGhlIGVuZCBvZiB0aGUgY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0gey4uLihOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdKX0gY2hpbGRyZW4gTmV3IG5vZGVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSlcbiAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pXG4gICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMilcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSkgIC8vIGF0LXJ1bGVcbiAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAqXG4gICAqIHJvb3QuYXBwZW5kKCdhIHt9JylcbiAgICogcm9vdC5maXJzdC5hcHBlbmQoJ2NvbG9yOiBibGFjazsgei1pbmRleDogMScpXG4gICAqL1xuICBhcHBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGNoaWxkLCB0aGlzLmxhc3QpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnB1c2gobm9kZSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHsuLi4oTm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXSl9IGNoaWxkcmVuIE5ldyBub2Rlcy5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBkZWNsMSA9IHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pXG4gICAqIGNvbnN0IGRlY2wyID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZTogJ3doaXRlJyB9KVxuICAgKiBydWxlLnByZXBlbmQoZGVjbDEsIGRlY2wyKVxuICAgKlxuICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KSAgLy8gYXQtcnVsZVxuICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSkgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVcbiAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KSAgICAgICAvLyBkZWNsYXJhdGlvblxuICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgIC8vIGNvbW1lbnRcbiAgICpcbiAgICogcm9vdC5hcHBlbmQoJ2Ege30nKVxuICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJylcbiAgICovXG4gIHByZXBlbmQgKC4uLmNoaWxkcmVuKSB7XG4gICAgY2hpbGRyZW4gPSBjaGlsZHJlbi5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpXG4gICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSlcbiAgICAgIGZvciAobGV0IGlkIGluIHRoaXMuaW5kZXhlcykge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gdGhpcy5pbmRleGVzW2lkXSArIG5vZGVzLmxlbmd0aFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgY2xlYW5SYXdzIChrZWVwQmV0d2Vlbikge1xuICAgIHN1cGVyLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgZm9yIChsZXQgbm9kZSBvZiB0aGlzLm5vZGVzKSBub2RlLmNsZWFuUmF3cyhrZWVwQmV0d2VlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSlcbiAgICovXG4gIGluc2VydEJlZm9yZSAoZXhpc3QsIGFkZCkge1xuICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdClcblxuICAgIGxldCB0eXBlID0gZXhpc3QgPT09IDAgPyAncHJlcGVuZCcgOiBmYWxzZVxuICAgIGxldCBub2RlcyA9IHRoaXMubm9ybWFsaXplKGFkZCwgdGhpcy5ub2Rlc1tleGlzdF0sIHR5cGUpLnJldmVyc2UoKVxuICAgIGZvciAobGV0IG5vZGUgb2Ygbm9kZXMpIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0LCAwLCBub2RlKVxuXG4gICAgbGV0IGluZGV4XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5pbmRleGVzKSB7XG4gICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF1cbiAgICAgIGlmIChleGlzdCA8PSBpbmRleCkge1xuICAgICAgICB0aGlzLmluZGV4ZXNbaWRdID0gaW5kZXggKyBub2Rlcy5sZW5ndGhcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCBOZXcgbm9kZS5cbiAgICpcbiAgICogQHJldHVybiB7Tm9kZX0gVGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgKi9cbiAgaW5zZXJ0QWZ0ZXIgKGV4aXN0LCBhZGQpIHtcbiAgICBleGlzdCA9IHRoaXMuaW5kZXgoZXhpc3QpXG5cbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdKS5yZXZlcnNlKClcbiAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB0aGlzLm5vZGVzLnNwbGljZShleGlzdCArIDEsIDAsIG5vZGUpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGV4aXN0IDwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIG5vZGUgZnJvbSB0aGUgY29udGFpbmVyIGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAqIGZyb20gdGhlIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gY2hpbGQgQ2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggIC8vPT4gNVxuICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpXG4gICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICogZGVjbC5wYXJlbnQgICAgICAgIC8vPT4gdW5kZWZpbmVkXG4gICAqL1xuICByZW1vdmVDaGlsZCAoY2hpbGQpIHtcbiAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpXG4gICAgdGhpcy5ub2Rlc1tjaGlsZF0ucGFyZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ub2Rlcy5zcGxpY2UoY2hpbGQsIDEpXG5cbiAgICBsZXQgaW5kZXhcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmluZGV4ZXMpIHtcbiAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXVxuICAgICAgaWYgKGluZGV4ID49IGNoaWxkKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYWxsIGNoaWxkcmVuIGZyb20gdGhlIGNvbnRhaW5lclxuICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHJ1bGUucmVtb3ZlQWxsKClcbiAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAqL1xuICByZW1vdmVBbGwgKCkge1xuICAgIGZvciAobGV0IG5vZGUgb2YgdGhpcy5ub2Rlcykgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLm5vZGVzID0gW11cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3NlcyBhbGwgZGVjbGFyYXRpb24gdmFsdWVzIHdpdGhpbiB0aGUgY29udGFpbmVyIHRoYXQgbWF0Y2ggcGF0dGVyblxuICAgKiB0aHJvdWdoIGNhbGxiYWNrLCByZXBsYWNpbmcgdGhvc2UgdmFsdWVzIHdpdGggdGhlIHJldHVybmVkIHJlc3VsdFxuICAgKiBvZiBjYWxsYmFjay5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gdW5pdCBvciBmdW5jdGlvblxuICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBwYXR0ZXJuICAgICAgUmVwbGFjZSBwYXR0ZXJuLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0cyAgICAgICAgICAgICAgICBPcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2guXG4gICAqIEBwYXJhbSB7c3RyaW5nfHN0cmluZ1tdfSBvcHRzLnByb3BzIEFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5mYXN0ICAgICAgICAgICBTdHJpbmcgdGhhdOKAmXMgdXNlZCB0byBuYXJyb3cgZG93blxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgYW5kIHNwZWVkIHVwIHRoZSByZWdleHAgc2VhcmNoLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICBTdHJpbmcgdG8gcmVwbGFjZSBwYXR0ZXJuIG9yIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgcmV0dXJucyBhIG5ldyB2YWx1ZS4gVGhlIGNhbGxiYWNrXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcmVjZWl2ZSB0aGUgc2FtZSBhcmd1bWVudHNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhvc2UgcGFzc2VkIHRvIGEgZnVuY3Rpb24gcGFyYW1ldGVyXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGBTdHJpbmcjcmVwbGFjZWAuXG4gICAqXG4gICAqIEByZXR1cm4ge05vZGV9IFRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcm9vdC5yZXBsYWNlVmFsdWVzKC9cXGQrcmVtLywgeyBmYXN0OiAncmVtJyB9LCBzdHJpbmcgPT4ge1xuICAgKiAgIHJldHVybiAxNSAqIHBhcnNlSW50KHN0cmluZykgKyAncHgnXG4gICAqIH0pXG4gICAqL1xuICByZXBsYWNlVmFsdWVzIChwYXR0ZXJuLCBvcHRzLCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0c1xuICAgICAgb3B0cyA9IHsgfVxuICAgIH1cblxuICAgIHRoaXMud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICAgICAgaWYgKG9wdHMucHJvcHMgJiYgb3B0cy5wcm9wcy5pbmRleE9mKGRlY2wucHJvcCkgPT09IC0xKSByZXR1cm5cbiAgICAgIGlmIChvcHRzLmZhc3QgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xKSByZXR1cm5cblxuICAgICAgZGVjbC52YWx1ZSA9IGRlY2wudmFsdWUucmVwbGFjZShwYXR0ZXJuLCBjYWxsYmFjaylcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiBjYWxsYmFjayByZXR1cm5zIGB0cnVlYFxuICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBldmVyeSBjaGlsZCBwYXNzIGNvbmRpdGlvbi5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJylcbiAgICovXG4gIGV2ZXJ5IChjb25kaXRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5ldmVyeShjb25kaXRpb24pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAqIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gSXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBoYXNQcmVmaXggPSBydWxlLnNvbWUoaSA9PiBpLnByb3BbMF0gPT09ICctJylcbiAgICovXG4gIHNvbWUgKGNvbmRpdGlvbikge1xuICAgIHJldHVybiB0aGlzLm5vZGVzLnNvbWUoY29uZGl0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBgY2hpbGRg4oCZcyBpbmRleCB3aXRoaW4gdGhlIHtAbGluayBDb250YWluZXIjbm9kZXN9IGFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIENoaWxkIG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lci5cbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyfSBDaGlsZCBpbmRleC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5pbmRleCggcnVsZS5ub2Rlc1syXSApIC8vPT4gMlxuICAgKi9cbiAgaW5kZXggKGNoaWxkKSB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBjaGlsZFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ub2Rlcy5pbmRleE9mKGNoaWxkKVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXLigJlzIGZpcnN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5maXJzdCA9PT0gcnVsZXMubm9kZXNbMF1cbiAgICovXG4gIGdldCBmaXJzdCAoKSB7XG4gICAgaWYgKCF0aGlzLm5vZGVzKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMubm9kZXNbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVy4oCZcyBsYXN0IGNoaWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Tm9kZX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcnVsZS5sYXN0ID09PSBydWxlLm5vZGVzW3J1bGUubm9kZXMubGVuZ3RoIC0gMV1cbiAgICovXG4gIGdldCBsYXN0ICgpIHtcbiAgICBpZiAoIXRoaXMubm9kZXMpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ub2Rlc1t0aGlzLm5vZGVzLmxlbmd0aCAtIDFdXG4gIH1cblxuICBub3JtYWxpemUgKG5vZGVzLCBzYW1wbGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGVzID09PSAnc3RyaW5nJykge1xuICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpXG4gICAgICBub2RlcyA9IGNsZWFuU291cmNlKHBhcnNlKG5vZGVzKS5ub2RlcylcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobm9kZXMpKSB7XG4gICAgICBub2RlcyA9IG5vZGVzLnNsaWNlKDApXG4gICAgICBmb3IgKGxldCBpIG9mIG5vZGVzKSB7XG4gICAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2Rlcy50eXBlID09PSAncm9vdCcpIHtcbiAgICAgIG5vZGVzID0gbm9kZXMubm9kZXMuc2xpY2UoMClcbiAgICAgIGZvciAobGV0IGkgb2Ygbm9kZXMpIHtcbiAgICAgICAgaWYgKGkucGFyZW50KSBpLnBhcmVudC5yZW1vdmVDaGlsZChpLCAnaWdub3JlJylcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLnR5cGUpIHtcbiAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH0gZWxzZSBpZiAobm9kZXMucHJvcCkge1xuICAgICAgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBmaWVsZCBpcyBtaXNzZWQgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBub2Rlcy52YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgbm9kZXMudmFsdWUgPSBTdHJpbmcobm9kZXMudmFsdWUpXG4gICAgICB9XG4gICAgICBub2RlcyA9IFtuZXcgRGVjbGFyYXRpb24obm9kZXMpXVxuICAgIH0gZWxzZSBpZiAobm9kZXMuc2VsZWN0b3IpIHtcbiAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJylcbiAgICAgIG5vZGVzID0gW25ldyBSdWxlKG5vZGVzKV1cbiAgICB9IGVsc2UgaWYgKG5vZGVzLm5hbWUpIHtcbiAgICAgIGxldCBBdFJ1bGUgPSByZXF1aXJlKCcuL2F0LXJ1bGUnKVxuICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldXG4gICAgfSBlbHNlIGlmIChub2Rlcy50ZXh0KSB7XG4gICAgICBub2RlcyA9IFtuZXcgQ29tbWVudChub2RlcyldXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpXG4gICAgfVxuXG4gICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcChpID0+IHtcbiAgICAgIGlmIChpLnBhcmVudCkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSlcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHNhbXBsZSAmJiB0eXBlb2Ygc2FtcGxlLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGkucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpLnBhcmVudCA9IHRoaXNcbiAgICAgIHJldHVybiBpXG4gICAgfSlcblxuICAgIHJldHVybiBwcm9jZXNzZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgQ29udGFpbmVyI1xuICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKVxuICAgKiByb290Lm5vZGVzLmxlbmd0aCAgICAgICAgICAgLy89PiAxXG4gICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnByb3AgLy89PiAnY29sb3InXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXJcblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICBDb250YWluZXIgY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggQ2hpbGQgaW5kZXguXG4gKiBAcGFyYW0ge05vZGVbXX0gbm9kZXMgQWxsIGNvbnRhaW5lciBjaGlsZHJlbi5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIENvbnRhaW5lciBjaGlsZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBDaGlsZCBpbmRleC5cbiAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gUmV0dXJuaW5nIGBmYWxzZWAgd2lsbCBicmVhayBpdGVyYXRpb24uXG4gKi9cbiJdLCJmaWxlIjoiY29udGFpbmVyLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS rule: a selector followed by a declaration block.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{}')\n * const rule = root.first\n * rule.type //=> 'rule'\n * rule.toString() //=> 'a{}'\n */\nvar Rule =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(Rule, _Container);\n\n function Rule(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'rule';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n /**\n * An array containing the rule’s individual selectors.\n * Groups of selectors are split at commas.\n *\n * @type {string[]}\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n *\n * rule.selector //=> 'a, b'\n * rule.selectors //=> ['a', 'b']\n *\n * rule.selectors = ['a', 'strong']\n * rule.selector //=> 'a, strong'\n */\n\n\n _createClass(Rule, [{\n key: \"selectors\",\n get: function get() {\n return _list.default.comma(this.selector);\n },\n set: function set(values) {\n var match = this.selector ? this.selector.match(/,\\s*/) : null;\n var sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');\n this.selector = values.join(sep);\n }\n /**\n * @memberof Rule#\n * @member {string} selector The rule’s full selector represented\n * as a string.\n *\n * @example\n * const root = postcss.parse('a, b { }')\n * const rule = root.first\n * rule.selector //=> 'a, b'\n */\n\n /**\n * @memberof Rule#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains `true` if the last child has\n * an (optional) semicolon.\n * * `ownSemicolon`: contains `true` if there is semicolon after rule.\n *\n * PostCSS cleans selectors from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '', between: ' ', after: '\\n' }\n */\n\n }]);\n\n return Rule;\n}(_container.default);\n\nvar _default = Rule;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGUuZXM2Il0sIm5hbWVzIjpbIlJ1bGUiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsImxpc3QiLCJjb21tYSIsInNlbGVjdG9yIiwidmFsdWVzIiwibWF0Y2giLCJzZXAiLCJyYXciLCJqb2luIiwiQ29udGFpbmVyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOzs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBZ0JpQjtBQUNmLGFBQU9DLGNBQUtDLEtBQUwsQ0FBVyxLQUFLQyxRQUFoQixDQUFQO0FBQ0QsSztzQkFFY0MsTSxFQUFRO0FBQ3JCLFVBQUlDLEtBQUssR0FBRyxLQUFLRixRQUFMLEdBQWdCLEtBQUtBLFFBQUwsQ0FBY0UsS0FBZCxDQUFvQixNQUFwQixDQUFoQixHQUE4QyxJQUExRDtBQUNBLFVBQUlDLEdBQUcsR0FBR0QsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBRCxDQUFSLEdBQWMsTUFBTSxLQUFLRSxHQUFMLENBQVMsU0FBVCxFQUFvQixZQUFwQixDQUFuQztBQUNBLFdBQUtKLFFBQUwsR0FBZ0JDLE1BQU0sQ0FBQ0ksSUFBUCxDQUFZRixHQUFaLENBQWhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7QUFXQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE1Q2lCRyxrQjs7ZUEwRUpaLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udGFpbmVyIGZyb20gJy4vY29udGFpbmVyJ1xuaW1wb3J0IGxpc3QgZnJvbSAnLi9saXN0J1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBDU1MgcnVsZTogYSBzZWxlY3RvciBmb2xsb3dlZCBieSBhIGRlY2xhcmF0aW9uIGJsb2NrLlxuICpcbiAqIEBleHRlbmRzIENvbnRhaW5lclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYXt9JylcbiAqIGNvbnN0IHJ1bGUgPSByb290LmZpcnN0XG4gKiBydWxlLnR5cGUgICAgICAgLy89PiAncnVsZSdcbiAqIHJ1bGUudG9TdHJpbmcoKSAvLz0+ICdhe30nXG4gKi9cbmNsYXNzIFJ1bGUgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncnVsZSdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJ1bGXigJlzIGluZGl2aWR1YWwgc2VsZWN0b3JzLlxuICAgKiBHcm91cHMgb2Ygc2VsZWN0b3JzIGFyZSBzcGxpdCBhdCBjb21tYXMuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmdbXX1cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EsIGIgeyB9JylcbiAgICogY29uc3QgcnVsZSA9IHJvb3QuZmlyc3RcbiAgICpcbiAgICogcnVsZS5zZWxlY3RvciAgLy89PiAnYSwgYidcbiAgICogcnVsZS5zZWxlY3RvcnMgLy89PiBbJ2EnLCAnYiddXG4gICAqXG4gICAqIHJ1bGUuc2VsZWN0b3JzID0gWydhJywgJ3N0cm9uZyddXG4gICAqIHJ1bGUuc2VsZWN0b3IgLy89PiAnYSwgc3Ryb25nJ1xuICAgKi9cbiAgZ2V0IHNlbGVjdG9ycyAoKSB7XG4gICAgcmV0dXJuIGxpc3QuY29tbWEodGhpcy5zZWxlY3RvcilcbiAgfVxuXG4gIHNldCBzZWxlY3RvcnMgKHZhbHVlcykge1xuICAgIGxldCBtYXRjaCA9IHRoaXMuc2VsZWN0b3IgPyB0aGlzLnNlbGVjdG9yLm1hdGNoKC8sXFxzKi8pIDogbnVsbFxuICAgIGxldCBzZXAgPSBtYXRjaCA/IG1hdGNoWzBdIDogJywnICsgdGhpcy5yYXcoJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpXG4gICAgdGhpcy5zZWxlY3RvciA9IHZhbHVlcy5qb2luKHNlcClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7c3RyaW5nfSBzZWxlY3RvciBUaGUgcnVsZeKAmXMgZnVsbCBzZWxlY3RvciByZXByZXNlbnRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSwgYiB7IH0nKVxuICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdFxuICAgKiBydWxlLnNlbGVjdG9yIC8vPT4gJ2EsIGInXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUnVsZSNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS4gSXQgYWxzbyBzdG9yZXMgYCpgXG4gICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSBub2RlXG4gICAqICAgdG8gdGhlIGVuZCBvZiB0aGUgbm9kZS5cbiAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgKiAgIGZvciBkZWNsYXJhdGlvbnMsIHNlbGVjdG9yIGFuZCBge2AgZm9yIHJ1bGVzLCBvciBsYXN0IHBhcmFtZXRlclxuICAgKiAgIGFuZCBge2AgZm9yIGF0LXJ1bGVzLlxuICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyBgdHJ1ZWAgaWYgdGhlIGxhc3QgY2hpbGQgaGFzXG4gICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqICogYG93blNlbWljb2xvbmA6IGNvbnRhaW5zIGB0cnVlYCBpZiB0aGVyZSBpcyBzZW1pY29sb24gYWZ0ZXIgcnVsZS5cbiAgICpcbiAgICogUG9zdENTUyBjbGVhbnMgc2VsZWN0b3JzIGZyb20gY29tbWVudHMgYW5kIGV4dHJhIHNwYWNlcyxcbiAgICogYnV0IGl0IHN0b3JlcyBvcmlnaW4gY29udGVudCBpbiByYXdzIHByb3BlcnRpZXMuXG4gICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICogUG9zdENTUyB3aWxsIHVzZSB0aGUgcmF3IHZhbHVlIHdpdGggY29tbWVudHMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHtcXG4gIGNvbG9yOmJsYWNrXFxufScpXG4gICAqIHJvb3QuZmlyc3QuZmlyc3QucmF3cyAvLz0+IHsgYmVmb3JlOiAnJywgYmV0d2VlbjogJyAnLCBhZnRlcjogJ1xcbicgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUnVsZVxuIl0sImZpbGUiOiJydWxlLmpzIn0=\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** 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/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","function _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\n/**\n * Default store that keeps state in a simple object.\n */\nvar DefaultStore =\n/*#__PURE__*/\nfunction () {\n function DefaultStore() {\n this.state = {};\n this.callbacks = [];\n }\n\n var _proto = DefaultStore.prototype;\n\n _proto.getState = function getState() {\n return this.state;\n };\n\n _proto.setState = function setState(patch) {\n var prevState = _extends({}, this.state);\n\n var nextState = _extends({}, this.state, patch);\n\n this.state = nextState;\n\n this._publish(prevState, nextState, patch);\n };\n\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n\n this.callbacks.push(listener);\n return function () {\n // Remove the listener.\n _this.callbacks.splice(_this.callbacks.indexOf(listener), 1);\n };\n };\n\n _proto._publish = function _publish() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.callbacks.forEach(function (listener) {\n listener.apply(void 0, args);\n });\n };\n\n return DefaultStore;\n}();\n\nDefaultStore.VERSION = \"1.2.1\";\n\nmodule.exports = function defaultStore() {\n return new DefaultStore();\n};","var _require = require('../components/icons'),\n iconFile = _require.iconFile,\n iconText = _require.iconText,\n iconImage = _require.iconImage,\n iconAudio = _require.iconAudio,\n iconVideo = _require.iconVideo,\n iconPDF = _require.iconPDF,\n iconArchive = _require.iconArchive;\n\nmodule.exports = function getIconByMime(fileType) {\n var defaultChoice = {\n color: '#838999',\n icon: iconFile()\n };\n if (!fileType) return defaultChoice;\n var fileTypeGeneral = fileType.split('/')[0];\n var fileTypeSpecific = fileType.split('/')[1]; // Text\n\n if (fileTypeGeneral === 'text') {\n return {\n color: '#5a5e69',\n icon: iconText()\n };\n } // Image\n\n\n if (fileTypeGeneral === 'image') {\n return {\n color: '#686de0',\n icon: iconImage()\n };\n } // Audio\n\n\n if (fileTypeGeneral === 'audio') {\n return {\n color: '#068dbb',\n icon: iconAudio()\n };\n } // Video\n\n\n if (fileTypeGeneral === 'video') {\n return {\n color: '#19af67',\n icon: iconVideo()\n };\n } // PDF\n\n\n if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n return {\n color: '#e25149',\n icon: iconPDF()\n };\n } // Archive\n\n\n var archiveTypes = ['zip', 'x-7z-compressed', 'x-rar-compressed', 'x-gtar', 'x-apple-diskimage', 'x-diskcopy'];\n\n if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n return {\n color: '#00C469',\n icon: iconArchive()\n };\n }\n\n return defaultChoice;\n};","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar StatusBarUI = require('./StatusBar');\n\nvar statusBarStates = require('./StatusBarStates');\n\nvar getSpeed = require('@uppy/utils/lib/getSpeed');\n\nvar getBytesRemaining = require('@uppy/utils/lib/getBytesRemaining');\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(StatusBar, _Plugin);\n\n function StatusBar(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n\n _this.startUpload = function () {\n return _this.uppy.upload().catch(function () {// Error logged in Core\n });\n };\n\n _this.id = _this.opts.id || 'StatusBar';\n _this.title = 'StatusBar';\n _this.type = 'progressindicator';\n _this.defaultLocale = {\n strings: {\n uploading: 'Uploading',\n upload: 'Upload',\n complete: 'Complete',\n uploadFailed: 'Upload failed',\n paused: 'Paused',\n retry: 'Retry',\n cancel: 'Cancel',\n pause: 'Pause',\n resume: 'Resume',\n filesUploadedOfTotal: {\n 0: '%{complete} of %{smart_count} file uploaded',\n 1: '%{complete} of %{smart_count} files uploaded'\n },\n dataUploadedOfTotal: '%{complete} of %{total}',\n xTimeLeft: '%{time} left',\n uploadXFiles: {\n 0: 'Upload %{smart_count} file',\n 1: 'Upload %{smart_count} files'\n },\n uploadXNewFiles: {\n 0: 'Upload +%{smart_count} file',\n 1: 'Upload +%{smart_count} files'\n },\n xMoreFilesAdded: {\n 0: '%{smart_count} more file added',\n 1: '%{smart_count} more files added'\n }\n }\n }; // set default options\n\n var defaultOptions = {\n target: 'body',\n hideUploadButton: false,\n hideRetryButton: false,\n hidePauseResumeButton: false,\n hideCancelButton: false,\n showProgressDetails: false,\n hideAfterFinish: true\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.install = _this.install.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = StatusBar.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.getTotalSpeed = function getTotalSpeed(files) {\n var totalSpeed = 0;\n files.forEach(function (file) {\n totalSpeed = totalSpeed + getSpeed(file.progress);\n });\n return totalSpeed;\n };\n\n _proto.getTotalETA = function getTotalETA(files) {\n var totalSpeed = this.getTotalSpeed(files);\n\n if (totalSpeed === 0) {\n return 0;\n }\n\n var totalBytesRemaining = files.reduce(function (total, file) {\n return total + getBytesRemaining(file.progress);\n }, 0);\n return Math.round(totalBytesRemaining / totalSpeed * 10) / 10;\n };\n\n _proto.getUploadingState = function getUploadingState(isAllErrored, isAllComplete, files) {\n if (isAllErrored) {\n return statusBarStates.STATE_ERROR;\n }\n\n if (isAllComplete) {\n return statusBarStates.STATE_COMPLETE;\n }\n\n var state = statusBarStates.STATE_WAITING;\n var fileIDs = Object.keys(files);\n\n for (var i = 0; i < fileIDs.length; i++) {\n var progress = files[fileIDs[i]].progress; // If ANY files are being uploaded right now, show the uploading state.\n\n if (progress.uploadStarted && !progress.uploadComplete) {\n return statusBarStates.STATE_UPLOADING;\n } // If files are being preprocessed AND postprocessed at this time, we show the\n // preprocess state. If any files are being uploaded we show uploading.\n\n\n if (progress.preprocess && state !== statusBarStates.STATE_UPLOADING) {\n state = statusBarStates.STATE_PREPROCESSING;\n } // If NO files are being preprocessed or uploaded right now, but some files are\n // being postprocessed, show the postprocess state.\n\n\n if (progress.postprocess && state !== statusBarStates.STATE_UPLOADING && state !== statusBarStates.STATE_PREPROCESSING) {\n state = statusBarStates.STATE_POSTPROCESSING;\n }\n }\n\n return state;\n };\n\n _proto.render = function render(state) {\n var capabilities = state.capabilities,\n files = state.files,\n allowNewUpload = state.allowNewUpload,\n totalProgress = state.totalProgress,\n error = state.error; // TODO: move this to Core, to share between Status Bar and Dashboard\n // (and any other plugin that might need it, too)\n\n var filesArray = Object.keys(files).map(function (file) {\n return files[file];\n });\n var newFiles = filesArray.filter(function (file) {\n return !file.progress.uploadStarted && !file.progress.preprocess && !file.progress.postprocess;\n });\n var uploadStartedFiles = filesArray.filter(function (file) {\n return file.progress.uploadStarted;\n });\n var pausedFiles = uploadStartedFiles.filter(function (file) {\n return file.isPaused;\n });\n var completeFiles = filesArray.filter(function (file) {\n return file.progress.uploadComplete;\n });\n var erroredFiles = filesArray.filter(function (file) {\n return file.error;\n });\n var inProgressFiles = filesArray.filter(function (file) {\n return !file.progress.uploadComplete && file.progress.uploadStarted;\n });\n var inProgressNotPausedFiles = inProgressFiles.filter(function (file) {\n return !file.isPaused;\n });\n var startedFiles = filesArray.filter(function (file) {\n return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n });\n var processingFiles = filesArray.filter(function (file) {\n return file.progress.preprocess || file.progress.postprocess;\n });\n var totalETA = this.getTotalETA(inProgressNotPausedFiles);\n var totalSize = 0;\n var totalUploadedSize = 0;\n startedFiles.forEach(function (file) {\n totalSize = totalSize + (file.progress.bytesTotal || 0);\n totalUploadedSize = totalUploadedSize + (file.progress.bytesUploaded || 0);\n });\n var isUploadStarted = startedFiles.length > 0;\n var isAllComplete = totalProgress === 100 && completeFiles.length === Object.keys(files).length && processingFiles.length === 0;\n var isAllErrored = error && erroredFiles.length === filesArray.length;\n var isAllPaused = inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length;\n var isUploadInProgress = inProgressFiles.length > 0;\n var resumableUploads = capabilities.resumableUploads || false;\n var supportsUploadProgress = capabilities.uploadProgress !== false;\n return StatusBarUI({\n error: error,\n uploadState: this.getUploadingState(isAllErrored, isAllComplete, state.files || {}),\n allowNewUpload: allowNewUpload,\n totalProgress: totalProgress,\n totalSize: totalSize,\n totalUploadedSize: totalUploadedSize,\n isAllComplete: isAllComplete,\n isAllPaused: isAllPaused,\n isAllErrored: isAllErrored,\n isUploadStarted: isUploadStarted,\n isUploadInProgress: isUploadInProgress,\n complete: completeFiles.length,\n newFiles: newFiles.length,\n numUploads: startedFiles.length,\n totalETA: totalETA,\n files: files,\n i18n: this.i18n,\n pauseAll: this.uppy.pauseAll,\n resumeAll: this.uppy.resumeAll,\n retryAll: this.uppy.retryAll,\n cancelAll: this.uppy.cancelAll,\n startUpload: this.startUpload,\n resumableUploads: resumableUploads,\n supportsUploadProgress: supportsUploadProgress,\n showProgressDetails: this.opts.showProgressDetails,\n hideUploadButton: this.opts.hideUploadButton,\n hideRetryButton: this.opts.hideRetryButton,\n hidePauseResumeButton: this.opts.hidePauseResumeButton,\n hideCancelButton: this.opts.hideCancelButton,\n hideAfterFinish: this.opts.hideAfterFinish,\n isTargetDOMEl: this.isTargetDOMEl\n });\n };\n\n _proto.install = function install() {\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.unmount();\n };\n\n return StatusBar;\n}(Plugin), _class.VERSION = \"1.6.6\", _temp);","var _class, _temp;\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 _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('preact'),\n h = _require2.h;\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Informer, _Plugin);\n\n function Informer(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n\n _this.render = function (state) {\n var _state$info = state.info,\n isHidden = _state$info.isHidden,\n message = _state$info.message,\n details = _state$info.details;\n\n function displayErrorAlert() {\n var errorMessage = message + \" \\n\\n \" + details;\n alert(errorMessage);\n }\n\n var handleMouseOver = function handleMouseOver() {\n clearTimeout(_this.uppy.infoTimeoutID);\n };\n\n var handleMouseLeave = function handleMouseLeave() {\n _this.uppy.infoTimeoutID = setTimeout(_this.uppy.hideInfo, 2000);\n };\n\n return h(\"div\", {\n class: \"uppy uppy-Informer\",\n \"aria-hidden\": isHidden\n }, h(\"p\", {\n role: \"alert\"\n }, message, ' ', details && h(\"span\", {\n \"aria-label\": details,\n \"data-microtip-position\": \"top-left\",\n \"data-microtip-size\": \"medium\",\n role: \"tooltip\",\n onclick: displayErrorAlert,\n onMouseOver: handleMouseOver,\n onMouseLeave: handleMouseLeave\n }, \"?\")));\n };\n\n _this.type = 'progressindicator';\n _this.id = _this.opts.id || 'Informer';\n _this.title = 'Informer'; // set default options\n\n var defaultOptions = {}; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, opts);\n return _this;\n }\n\n var _proto = Informer.prototype;\n\n _proto.install = function install() {\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n return Informer;\n}(Plugin), _class.VERSION = \"1.5.6\", _temp);","var _class, _temp;\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 _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar dataURItoBlob = require('@uppy/utils/lib/dataURItoBlob');\n\nvar isObjectURL = require('@uppy/utils/lib/isObjectURL');\n\nvar isPreviewSupported = require('@uppy/utils/lib/isPreviewSupported');\n\nvar MathLog2 = require('math-log2'); // Polyfill for IE.\n\n\nvar exifr = require('exifr/dist/mini.legacy.umd.js');\n/**\n * The Thumbnail Generator plugin\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(ThumbnailGenerator, _Plugin);\n\n function ThumbnailGenerator(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n\n _this.onFileAdded = function (file) {\n if (!file.preview && isPreviewSupported(file.type) && !file.isRemote) {\n _this.addToQueue(file.id);\n }\n };\n\n _this.onCancelRequest = function (file) {\n var index = _this.queue.indexOf(file.id);\n\n if (index !== -1) {\n _this.queue.splice(index, 1);\n }\n };\n\n _this.onFileRemoved = function (file) {\n var index = _this.queue.indexOf(file.id);\n\n if (index !== -1) {\n _this.queue.splice(index, 1);\n } // Clean up object URLs.\n\n\n if (file.preview && isObjectURL(file.preview)) {\n URL.revokeObjectURL(file.preview);\n }\n };\n\n _this.onRestored = function () {\n var _this$uppy$getState = _this.uppy.getState(),\n files = _this$uppy$getState.files;\n\n var fileIDs = Object.keys(files);\n fileIDs.forEach(function (fileID) {\n var file = _this.uppy.getFile(fileID);\n\n if (!file.isRestored) return; // Only add blob URLs; they are likely invalid after being restored.\n\n if (!file.preview || isObjectURL(file.preview)) {\n _this.addToQueue(file.id);\n }\n });\n };\n\n _this.waitUntilAllProcessed = function (fileIDs) {\n fileIDs.forEach(function (fileID) {\n var file = _this.uppy.getFile(fileID);\n\n _this.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: _this.i18n('generatingThumbnails')\n });\n });\n\n var emitPreprocessCompleteForAll = function emitPreprocessCompleteForAll() {\n fileIDs.forEach(function (fileID) {\n var file = _this.uppy.getFile(fileID);\n\n _this.uppy.emit('preprocess-complete', file);\n });\n };\n\n return new Promise(function (resolve, reject) {\n if (_this.queueProcessing) {\n _this.uppy.once('thumbnail:all-generated', function () {\n emitPreprocessCompleteForAll();\n resolve();\n });\n } else {\n emitPreprocessCompleteForAll();\n resolve();\n }\n });\n };\n\n _this.type = 'modifier';\n _this.id = _this.opts.id || 'ThumbnailGenerator';\n _this.title = 'Thumbnail Generator';\n _this.queue = [];\n _this.queueProcessing = false;\n _this.defaultThumbnailDimension = 200;\n _this.defaultLocale = {\n strings: {\n generatingThumbnails: 'Generating thumbnails...'\n }\n };\n var defaultOptions = {\n thumbnailWidth: null,\n thumbnailHeight: null,\n waitForThumbnailsBeforeUpload: false,\n lazy: false\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n if (_this.opts.lazy && _this.opts.waitForThumbnailsBeforeUpload) {\n throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n }\n\n _this.i18nInit();\n\n return _this;\n }\n\n var _proto = ThumbnailGenerator.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n }\n /**\n * Create a thumbnail for the given Uppy file object.\n *\n * @param {{data: Blob}} file\n * @param {number} targetWidth\n * @param {number} targetHeight\n * @returns {Promise}\n */\n ;\n\n _proto.createThumbnail = function createThumbnail(file, targetWidth, targetHeight) {\n var _this2 = this;\n\n var originalUrl = URL.createObjectURL(file.data);\n var onload = new Promise(function (resolve, reject) {\n var image = new Image();\n image.src = originalUrl;\n image.addEventListener('load', function () {\n URL.revokeObjectURL(originalUrl);\n resolve(image);\n });\n image.addEventListener('error', function (event) {\n URL.revokeObjectURL(originalUrl);\n reject(event.error || new Error('Could not create thumbnail'));\n });\n });\n var orientationPromise = exifr.rotation(file.data).catch(function (_err) {\n return 1;\n });\n return Promise.all([onload, orientationPromise]).then(function (_ref) {\n var image = _ref[0],\n orientation = _ref[1];\n\n var dimensions = _this2.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n\n var rotatedImage = _this2.rotateImage(image, orientation);\n\n var resizedImage = _this2.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n\n return _this2.canvasToBlob(resizedImage, 'image/jpeg', 80);\n }).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n /**\n * Get the new calculated dimensions for the given image and a target width\n * or height. If both width and height are given, only width is taken into\n * account. If neither width nor height are given, the default dimension\n * is used.\n */\n ;\n\n _proto.getProportionalDimensions = function getProportionalDimensions(img, width, height, rotation) {\n var aspect = img.width / img.height;\n\n if (rotation === 90 || rotation === 270) {\n aspect = img.height / img.width;\n }\n\n if (width != null) {\n return {\n width: width,\n height: Math.round(width / aspect)\n };\n }\n\n if (height != null) {\n return {\n width: Math.round(height * aspect),\n height: height\n };\n }\n\n return {\n width: this.defaultThumbnailDimension,\n height: Math.round(this.defaultThumbnailDimension / aspect)\n };\n }\n /**\n * Make sure the image doesn’t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\n ;\n\n _proto.protect = function protect(image) {\n // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n var ratio = image.width / image.height;\n var maxSquare = 5000000; // ios max canvas square\n\n var maxSize = 4096; // ie max canvas dimensions\n\n var maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n var maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n\n if (maxW > maxSize) {\n maxW = maxSize;\n maxH = Math.round(maxW / ratio);\n }\n\n if (maxH > maxSize) {\n maxH = maxSize;\n maxW = Math.round(ratio * maxH);\n }\n\n if (image.width > maxW) {\n var canvas = document.createElement('canvas');\n canvas.width = maxW;\n canvas.height = maxH;\n canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n image = canvas;\n }\n\n return image;\n }\n /**\n * Resize an image to the target `width` and `height`.\n *\n * Returns a Canvas with the resized image on it.\n */\n ;\n\n _proto.resizeImage = function resizeImage(image, targetWidth, targetHeight) {\n // Resizing in steps refactored to use a solution from\n // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n image = this.protect(image);\n var steps = Math.ceil(MathLog2(image.width / targetWidth));\n\n if (steps < 1) {\n steps = 1;\n }\n\n var sW = targetWidth * Math.pow(2, steps - 1);\n var sH = targetHeight * Math.pow(2, steps - 1);\n var x = 2;\n\n while (steps--) {\n var canvas = document.createElement('canvas');\n canvas.width = sW;\n canvas.height = sH;\n canvas.getContext('2d').drawImage(image, 0, 0, sW, sH);\n image = canvas;\n sW = Math.round(sW / x);\n sH = Math.round(sH / x);\n }\n\n return image;\n };\n\n _proto.rotateImage = function rotateImage(image, translate) {\n var w = image.width;\n var h = image.height;\n\n if (translate.deg === 90 || translate.deg === 270) {\n w = image.height;\n h = image.width;\n }\n\n var canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.translate(w / 2, h / 2);\n\n if (translate.canvas) {\n context.rotate(translate.rad);\n context.scale(translate.scaleX, translate.scaleY);\n }\n\n context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n return canvas;\n }\n /**\n * Save a element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise}\n */\n ;\n\n _proto.canvasToBlob = function canvasToBlob(canvas, type, quality) {\n try {\n canvas.getContext('2d').getImageData(0, 0, 1, 1);\n } catch (err) {\n if (err.code === 18) {\n return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n }\n }\n\n if (canvas.toBlob) {\n return new Promise(function (resolve) {\n canvas.toBlob(resolve, type, quality);\n }).then(function (blob) {\n if (blob === null) {\n throw new Error('cannot read image, probably an svg with external resources');\n }\n\n return blob;\n });\n }\n\n return Promise.resolve().then(function () {\n return dataURItoBlob(canvas.toDataURL(type, quality), {});\n }).then(function (blob) {\n if (blob === null) {\n throw new Error('could not extract blob, probably an old browser');\n }\n\n return blob;\n });\n }\n /**\n * Set the preview URL for a file.\n */\n ;\n\n _proto.setPreviewURL = function setPreviewURL(fileID, preview) {\n this.uppy.setFileState(fileID, {\n preview: preview\n });\n };\n\n _proto.addToQueue = function addToQueue(item) {\n this.queue.push(item);\n\n if (this.queueProcessing === false) {\n this.processQueue();\n }\n };\n\n _proto.processQueue = function processQueue() {\n var _this3 = this;\n\n this.queueProcessing = true;\n\n if (this.queue.length > 0) {\n var current = this.uppy.getFile(this.queue.shift());\n\n if (!current) {\n this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n return;\n }\n\n return this.requestThumbnail(current).catch(function (err) {}) // eslint-disable-line handle-callback-err\n .then(function () {\n return _this3.processQueue();\n });\n } else {\n this.queueProcessing = false;\n this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n this.uppy.emit('thumbnail:all-generated');\n }\n };\n\n _proto.requestThumbnail = function requestThumbnail(file) {\n var _this4 = this;\n\n if (isPreviewSupported(file.type) && !file.isRemote) {\n return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(function (preview) {\n _this4.setPreviewURL(file.id, preview);\n\n _this4.uppy.log(\"[ThumbnailGenerator] Generated thumbnail for \" + file.id);\n\n _this4.uppy.emit('thumbnail:generated', _this4.uppy.getFile(file.id), preview);\n }).catch(function (err) {\n _this4.uppy.log(\"[ThumbnailGenerator] Failed thumbnail for \" + file.id + \":\", 'warning');\n\n _this4.uppy.log(err, 'warning');\n\n _this4.uppy.emit('thumbnail:error', _this4.uppy.getFile(file.id), err);\n });\n }\n\n return Promise.resolve();\n };\n\n _proto.install = function install() {\n this.uppy.on('file-removed', this.onFileRemoved);\n\n if (this.opts.lazy) {\n this.uppy.on('thumbnail:request', this.onFileAdded);\n this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n } else {\n this.uppy.on('file-added', this.onFileAdded);\n this.uppy.on('restored', this.onRestored);\n }\n\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.uppy.off('file-removed', this.onFileRemoved);\n\n if (this.opts.lazy) {\n this.uppy.off('thumbnail:request', this.onFileAdded);\n this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n } else {\n this.uppy.off('file-added', this.onFileAdded);\n this.uppy.off('restored', this.onRestored);\n }\n\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n }\n };\n\n return ThumbnailGenerator;\n}(Plugin), _class.VERSION = \"1.6.0\", _temp);","module.exports = function settle(promises) {\n var resolutions = [];\n var rejections = [];\n\n function resolved(value) {\n resolutions.push(value);\n }\n\n function rejected(error) {\n rejections.push(error);\n }\n\n var wait = Promise.all(promises.map(function (promise) {\n return promise.then(resolved, rejected);\n }));\n return wait.then(function () {\n return {\n successful: resolutions,\n failed: rejections\n };\n });\n};","function isNetworkError(xhr) {\n if (!xhr) {\n return false;\n }\n\n return xhr.readyState !== 0 && xhr.readyState !== 4 || xhr.status === 0;\n}\n\nmodule.exports = isNetworkError;","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar tus = require('tus-js-client');\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider,\n RequestClient = _require2.RequestClient,\n Socket = _require2.Socket;\n\nvar emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n\nvar getSocketHost = require('@uppy/utils/lib/getSocketHost');\n\nvar settle = require('@uppy/utils/lib/settle');\n\nvar EventTracker = require('@uppy/utils/lib/EventTracker');\n\nvar NetworkError = require('@uppy/utils/lib/NetworkError');\n\nvar isNetworkError = require('@uppy/utils/lib/isNetworkError');\n\nvar RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\n\nvar hasProperty = require('@uppy/utils/lib/hasProperty');\n\nvar getFingerprint = require('./getFingerprint');\n/** @typedef {import('..').TusOptions} TusOptions */\n\n/** @typedef {import('@uppy/core').Uppy} Uppy */\n\n/** @typedef {import('@uppy/core').UppyFile} UppyFile */\n\n/** @typedef {import('@uppy/core').FailedUppyFile<{}>} FailedUppyFile */\n\n/**\n * Extracted from https://github.com/tus/tus-js-client/blob/master/lib/upload.js#L13\n * excepted we removed 'fingerprint' key to avoid adding more dependencies\n *\n * @type {TusOptions}\n */\n\n\nvar tusDefaultOptions = {\n endpoint: '',\n resume: true,\n onProgress: null,\n onChunkComplete: null,\n onSuccess: null,\n onError: null,\n headers: {},\n chunkSize: Infinity,\n withCredentials: false,\n uploadUrl: null,\n uploadSize: null,\n overridePatchMethod: false,\n retryDelays: null\n};\n/**\n * Tus resumable file uploader\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Tus, _Plugin);\n\n /**\n * @param {Uppy} uppy\n * @param {TusOptions} opts\n */\n function Tus(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'uploader';\n _this.id = _this.opts.id || 'Tus';\n _this.title = 'Tus'; // set default options\n\n var defaultOptions = {\n resume: true,\n autoRetry: true,\n useFastRemoteRetry: true,\n limit: 0,\n retryDelays: [0, 1000, 3000, 5000]\n }; // merge default options with the ones set by user\n\n /** @type {import(\"..\").TusOptions} */\n\n _this.opts = _extends({}, defaultOptions, opts);\n /**\n * Simultaneous upload limiting is shared across all uploads with this plugin.\n *\n * @type {RateLimitedQueue}\n */\n\n _this.requests = new RateLimitedQueue(_this.opts.limit);\n _this.uploaders = Object.create(null);\n _this.uploaderEvents = Object.create(null);\n _this.uploaderSockets = Object.create(null);\n _this.handleResetProgress = _this.handleResetProgress.bind(_assertThisInitialized(_this));\n _this.handleUpload = _this.handleUpload.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Tus.prototype;\n\n _proto.handleResetProgress = function handleResetProgress() {\n var files = _extends({}, this.uppy.getState().files);\n\n Object.keys(files).forEach(function (fileID) {\n // Only clone the file object if it has a Tus `uploadUrl` attached.\n if (files[fileID].tus && files[fileID].tus.uploadUrl) {\n var tusState = _extends({}, files[fileID].tus);\n\n delete tusState.uploadUrl;\n files[fileID] = _extends({}, files[fileID], {\n tus: tusState\n });\n }\n });\n this.uppy.setState({\n files: files\n });\n }\n /**\n * Clean up all references for a file's upload: the tus.Upload instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * @param {string} fileID\n */\n ;\n\n _proto.resetUploaderReferences = function resetUploaderReferences(fileID, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.uploaders[fileID]) {\n var uploader = this.uploaders[fileID];\n uploader.abort();\n\n if (opts.abort) {\n // to avoid 423 error from tus server, we wait\n // to be sure the previous request has been aborted before terminating the upload\n // @todo remove the timeout when this \"wait\" is handled in tus-js-client internally\n setTimeout(function () {\n return uploader.abort(true);\n }, 1000);\n }\n\n this.uploaders[fileID] = null;\n }\n\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n\n if (this.uploaderSockets[fileID]) {\n this.uploaderSockets[fileID].close();\n this.uploaderSockets[fileID] = null;\n }\n }\n /**\n * Create a new Tus upload.\n *\n * A lot can happen during an upload, so this is quite hard to follow!\n * - First, the upload is started. If the file was already paused by the time the upload starts, nothing should happen.\n * If the `limit` option is used, the upload must be queued onto the `this.requests` queue.\n * When an upload starts, we store the tus.Upload instance, and an EventTracker instance that manages the event listeners\n * for pausing, cancellation, removal, etc.\n * - While the upload is in progress, it may be paused or cancelled.\n * Pausing aborts the underlying tus.Upload, and removes the upload from the `this.requests` queue. All other state is\n * maintained.\n * Cancelling removes the upload from the `this.requests` queue, and completely aborts the upload--the tus.Upload instance\n * is aborted and discarded, the EventTracker instance is destroyed (removing all listeners).\n * Resuming the upload uses the `this.requests` queue as well, to prevent selectively pausing and resuming uploads from\n * bypassing the limit.\n * - After completing an upload, the tus.Upload and EventTracker instances are cleaned up, and the upload is marked as done\n * in the `this.requests` queue.\n * - When an upload completed with an error, the same happens as on successful completion, but the `upload()` promise is rejected.\n *\n * When working on this function, keep in mind:\n * - When an upload is completed or cancelled for any reason, the tus.Upload and EventTracker instances need to be cleaned up using this.resetUploaderReferences().\n * - When an upload is cancelled or paused, for any reason, it needs to be removed from the `this.requests` queue using `queuedRequest.abort()`.\n * - When an upload is completed for any reason, including errors, it needs to be marked as such using `queuedRequest.done()`.\n * - When an upload is started or resumed, it needs to go through the `this.requests` queue. The `queuedRequest` variable must be updated so the other uses of it are valid.\n * - Before replacing the `queuedRequest` variable, the previous `queuedRequest` must be aborted, else it will keep taking up a spot in the queue.\n *\n * @param {UppyFile} file for use with upload\n * @param {number} current file in a queue\n * @param {number} total number of files in a queue\n * @returns {Promise}\n */\n ;\n\n _proto.upload = function upload(file, current, total) {\n var _this2 = this;\n\n this.resetUploaderReferences(file.id); // Create a new tus upload\n\n return new Promise(function (resolve, reject) {\n _this2.uppy.emit('upload-started', file);\n\n var optsTus = _extends({}, tusDefaultOptions, _this2.opts, // Install file-specific upload overrides.\n file.tus || {}); // We override tus fingerprint to uppy’s `file.id`, since the `file.id`\n // now also includes `relativePath` for files added from folders.\n // This means you can add 2 identical files, if one is in folder a,\n // the other in folder b.\n\n\n optsTus.fingerprint = getFingerprint(file);\n\n optsTus.onError = function (err) {\n _this2.uppy.log(err);\n\n if (isNetworkError(err.originalRequest)) {\n err = new NetworkError(err, err.originalRequest);\n }\n\n _this2.resetUploaderReferences(file.id);\n\n queuedRequest.done();\n\n _this2.uppy.emit('upload-error', file, err);\n\n reject(err);\n };\n\n optsTus.onProgress = function (bytesUploaded, bytesTotal) {\n _this2.onReceiveUploadUrl(file, upload.url);\n\n _this2.uppy.emit('upload-progress', file, {\n uploader: _this2,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n });\n };\n\n optsTus.onSuccess = function () {\n var uploadResp = {\n uploadURL: upload.url\n };\n\n _this2.resetUploaderReferences(file.id);\n\n queuedRequest.done();\n\n _this2.uppy.emit('upload-success', file, uploadResp);\n\n if (upload.url) {\n _this2.uppy.log('Download ' + upload.file.name + ' from ' + upload.url);\n }\n\n resolve(upload);\n };\n\n var copyProp = function copyProp(obj, srcProp, destProp) {\n if (hasProperty(obj, srcProp) && !hasProperty(obj, destProp)) {\n obj[destProp] = obj[srcProp];\n }\n };\n\n var meta = {};\n var metaFields = Array.isArray(optsTus.metaFields) ? optsTus.metaFields // Send along all fields by default.\n : Object.keys(file.meta);\n metaFields.forEach(function (item) {\n meta[item] = file.meta[item];\n }); // tusd uses metadata fields 'filetype' and 'filename'\n\n copyProp(meta, 'type', 'filetype');\n copyProp(meta, 'name', 'filename');\n optsTus.metadata = meta;\n var upload = new tus.Upload(file.data, optsTus);\n _this2.uploaders[file.id] = upload;\n _this2.uploaderEvents[file.id] = new EventTracker(_this2.uppy);\n\n var queuedRequest = _this2.requests.run(function () {\n if (!file.isPaused) {\n upload.start();\n } // Don't do anything here, the caller will take care of cancelling the upload itself\n // using resetUploaderReferences(). This is because resetUploaderReferences() has to be\n // called when this request is still in the queue, and has not been started yet, too. At\n // that point this cancellation function is not going to be called.\n // Also, we need to remove the request from the queue _without_ destroying everything\n // related to this upload to handle pauses.\n\n\n return function () {};\n });\n\n _this2.onFileRemove(file.id, function (targetFileID) {\n queuedRequest.abort();\n\n _this2.resetUploaderReferences(file.id, {\n abort: !!upload.url\n });\n\n resolve(\"upload \" + targetFileID + \" was removed\");\n });\n\n _this2.onPause(file.id, function (isPaused) {\n if (isPaused) {\n // Remove this file from the queue so another file can start in its place.\n queuedRequest.abort();\n upload.abort();\n } else {\n // Resuming an upload should be queued, else you could pause and then resume a queued upload to make it skip the queue.\n queuedRequest.abort();\n queuedRequest = _this2.requests.run(function () {\n upload.start();\n return function () {};\n });\n }\n });\n\n _this2.onPauseAll(file.id, function () {\n queuedRequest.abort();\n upload.abort();\n });\n\n _this2.onCancelAll(file.id, function () {\n queuedRequest.abort();\n\n _this2.resetUploaderReferences(file.id, {\n abort: !!upload.url\n });\n\n resolve(\"upload \" + file.id + \" was canceled\");\n });\n\n _this2.onResumeAll(file.id, function () {\n queuedRequest.abort();\n\n if (file.error) {\n upload.abort();\n }\n\n queuedRequest = _this2.requests.run(function () {\n upload.start();\n return function () {};\n });\n });\n }).catch(function (err) {\n _this2.uppy.emit('upload-error', file, err);\n\n throw err;\n });\n }\n /**\n * @param {UppyFile} file for use with upload\n * @param {number} current file in a queue\n * @param {number} total number of files in a queue\n * @returns {Promise}\n */\n ;\n\n _proto.uploadRemote = function uploadRemote(file, current, total) {\n var _this3 = this;\n\n this.resetUploaderReferences(file.id);\n\n var opts = _extends({}, this.opts);\n\n if (file.tus) {\n // Install file-specific upload overrides.\n _extends(opts, file.tus);\n }\n\n this.uppy.emit('upload-started', file);\n this.uppy.log(file.remote.url);\n\n if (file.serverToken) {\n return this.connectToServerSocket(file);\n }\n\n return new Promise(function (resolve, reject) {\n var Client = file.remote.providerOptions.provider ? Provider : RequestClient;\n var client = new Client(_this3.uppy, file.remote.providerOptions); // !! cancellation is NOT supported at this stage yet\n\n client.post(file.remote.url, _extends({}, file.remote.body, {\n endpoint: opts.endpoint,\n uploadUrl: opts.uploadUrl,\n protocol: 'tus',\n size: file.data.size,\n metadata: file.meta\n })).then(function (res) {\n _this3.uppy.setFileState(file.id, {\n serverToken: res.token\n });\n\n file = _this3.uppy.getFile(file.id);\n return _this3.connectToServerSocket(file);\n }).then(function () {\n resolve();\n }).catch(function (err) {\n _this3.uppy.emit('upload-error', file, err);\n\n reject(err);\n });\n });\n }\n /**\n * See the comment on the upload() method.\n *\n * Additionally, when an upload is removed, completed, or cancelled, we need to close the WebSocket connection. This is handled by the resetUploaderReferences() function, so the same guidelines apply as in upload().\n *\n * @param {UppyFile} file\n */\n ;\n\n _proto.connectToServerSocket = function connectToServerSocket(file) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var token = file.serverToken;\n var host = getSocketHost(file.remote.companionUrl);\n var socket = new Socket({\n target: host + \"/api/\" + token,\n autoOpen: false\n });\n _this4.uploaderSockets[file.id] = socket;\n _this4.uploaderEvents[file.id] = new EventTracker(_this4.uppy);\n\n _this4.onFileRemove(file.id, function () {\n queuedRequest.abort(); // still send pause event in case we are dealing with older version of companion\n // @todo don't send pause event in the next major release.\n\n socket.send('pause', {});\n socket.send('cancel', {});\n\n _this4.resetUploaderReferences(file.id);\n\n resolve(\"upload \" + file.id + \" was removed\");\n });\n\n _this4.onPause(file.id, function (isPaused) {\n if (isPaused) {\n // Remove this file from the queue so another file can start in its place.\n queuedRequest.abort();\n socket.send('pause', {});\n } else {\n // Resuming an upload should be queued, else you could pause and then resume a queued upload to make it skip the queue.\n queuedRequest.abort();\n queuedRequest = _this4.requests.run(function () {\n socket.send('resume', {});\n return function () {};\n });\n }\n });\n\n _this4.onPauseAll(file.id, function () {\n queuedRequest.abort();\n socket.send('pause', {});\n });\n\n _this4.onCancelAll(file.id, function () {\n queuedRequest.abort(); // still send pause event in case we are dealing with older version of companion\n // @todo don't send pause event in the next major release.\n\n socket.send('pause', {});\n socket.send('cancel', {});\n\n _this4.resetUploaderReferences(file.id);\n\n resolve(\"upload \" + file.id + \" was canceled\");\n });\n\n _this4.onResumeAll(file.id, function () {\n queuedRequest.abort();\n\n if (file.error) {\n socket.send('pause', {});\n }\n\n queuedRequest = _this4.requests.run(function () {\n socket.send('resume', {});\n return function () {};\n });\n });\n\n _this4.onRetry(file.id, function () {\n // Only do the retry if the upload is actually in progress;\n // else we could try to send these messages when the upload is still queued.\n // We may need a better check for this since the socket may also be closed\n // for other reasons, like network failures.\n if (socket.isOpen) {\n socket.send('pause', {});\n socket.send('resume', {});\n }\n });\n\n _this4.onRetryAll(file.id, function () {\n // See the comment in the onRetry() call\n if (socket.isOpen) {\n socket.send('pause', {});\n socket.send('resume', {});\n }\n });\n\n socket.on('progress', function (progressData) {\n return emitSocketProgress(_this4, progressData, file);\n });\n socket.on('error', function (errData) {\n var message = errData.error.message;\n\n var error = _extends(new Error(message), {\n cause: errData.error\n }); // If the remote retry optimisation should not be used,\n // close the socket—this will tell companion to clear state and delete the file.\n\n\n if (!_this4.opts.useFastRemoteRetry) {\n _this4.resetUploaderReferences(file.id); // Remove the serverToken so that a new one will be created for the retry.\n\n\n _this4.uppy.setFileState(file.id, {\n serverToken: null\n });\n } else {\n socket.close();\n }\n\n _this4.uppy.emit('upload-error', file, error);\n\n queuedRequest.done();\n reject(error);\n });\n socket.on('success', function (data) {\n var uploadResp = {\n uploadURL: data.url\n };\n\n _this4.uppy.emit('upload-success', file, uploadResp);\n\n _this4.resetUploaderReferences(file.id);\n\n queuedRequest.done();\n resolve();\n });\n\n var queuedRequest = _this4.requests.run(function () {\n socket.open();\n\n if (file.isPaused) {\n socket.send('pause', {});\n } // Don't do anything here, the caller will take care of cancelling the upload itself\n // using resetUploaderReferences(). This is because resetUploaderReferences() has to be\n // called when this request is still in the queue, and has not been started yet, too. At\n // that point this cancellation function is not going to be called.\n // Also, we need to remove the request from the queue _without_ destroying everything\n // related to this upload to handle pauses.\n\n\n return function () {};\n });\n });\n }\n /**\n * Store the uploadUrl on the file options, so that when Golden Retriever\n * restores state, we will continue uploading to the correct URL.\n *\n * @param {UppyFile} file\n * @param {string} uploadURL\n */\n ;\n\n _proto.onReceiveUploadUrl = function onReceiveUploadUrl(file, uploadURL) {\n var currentFile = this.uppy.getFile(file.id);\n if (!currentFile) return; // Only do the update if we didn't have an upload URL yet.\n\n if (!currentFile.tus || currentFile.tus.uploadUrl !== uploadURL) {\n this.uppy.log('[Tus] Storing upload url');\n this.uppy.setFileState(currentFile.id, {\n tus: _extends({}, currentFile.tus, {\n uploadUrl: uploadURL\n })\n });\n }\n }\n /**\n * @param {string} fileID\n * @param {function(string): void} cb\n */\n ;\n\n _proto.onFileRemove = function onFileRemove(fileID, cb) {\n this.uploaderEvents[fileID].on('file-removed', function (file) {\n if (fileID === file.id) cb(file.id);\n });\n }\n /**\n * @param {string} fileID\n * @param {function(boolean): void} cb\n */\n ;\n\n _proto.onPause = function onPause(fileID, cb) {\n this.uploaderEvents[fileID].on('upload-pause', function (targetFileID, isPaused) {\n if (fileID === targetFileID) {\n // const isPaused = this.uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n }\n /**\n * @param {string} fileID\n * @param {function(): void} cb\n */\n ;\n\n _proto.onRetry = function onRetry(fileID, cb) {\n this.uploaderEvents[fileID].on('upload-retry', function (targetFileID) {\n if (fileID === targetFileID) {\n cb();\n }\n });\n }\n /**\n * @param {string} fileID\n * @param {function(): void} cb\n */\n ;\n\n _proto.onRetryAll = function onRetryAll(fileID, cb) {\n var _this5 = this;\n\n this.uploaderEvents[fileID].on('retry-all', function (filesToRetry) {\n if (!_this5.uppy.getFile(fileID)) return;\n cb();\n });\n }\n /**\n * @param {string} fileID\n * @param {function(): void} cb\n */\n ;\n\n _proto.onPauseAll = function onPauseAll(fileID, cb) {\n var _this6 = this;\n\n this.uploaderEvents[fileID].on('pause-all', function () {\n if (!_this6.uppy.getFile(fileID)) return;\n cb();\n });\n }\n /**\n * @param {string} fileID\n * @param {function(): void} cb\n */\n ;\n\n _proto.onCancelAll = function onCancelAll(fileID, cb) {\n var _this7 = this;\n\n this.uploaderEvents[fileID].on('cancel-all', function () {\n if (!_this7.uppy.getFile(fileID)) return;\n cb();\n });\n }\n /**\n * @param {string} fileID\n * @param {function(): void} cb\n */\n ;\n\n _proto.onResumeAll = function onResumeAll(fileID, cb) {\n var _this8 = this;\n\n this.uploaderEvents[fileID].on('resume-all', function () {\n if (!_this8.uppy.getFile(fileID)) return;\n cb();\n });\n }\n /**\n * @param {(UppyFile | FailedUppyFile)[]} files\n */\n ;\n\n _proto.uploadFiles = function uploadFiles(files) {\n var _this9 = this;\n\n var promises = files.map(function (file, i) {\n var current = i + 1;\n var total = files.length;\n\n if ('error' in file && file.error) {\n return Promise.reject(new Error(file.error));\n } else if (file.isRemote) {\n return _this9.uploadRemote(file, current, total);\n } else {\n return _this9.upload(file, current, total);\n }\n });\n return settle(promises);\n }\n /**\n * @param {string[]} fileIDs\n */\n ;\n\n _proto.handleUpload = function handleUpload(fileIDs) {\n var _this10 = this;\n\n if (fileIDs.length === 0) {\n this.uppy.log('[Tus] No files to upload');\n return Promise.resolve();\n }\n\n if (this.opts.limit === 0) {\n this.uppy.log('[Tus] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/tus/#limit-0', 'warning');\n }\n\n this.uppy.log('[Tus] Uploading...');\n var filesToUpload = fileIDs.map(function (fileID) {\n return _this10.uppy.getFile(fileID);\n });\n return this.uploadFiles(filesToUpload).then(function () {\n return null;\n });\n };\n\n _proto.install = function install() {\n this.uppy.setState({\n capabilities: _extends({}, this.uppy.getState().capabilities, {\n resumableUploads: true\n })\n });\n this.uppy.addUploader(this.handleUpload);\n this.uppy.on('reset-progress', this.handleResetProgress);\n\n if (this.opts.autoRetry) {\n this.uppy.on('back-online', this.uppy.retryAll);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.uppy.setState({\n capabilities: _extends({}, this.uppy.getState().capabilities, {\n resumableUploads: false\n })\n });\n this.uppy.removeUploader(this.handleUpload);\n\n if (this.opts.autoRetry) {\n this.uppy.off('back-online', this.uppy.retryAll);\n }\n };\n\n return Tus;\n}(Plugin), _class.VERSION = \"1.5.13\", _temp);","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n } else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n var payload = tryStringify(obj.data);\n if (payload !== false) {\n str += payload;\n } else {\n return ERROR_PACKET;\n }\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\nfunction tryStringify(str) {\n try {\n return JSON.stringify(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n } else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n } else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) {\n return error('unknown packet type ' + p.type);\n }\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n var payload = tryParse(str.substr(i));\n var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n if (isPayloadValid) {\n p.data = payload;\n } else {\n return error('invalid payload');\n }\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(str) {\n try {\n return JSON.parse(str);\n } catch(e){\n return false;\n }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error(msg) {\n return {\n type: exports.ERROR,\n data: 'parser error: ' + msg\n };\n}\n","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new self[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // results of ReactNative environment detection\n this.isReactNative = opts.isReactNative;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _handlebarsRuntime = require('./handlebars.runtime');\n\nvar _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);\n\n// Compiler imports\n\nvar _handlebarsCompilerAst = require('./handlebars/compiler/ast');\n\nvar _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);\n\nvar _handlebarsCompilerBase = require('./handlebars/compiler/base');\n\nvar _handlebarsCompilerCompiler = require('./handlebars/compiler/compiler');\n\nvar _handlebarsCompilerJavascriptCompiler = require('./handlebars/compiler/javascript-compiler');\n\nvar _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);\n\nvar _handlebarsCompilerVisitor = require('./handlebars/compiler/visitor');\n\nvar _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\nvar _create = _handlebarsRuntime2['default'].create;\nfunction create() {\n var hb = _create();\n\n hb.compile = function (input, options) {\n return _handlebarsCompilerCompiler.compile(input, options, hb);\n };\n hb.precompile = function (input, options) {\n return _handlebarsCompilerCompiler.precompile(input, options, hb);\n };\n\n hb.AST = _handlebarsCompilerAst2['default'];\n hb.Compiler = _handlebarsCompilerCompiler.Compiler;\n hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];\n hb.Parser = _handlebarsCompilerBase.parser;\n hb.parse = _handlebarsCompilerBase.parse;\n hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing;\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst.Visitor = _handlebarsCompilerVisitor2['default'];\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7aUNBQW9CLHNCQUFzQjs7Ozs7O3FDQUcxQiwyQkFBMkI7Ozs7c0NBS3BDLDRCQUE0Qjs7MENBQ1csZ0NBQWdDOztvREFDL0MsMkNBQTJDOzs7O3lDQUN0RCwrQkFBK0I7Ozs7b0NBRTVCLDBCQUEwQjs7OztBQUVqRCxJQUFJLE9BQU8sR0FBRywrQkFBUSxNQUFNLENBQUM7QUFDN0IsU0FBUyxNQUFNLEdBQUc7QUFDaEIsTUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7O0FBRW5CLElBQUUsQ0FBQyxPQUFPLEdBQUcsVUFBUyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLFdBQU8sb0NBQVEsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztHQUNwQyxDQUFDO0FBQ0YsSUFBRSxDQUFDLFVBQVUsR0FBRyxVQUFTLEtBQUssRUFBRSxPQUFPLEVBQUU7QUFDdkMsV0FBTyx1Q0FBVyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0dBQ3ZDLENBQUM7O0FBRUYsSUFBRSxDQUFDLEdBQUcscUNBQU0sQ0FBQztBQUNiLElBQUUsQ0FBQyxRQUFRLHVDQUFXLENBQUM7QUFDdkIsSUFBRSxDQUFDLGtCQUFrQixvREFBcUIsQ0FBQztBQUMzQyxJQUFFLENBQUMsTUFBTSxpQ0FBUyxDQUFDO0FBQ25CLElBQUUsQ0FBQyxLQUFLLGdDQUFRLENBQUM7QUFDakIsSUFBRSxDQUFDLHNCQUFzQixpREFBeUIsQ0FBQzs7QUFFbkQsU0FBTyxFQUFFLENBQUM7Q0FDWDs7QUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzs7QUFFckIsa0NBQVcsSUFBSSxDQUFDLENBQUM7O0FBRWpCLElBQUksQ0FBQyxPQUFPLHlDQUFVLENBQUM7O0FBRXZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7O3FCQUVSLElBQUkiLCJmaWxlIjoiaGFuZGxlYmFycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBydW50aW1lIGZyb20gJy4vaGFuZGxlYmFycy5ydW50aW1lJztcblxuLy8gQ29tcGlsZXIgaW1wb3J0c1xuaW1wb3J0IEFTVCBmcm9tICcuL2hhbmRsZWJhcnMvY29tcGlsZXIvYXN0JztcbmltcG9ydCB7XG4gIHBhcnNlciBhcyBQYXJzZXIsXG4gIHBhcnNlLFxuICBwYXJzZVdpdGhvdXRQcm9jZXNzaW5nXG59IGZyb20gJy4vaGFuZGxlYmFycy9jb21waWxlci9iYXNlJztcbmltcG9ydCB7IENvbXBpbGVyLCBjb21waWxlLCBwcmVjb21waWxlIH0gZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyJztcbmltcG9ydCBKYXZhU2NyaXB0Q29tcGlsZXIgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXInO1xuaW1wb3J0IFZpc2l0b3IgZnJvbSAnLi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3InO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG5sZXQgX2NyZWF0ZSA9IHJ1bnRpbWUuY3JlYXRlO1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICBsZXQgaGIgPSBfY3JlYXRlKCk7XG5cbiAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTtcbiAgfTtcbiAgaGIucHJlY29tcGlsZSA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIHByZWNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGhiKTtcbiAgfTtcblxuICBoYi5BU1QgPSBBU1Q7XG4gIGhiLkNvbXBpbGVyID0gQ29tcGlsZXI7XG4gIGhiLkphdmFTY3JpcHRDb21waWxlciA9IEphdmFTY3JpcHRDb21waWxlcjtcbiAgaGIuUGFyc2VyID0gUGFyc2VyO1xuICBoYi5wYXJzZSA9IHBhcnNlO1xuICBoYi5wYXJzZVdpdGhvdXRQcm9jZXNzaW5nID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZztcblxuICByZXR1cm4gaGI7XG59XG5cbmxldCBpbnN0ID0gY3JlYXRlKCk7XG5pbnN0LmNyZWF0ZSA9IGNyZWF0ZTtcblxubm9Db25mbGljdChpbnN0KTtcblxuaW5zdC5WaXNpdG9yID0gVmlzaXRvcjtcblxuaW5zdFsnZGVmYXVsdCddID0gaW5zdDtcblxuZXhwb3J0IGRlZmF1bHQgaW5zdDtcbiJdfQ==\n","const privateCls = [\r\n '.dhq_cell',\r\n '.dhq_row',\r\n '.dhq_hr',\r\n '.dhq_vr',\r\n '.dhq_button',\r\n '.dhq_grid',\r\n '.dhq_grid_item',\r\n '.dhq_badge'\r\n];\r\n\r\nfunction initEventHandler() {\r\n editor.Config['privateClasses'] = privateCls;\r\n\r\n //// for selecting component after droped to canvas\r\n editor.on('block:drag:stop', function(model) {\r\n editor.select(model);\r\n });\r\n\r\n //// for making default block classes private\r\n editor.on('selector:add', selector => {\r\n if (privateCls.indexOf(selector.getFullName()) >= 0) {\r\n selector.set({ private: 1 });\r\n }\r\n });\r\n}\r\n\r\nexport default {\r\n initEventHandler: initEventHandler\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n id: '',\r\n label: '',\r\n tagName: 'div',\r\n className: '',\r\n command: '',\r\n context: '',\r\n buttons: [],\r\n attributes: {},\r\n options: {},\r\n active: false,\r\n dragDrop: false,\r\n togglable: true,\r\n runDefaultCommand: true,\r\n stopDefaultCommand: false,\r\n disable: false\r\n },\r\n\r\n initialize(options) {\r\n if (this.get('buttons').length) {\r\n var Buttons = require('./Buttons').default;\r\n this.set('buttons', new Buttons(this.get('buttons')));\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Button from './Button';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Button,\r\n\r\n /**\r\n * Deactivate all buttons, except one passed\r\n * @param {Object} except Model to ignore\r\n * @param {Boolean} r Recursive flag\r\n *\r\n * @return void\r\n * */\r\n deactivateAllExceptOne(except, r) {\r\n this.forEach((model, index) => {\r\n if (model !== except) {\r\n model.set('active', false);\r\n if (r && model.get('buttons').length)\r\n model.get('buttons').deactivateAllExceptOne(except, r);\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Deactivate all buttons\r\n * @param {String} ctx Context string\r\n *\r\n * @return void\r\n * */\r\n deactivateAll(ctx, sender) {\r\n const context = ctx || '';\r\n this.forEach(model => {\r\n if (model.get('context') == context && model !== sender) {\r\n model.set('active', false, { silent: 1 });\r\n model.trigger('updateActive', { fromCollection: 1 });\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Disables all buttons\r\n * @param {String} ctx Context string\r\n *\r\n * @return void\r\n * */\r\n disableAllButtons(ctx) {\r\n var context = ctx || '';\r\n this.forEach((model, index) => {\r\n if (model.get('context') == context) {\r\n model.set('disable', true);\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Disables all buttons, except one passed\r\n * @param {Object} except Model to ignore\r\n * @param {Boolean} r Recursive flag\r\n *\r\n * @return void\r\n * */\r\n disableAllButtonsExceptOne(except, r) {\r\n this.forEach((model, index) => {\r\n if (model !== except) {\r\n model.set('disable', true);\r\n if (r && model.get('buttons').length)\r\n model.get('buttons').disableAllButtonsExceptOne(except, r);\r\n }\r\n });\r\n }\r\n});\r\n","/*! grapesjs-style-gradient - 2.0.3 */\n!function(e,t){'object'==typeof exports&&'object'==typeof module?module.exports=t():'function'==typeof define&&define.amd?define([],t):'object'==typeof exports?exports[\"grapesjs-style-gradient\"]=t():e[\"grapesjs-style-gradient\"]=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){'undefined'!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(e,'__esModule',{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&'object'==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,'default',{enumerable:!0,value:e}),2&t&&'string'!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,'a',t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=3)}([function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){function n(t){return\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?e.exports=n=function(e){return typeof e}:e.exports=n=function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(t)}e.exports=n},function(e,t,n){e.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=1)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.on=function(e,t,n){t=t.split(/\\s+/);for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};o(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));e=Object.assign({},e);var r={pfx:\"grp\",el:\".grp\",colorEl:\"\",min:0,max:100,direction:\"90deg\",type:\"linear\",height:\"30px\",width:\"100%\"};for(var a in r)a in e||(e[a]=r[a]);var l=e.el;if(!((l=\"string\"==typeof l?document.querySelector(l):l)instanceof HTMLElement))throw\"Element not found, given \"+l;return n.el=l,n.handlers=[],n.options=e,n.on(\"handler:color:change\",(function(e,t){return n.change(t)})),n.on(\"handler:position:change\",(function(e,t){return n.change(t)})),n.on(\"handler:remove\",(function(e){return n.change(1)})),n.on(\"handler:add\",(function(e){return n.change(1)})),n.render(),n}return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),a(t,[{key:\"setColorPicker\",value:function(e){this.colorPicker=e}},{key:\"getValue\",value:function(e,t){var n=this.getColorValue(),r=e||this.getType(),o=t||this.getDirection();return n?r+\"-gradient(\"+o+\", \"+n+\")\":\"\"}},{key:\"getSafeValue\",value:function(e,t){var n=this.previewEl,r=this.getValue(e,t);if(!this.sandEl&&(this.sandEl=document.createElement(\"div\")),!n||!r)return\"\";for(var o=this.sandEl.style,i=[r].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:\"\",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.type,o=this.direction,i=t.indexOf(\"(\")+1,a=t.lastIndexOf(\")\"),l=t.substring(i,a),c=l.split(/,(?![^(]*\\)) /);if(this.clear(n),l){c.length>2&&(o=c.shift());var u=void 0;[\"repeating-linear\",\"repeating-radial\",\"linear\",\"radial\"].forEach((function(e){t.indexOf(f(e))>-1&&!u&&(u=1,r=e)})),this.setDirection(o,n),this.setType(r,n),c.forEach((function(t){var r=t.split(\" \"),o=parseFloat(r.pop()),i=r.join(\"\");e.addHandler(o,i,0,n)})),this.updatePreview()}else this.updatePreview()}},{key:\"getColorValue\",value:function(){var e=this.handlers;return e.sort(s),(e=1==e.length?[e[0],e[0]]:e).map((function(e){return e.getValue()})).join(\", \")}},{key:\"getPrefixedValues\",value:function(e,t){var n=this.getValue(e,t);return[\"-moz-\",\"-webkit-\",\"-o-\",\"-ms-\"].map((function(e){return\"\"+e+n}))}},{key:\"change\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.updatePreview(),!t.silent&&this.emit(\"change\",e)}},{key:\"setDirection\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.options.direction=e,this.change(1,t)}},{key:\"getDirection\",value:function(){return this.options.direction}},{key:\"setType\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.options.type=e,this.change(1,t)}},{key:\"getType\",value:function(){return this.options.type}},{key:\"addHandler\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=new c.default(this,e,t,n);return!r.silent&&this.emit(\"handler:add\",o),o}},{key:\"getHandler\",value:function(e){return this.handlers[e]}},{key:\"getHandlers\",value:function(){return this.handlers}},{key:\"clear\",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.handlers,n=t.length-1;n>=0;n--)t[n].remove(e)}},{key:\"getSelected\",value:function(){for(var e=this.getHandlers(),t=0;tr||i\\n
\\n
\\n ';var l=t.querySelector(\".\"+i),c=t.querySelector(\".\"+a),u=l.style;u.position=\"relative\",this.wrapperEl=l,this.previewEl=c,r&&(u.height=r),o&&(u.width=o),this.initEvents(),this.updatePreview()}}}]),t}(l.default);t.default=d},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:0,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"black\",i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;r(this,e),t.getHandlers().push(this),this.gp=t,this.position=n,this.color=o,this.selected=0,this.render(),i&&this.select()}return o(e,[{key:\"toJSON\",value:function(){return{position:this.position,selected:this.selected,color:this.color}}},{key:\"setColor\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.color=e,this.emit(\"handler:color:change\",this,t)}},{key:\"setPosition\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=this.getEl();this.position=e,n&&(n.style.left=e+\"%\"),this.emit(\"handler:position:change\",this,t)}},{key:\"getColor\",value:function(){return this.color}},{key:\"getPosition\",value:function(){return this.position}},{key:\"isSelected\",value:function(){return!!this.selected}},{key:\"getValue\",value:function(){return this.getColor()+\" \"+this.getPosition()+\"%\"}},{key:\"select\",value:function(){var e=this.getEl();this.gp.getHandlers().forEach((function(e){return e.deselect()})),this.selected=1;var t=this.getSelectedCls();e&&(e.className+=\" \"+t),this.emit(\"handler:select\",this)}},{key:\"deselect\",value:function(){var e=this.getEl();this.selected=0;var t=this.getSelectedCls();e&&(e.className=e.className.replace(t,\"\").trim()),this.emit(\"handler:deselect\",this)}},{key:\"getSelectedCls\",value:function(){return this.gp.options.pfx+\"-handler-selected\"}},{key:\"remove\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.getEl(),n=this.gp.getHandlers(),r=n.splice(n.indexOf(this),1)[0];return t&&t.parentNode.removeChild(t),!e.silent&&this.emit(\"handler:remove\",r),r}},{key:\"getEl\",value:function(){return this.el}},{key:\"initEvents\",value:function(){var e=this,t=this.getEl(),n=this.gp.previewEl,r=this.gp.options,o=r.min,a=r.max,l=t.querySelector(\"[data-toggle=handler-close]\"),c=t.querySelector(\"[data-toggle=handler-color-c]\"),u=t.querySelector(\"[data-toggle=handler-color-wrap]\"),s=t.querySelector(\"[data-toggle=handler-color]\"),f=t.querySelector(\"[data-toggle=handler-drag]\");if(c&&(0,i.on)(c,\"click\",(function(e){return e.stopPropagation()})),l&&(0,i.on)(l,\"click\",(function(t){t.stopPropagation(),e.remove()})),s&&(0,i.on)(s,\"change\",(function(t){var n=t.target.value;e.setColor(n),u&&(u.style.backgroundColor=n)})),f){var d=0,p=0,h=0,g={},v={},y={},m=function(t){h=1,y.x=t.clientX-v.x,y.y=t.clientY-v.y,d=100*y.x,d/=g.w,d=(d=(d=p+d)a?a:d,e.setPosition(d,0),e.emit(\"handler:drag\",e,d),0===t.which&&b(t)},b=function t(n){h&&(h=0,e.setPosition(d),(0,i.off)(document,\"touchmove mousemove\",m),(0,i.off)(document,\"touchend mouseup\",t),e.emit(\"handler:drag:end\",e,d))};(0,i.on)(f,\"touchstart mousedown\",(function(t){0===t.button&&(e.select(),p=e.position,g.w=n.clientWidth,g.h=n.clientHeight,v.x=t.clientX,v.y=t.clientY,(0,i.on)(document,\"touchmove mousemove\",m),(0,i.on)(document,\"touchend mouseup\",b),e.emit(\"handler:drag:start\",e))})),(0,i.on)(f,\"click\",(function(e){return e.stopPropagation()}))}}},{key:\"emit\",value:function(){var e;(e=this.gp).emit.apply(e,arguments)}},{key:\"render\",value:function(){var e=this.gp,t=e.options,n=e.previewEl,r=e.colorPicker,o=t.pfx,i=t.colorEl,a=this.getColor();if(n){var l=document.createElement(\"div\"),c=l.style,u=o+\"-handler\";return l.className=u,l.innerHTML='\\n
\\n
\\n
\\n
\\n
\\n '+(i||'\\n
\\n \\n
')+\"\\n
\\n \",c.position=\"absolute\",c.top=0,c.left=this.position+\"%\",n.appendChild(l),this.el=l,this.initEvents(),r&&r(this),l}}}]),e}();t.default=a}])},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n.n(r),i=n(1),a=n.n(i),l=n(2),c=n.n(l);function u(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(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=e.StyleManager,r=t.colorPicker,o={},i=function(e){o=e||{fromTarget:1,avoidStore:1},setTimeout((function(){return o={}}))};n.addType('gradient',{view:{events:{},templateInput:function(){return''},setValue:function(e){var t=this.gp,n=this.model.getDefaultValue();e=e||n,i(),t&&t.setValue(e),d&&d.setValue(t.getType()),f&&f.setValue(t.getDirection())},onRender:function(){var l=this,u=this.ppfx,g=this.em,v=this.model,y=s({},t,{},v.get('gradientConfig')||{}),m=y.onCustomInputChange,b=document.createElement('div'),w=r&&\"
\\n
\\n
\\n
\\n
\\n
\"),k=new c.a(s({el:b,colorEl:w},y.grapickOpts)),O=this.el.querySelector(\".\".concat(u,\"fields\"));O.style.flexWrap='wrap',O.appendChild(b.children[0]),this.gp=k,k.on('change',(function(e){var t=k.getSafeValue();v.setValueFromInput(t,e,o)})),[['inputDirection','integer','setDirection',{name:'Direction',units:['deg'],defaults:90,fixedValues:['top','right','bottom','left']}],['inputType','select','setType',{name:'Type',defaults:'linear',options:[{value:'radial'},{value:'linear'},{value:'repeating-radial'},{value:'repeating-linear'}]}]].forEach((function(e){var t=e[0],r=y[e[0]];if(r){var o=v.parent,c=e[1],u='object'==a()(r)?r:{},p=n.createType(u.type||c,{model:s({},e[3],{},u),view:{propTarget:l.propTarget}});o&&(p.model.parent=o),p.render(),p.model.on('change:value',(function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};i(r),k[e[2]](t.getFullValue()),m({model:t,input:e,inputDirection:f,inputType:d,opts:r})})),O.appendChild(p.el),'inputDirection'==t&&(f=p),'inputType'==t&&(d=p)}})),'default'==r&&(r=function(t){var n=t.getEl().querySelector(\"[\".concat(p,\"]\")),r=n.style;r.backgroundColor=t.getColor();var o=g&&g.getConfig()||{},i=o.colorPicker||{},a=o.el,l=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=h(e);r.backgroundColor=o,t.setColor(o,n)},c={color:t.getColor(),change:function(e){l(e)},move:function(e){l(e,0)}},f=g&&g.initBaseColorPicker;f?f(n,c):e.$(n).spectrum(s({containerClassName:\"\".concat(u,\"one-bg \").concat(u,\"two-color\"),appendTo:a||'body',maxSelectionSize:8,showPalette:!0,palette:[],showAlpha:!0,chooseText:'Ok',cancelText:'⨯'},c,{},i))},k.on('handler:remove',(function(t){var n=t.getEl().querySelector(\"[\".concat(p,\"]\")),r=e.$(n);r.spectrum&&r.spectrum('destroy')}))),r&&k.setColorPicker(r)}}})};function v(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 y(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n={grapickOpts:{},colorPicker:'',inputDirection:1,inputType:1,onCustomInputChange:function(){return 0}},r=y({},n,{},t);g(e,r)}}])}));\n//# sourceMappingURL=grapesjs-style-gradient.min.js.map","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","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\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)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function helperExpression(node) {\n return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);\n },\n\n scopedId: function scopedId(path) {\n return (/^\\.|this\\b/.test(path.original)\n );\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function simpleId(path) {\n return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexports['default'] = AST;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJLEdBQUcsR0FBRzs7QUFFUixTQUFPLEVBQUU7Ozs7QUFJUCxvQkFBZ0IsRUFBRSwwQkFBUyxJQUFJLEVBQUU7QUFDL0IsYUFDRSxJQUFJLENBQUMsSUFBSSxLQUFLLGVBQWUsSUFDNUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixJQUNqQyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFBLElBQzlCLENBQUMsRUFBRSxBQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUssSUFBSSxDQUFDLElBQUksQ0FBQSxBQUFDLEFBQUMsQ0FDdkQ7S0FDSDs7QUFFRCxZQUFRLEVBQUUsa0JBQVMsSUFBSSxFQUFFO0FBQ3ZCLGFBQU8sYUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQUM7S0FDekM7Ozs7QUFJRCxZQUFRLEVBQUUsa0JBQVMsSUFBSSxFQUFFO0FBQ3ZCLGFBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUNyRTtLQUNIO0dBQ0Y7Q0FDRixDQUFDOzs7O3FCQUlhLEdBQUciLCJmaWxlIjoiYXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IEFTVCA9IHtcbiAgLy8gUHVibGljIEFQSSB1c2VkIHRvIGV2YWx1YXRlIGRlcml2ZWQgYXR0cmlidXRlcyByZWdhcmRpbmcgQVNUIG5vZGVzXG4gIGhlbHBlcnM6IHtcbiAgICAvLyBhIG11c3RhY2hlIGlzIGRlZmluaXRlbHkgYSBoZWxwZXIgaWY6XG4gICAgLy8gKiBpdCBpcyBhbiBlbGlnaWJsZSBoZWxwZXIsIGFuZFxuICAgIC8vICogaXQgaGFzIGF0IGxlYXN0IG9uZSBwYXJhbWV0ZXIgb3IgaGFzaCBzZWdtZW50XG4gICAgaGVscGVyRXhwcmVzc2lvbjogZnVuY3Rpb24obm9kZSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgbm9kZS50eXBlID09PSAnU3ViRXhwcmVzc2lvbicgfHxcbiAgICAgICAgKChub2RlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcgfHxcbiAgICAgICAgICBub2RlLnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpICYmXG4gICAgICAgICAgISEoKG5vZGUucGFyYW1zICYmIG5vZGUucGFyYW1zLmxlbmd0aCkgfHwgbm9kZS5oYXNoKSlcbiAgICAgICk7XG4gICAgfSxcblxuICAgIHNjb3BlZElkOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gL15cXC58dGhpc1xcYi8udGVzdChwYXRoLm9yaWdpbmFsKTtcbiAgICB9LFxuXG4gICAgLy8gYW4gSUQgaXMgc2ltcGxlIGlmIGl0IG9ubHkgaGFzIG9uZSBwYXJ0LCBhbmQgdGhhdCBwYXJ0IGlzIG5vdFxuICAgIC8vIGAuLmAgb3IgYHRoaXNgLlxuICAgIHNpbXBsZUlkOiBmdW5jdGlvbihwYXRoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBwYXRoLnBhcnRzLmxlbmd0aCA9PT0gMSAmJiAhQVNULmhlbHBlcnMuc2NvcGVkSWQocGF0aCkgJiYgIXBhdGguZGVwdGhcbiAgICAgICk7XG4gICAgfVxuICB9XG59O1xuXG4vLyBNdXN0IGJlIGV4cG9ydGVkIGFzIGFuIG9iamVjdCByYXRoZXIgdGhhbiB0aGUgcm9vdCBvZiB0aGUgbW9kdWxlIGFzIHRoZSBqaXNvbiBsZXhlclxuLy8gbXVzdCBtb2RpZnkgdGhlIG9iamVjdCB0byBvcGVyYXRlIHByb3Blcmx5LlxuZXhwb3J0IGRlZmF1bHQgQVNUO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function acceptKey(node, name) {\n var value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new _exception2['default']('Unexpected node type \"' + value.type + '\" found when accepting ' + name + ' on ' + node.type);\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function acceptRequired(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new _exception2['default'](node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function acceptArray(array) {\n for (var i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function accept(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new _exception2['default']('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n var ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function Program(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function PartialBlockStatement(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function ContentStatement() /* content */{},\n CommentStatement: function CommentStatement() /* comment */{},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function PathExpression() /* path */{},\n\n StringLiteral: function StringLiteral() /* string */{},\n NumberLiteral: function NumberLiteral() /* number */{},\n BooleanLiteral: function BooleanLiteral() /* bool */{},\n UndefinedLiteral: function UndefinedLiteral() /* literal */{},\n NullLiteral: function NullLiteral() /* literal */{},\n\n Hash: function Hash(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function HashPair(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexports['default'] = Visitor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3Zpc2l0b3IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztBQUVwQyxTQUFTLE9BQU8sR0FBRztBQUNqQixNQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztDQUNuQjs7QUFFRCxPQUFPLENBQUMsU0FBUyxHQUFHO0FBQ2xCLGFBQVcsRUFBRSxPQUFPO0FBQ3BCLFVBQVEsRUFBRSxLQUFLOzs7QUFHZixXQUFTLEVBQUUsbUJBQVMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLFFBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTs7O0FBR2pCLFVBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDM0MsY0FBTSwyQkFDSix3QkFBd0IsR0FDdEIsS0FBSyxDQUFDLElBQUksR0FDVix5QkFBeUIsR0FDekIsSUFBSSxHQUNKLE1BQU0sR0FDTixJQUFJLENBQUMsSUFBSSxDQUNaLENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDcEI7R0FDRjs7OztBQUlELGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNuQyxRQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzs7QUFFM0IsUUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNmLFlBQU0sMkJBQWMsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDdEQ7R0FDRjs7OztBQUlELGFBQVcsRUFBRSxxQkFBUyxLQUFLLEVBQUU7QUFDM0IsU0FBSyxJQUFJLENBQUMsR0FB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QztBQUNsQyxNQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztDQUNsQztBQUNELFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtBQUN6QixvQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDOztBQUVyQyxNQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqQyxNQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztDQUNsQztBQUNELFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUM3QixNQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNyQyxNQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQyxNQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztDQUNqQzs7cUJBRWMsT0FBTyIsImZpbGUiOiJ2aXNpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5mdW5jdGlvbiBWaXNpdG9yKCkge1xuICB0aGlzLnBhcmVudHMgPSBbXTtcbn1cblxuVmlzaXRvci5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBWaXNpdG9yLFxuICBtdXRhdGluZzogZmFsc2UsXG5cbiAgLy8gVmlzaXRzIGEgZ2l2ZW4gdmFsdWUuIElmIG11dGF0aW5nLCB3aWxsIHJlcGxhY2UgdGhlIHZhbHVlIGlmIG5lY2Vzc2FyeS5cbiAgYWNjZXB0S2V5OiBmdW5jdGlvbihub2RlLCBuYW1lKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5hY2NlcHQobm9kZVtuYW1lXSk7XG4gICAgaWYgKHRoaXMubXV0YXRpbmcpIHtcbiAgICAgIC8vIEhhY2t5IHNhbml0eSBjaGVjazogVGhpcyBtYXkgaGF2ZSBhIGZldyBmYWxzZSBwb3NpdGl2ZXMgZm9yIHR5cGUgZm9yIHRoZSBoZWxwZXJcbiAgICAgIC8vIG1ldGhvZHMgYnV0IHdpbGwgZ2VuZXJhbGx5IGRvIHRoZSByaWdodCB0aGluZyB3aXRob3V0IGEgbG90IG9mIG92ZXJoZWFkLlxuICAgICAgaWYgKHZhbHVlICYmICFWaXNpdG9yLnByb3RvdHlwZVt2YWx1ZS50eXBlXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAgICdVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIicgK1xuICAgICAgICAgICAgdmFsdWUudHlwZSArXG4gICAgICAgICAgICAnXCIgZm91bmQgd2hlbiBhY2NlcHRpbmcgJyArXG4gICAgICAgICAgICBuYW1lICtcbiAgICAgICAgICAgICcgb24gJyArXG4gICAgICAgICAgICBub2RlLnR5cGVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmVcbiAgLy8gcmVxdWlyZWQga2V5cyBhcmUgbm90IHJlbW92ZWQuXG4gIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbihub2RlLCBuYW1lKSB7XG4gICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7XG5cbiAgICBpZiAoIW5vZGVbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24obm9kZS50eXBlICsgJyByZXF1aXJlcyAnICsgbmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRyYXZlcnNlcyBhIGdpdmVuIGFycmF5LiBJZiBtdXRhdGluZywgZW1wdHkgcmVzcG5zZXMgd2lsbCBiZSByZW1vdmVkXG4gIC8vIGZvciBjaGlsZCBlbGVtZW50cy5cbiAgYWNjZXB0QXJyYXk6IGZ1bmN0aW9uKGFycmF5KSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMuYWNjZXB0S2V5KGFycmF5LCBpKTtcblxuICAgICAgaWYgKCFhcnJheVtpXSkge1xuICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGktLTtcbiAgICAgICAgbC0tO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhY2NlcHQ6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmICghb2JqZWN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IFNhbml0eSBjb2RlICovXG4gICAgaWYgKCF0aGlzW29iamVjdC50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0eXBlOiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0O1xuXG4gICAgbGV0IHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTtcblxuICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgdGhpcy5hY2NlcHRBcnJheShwcm9ncmFtLmJvZHkpO1xuICB9LFxuXG4gIE11c3RhY2hlU3RhdGVtZW50OiB2aXNpdFN1YkV4cHJlc3Npb24sXG4gIERlY29yYXRvcjogdmlzaXRTdWJFeHByZXNzaW9uLFxuXG4gIEJsb2NrU3RhdGVtZW50OiB2aXNpdEJsb2NrLFxuICBEZWNvcmF0b3JCbG9jazogdmlzaXRCbG9jayxcblxuICBQYXJ0aWFsU3RhdGVtZW50OiB2aXNpdFBhcnRpYWwsXG4gIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbCkge1xuICAgIHZpc2l0UGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwpO1xuXG4gICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dyYW0nKTtcbiAgfSxcblxuICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbigvKiBjb250ZW50ICovKSB7fSxcbiAgQ29tbWVudFN0YXRlbWVudDogZnVuY3Rpb24oLyogY29tbWVudCAqLykge30sXG5cbiAgU3ViRXhwcmVzc2lvbjogdmlzaXRTdWJFeHByZXNzaW9uLFxuXG4gIFBhdGhFeHByZXNzaW9uOiBmdW5jdGlvbigvKiBwYXRoICovKSB7fSxcblxuICBTdHJpbmdMaXRlcmFsOiBmdW5jdGlvbigvKiBzdHJpbmcgKi8pIHt9LFxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbigvKiBudW1iZXIgKi8pIHt9LFxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24oLyogYm9vbCAqLykge30sXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uKC8qIGxpdGVyYWwgKi8pIHt9LFxuICBOdWxsTGl0ZXJhbDogZnVuY3Rpb24oLyogbGl0ZXJhbCAqLykge30sXG5cbiAgSGFzaDogZnVuY3Rpb24oaGFzaCkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7XG4gIH0sXG4gIEhhc2hQYWlyOiBmdW5jdGlvbihwYWlyKSB7XG4gICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdmlzaXRTdWJFeHByZXNzaW9uKG11c3RhY2hlKSB7XG4gIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkobXVzdGFjaGUucGFyYW1zKTtcbiAgdGhpcy5hY2NlcHRLZXkobXVzdGFjaGUsICdoYXNoJyk7XG59XG5mdW5jdGlvbiB2aXNpdEJsb2NrKGJsb2NrKSB7XG4gIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxsKHRoaXMsIGJsb2NrKTtcblxuICB0aGlzLmFjY2VwdEtleShibG9jaywgJ3Byb2dyYW0nKTtcbiAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7XG59XG5mdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkge1xuICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhcnRpYWwsICduYW1lJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMpO1xuICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBWaXNpdG9yO1xuIl19\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _supportsColor = _interopRequireDefault(require(\"supports-color\"));\n\nvar _chalk = _interopRequireDefault(require(\"chalk\"));\n\nvar _terminalHighlight = _interopRequireDefault(require(\"./terminal-highlight\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' })\n */\nvar CssSyntaxError =\n/*#__PURE__*/\nfunction (_Error) {\n _inheritsLoose(CssSyntaxError, _Error);\n\n /**\n * @param {string} message Error message.\n * @param {number} [line] Source line of the error.\n * @param {number} [column] Source column of the error.\n * @param {string} [source] Source code of the broken file.\n * @param {string} [file] Absolute path to the broken file.\n * @param {string} [plugin] PostCSS plugin name, if error came from plugin.\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n var _this;\n\n _this = _Error.call(this, message) || this;\n /**\n * Always equal to `'CssSyntaxError'`. You should always check error type\n * by `error.name === 'CssSyntaxError'`\n * instead of `error instanceof CssSyntaxError`,\n * because npm could have several PostCSS versions.\n *\n * @type {string}\n *\n * @example\n * if (error.name === 'CssSyntaxError') {\n * error //=> CssSyntaxError\n * }\n */\n\n _this.name = 'CssSyntaxError';\n /**\n * Error message.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n\n _this.reason = message;\n\n if (file) {\n /**\n * Absolute path to the broken file.\n *\n * @type {string}\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n _this.file = file;\n }\n\n if (source) {\n /**\n * Source code of the broken file.\n *\n * @type {string}\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n _this.source = source;\n }\n\n if (plugin) {\n /**\n * Plugin name, if error came from plugin.\n *\n * @type {string}\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n _this.plugin = plugin;\n }\n\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * Source line of the error.\n *\n * @type {number}\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n _this.line = line;\n /**\n * Source column of the error.\n *\n * @type {number}\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n\n _this.column = column;\n }\n\n _this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), CssSyntaxError);\n }\n\n return _this;\n }\n\n var _proto = CssSyntaxError.prototype;\n\n _proto.setMessage = function setMessage() {\n /**\n * Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @type {string}\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '';\n\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n\n this.message += ': ' + this.reason;\n }\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] Whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} Few lines of CSS source that caused the error.\n */\n ;\n\n _proto.showSourceCode = function showSourceCode(color) {\n var _this2 = this;\n\n if (!this.source) return '';\n var css = this.source;\n\n if (_terminalHighlight.default) {\n if (typeof color === 'undefined') color = _supportsColor.default.stdout;\n if (color) css = (0, _terminalHighlight.default)(css);\n }\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk.default.red) {\n return _chalk.default.red.bold(text);\n }\n\n return text;\n }\n\n function aside(text) {\n if (color && _chalk.default.gray) {\n return _chalk.default.gray(text);\n }\n\n return text;\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n\n if (number === _this2.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this2.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n }\n\n return ' ' + aside(gutter) + line;\n }).join('\\n');\n }\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} Error position, message and source code.\n */\n ;\n\n _proto.toString = function toString() {\n var code = this.showSourceCode();\n\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n\n return this.name + ': ' + this.message + code;\n }\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n ;\n\n return CssSyntaxError;\n}(_wrapNativeSuper(Error));\n\nvar _default = CssSyntaxError;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInRlcm1pbmFsSGlnaGxpZ2h0Iiwic3VwcG9ydHNDb2xvciIsInN0ZG91dCIsImxpbmVzIiwic3BsaXQiLCJzdGFydCIsIk1hdGgiLCJtYXgiLCJlbmQiLCJtaW4iLCJsZW5ndGgiLCJtYXhXaWR0aCIsIlN0cmluZyIsIm1hcmsiLCJ0ZXh0IiwiY2hhbGsiLCJyZWQiLCJib2xkIiwiYXNpZGUiLCJncmF5Iiwic2xpY2UiLCJtYXAiLCJpbmRleCIsIm51bWJlciIsImd1dHRlciIsInNwYWNpbmciLCJyZXBsYWNlIiwiam9pbiIsInRvU3RyaW5nIiwiY29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBMkJNQSxjOzs7OztBQUNKOzs7Ozs7OztBQVFBLDBCQUFhQyxPQUFiLEVBQXNCQyxJQUF0QixFQUE0QkMsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDQyxJQUE1QyxFQUFrREMsTUFBbEQsRUFBMEQ7QUFBQTs7QUFDeEQsOEJBQU1MLE9BQU47QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFhQSxVQUFLTSxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7Ozs7O0FBUUEsVUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFFBQUlJLElBQUosRUFBVTtBQUNSOzs7Ozs7Ozs7QUFTQSxZQUFLQSxJQUFMLEdBQVlBLElBQVo7QUFDRDs7QUFDRCxRQUFJRCxNQUFKLEVBQVk7QUFDVjs7Ozs7Ozs7O0FBU0EsWUFBS0EsTUFBTCxHQUFj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OztBQUNBLFVBQUlZLE1BQU0sS0FBSyxNQUFJLENBQUNwQyxJQUFwQixFQUEwQjtBQUN4QixZQUFJc0MsT0FBTyxHQUFHUCxLQUFLLENBQUNNLE1BQU0sQ0FBQ0UsT0FBUCxDQUFlLEtBQWYsRUFBc0IsR0FBdEIsQ0FBRCxDQUFMLEdBQ1p2QyxJQUFJLENBQUNpQyxLQUFMLENBQVcsQ0FBWCxFQUFjLE1BQUksQ0FBQ2hDLE1BQUwsR0FBYyxDQUE1QixFQUErQnNDLE9BQS9CLENBQXVDLFFBQXZDLEVBQWlELEdBQWpELENBREY7QUFFQSxlQUFPYixJQUFJLENBQUMsR0FBRCxDQUFKLEdBQVlLLEtBQUssQ0FBQ00sTUFBRCxDQUFqQixHQUE0QnJDLElBQTVCLEdBQW1DLEtBQW5DLEdBQTJDc0MsT0FBM0MsR0FBcURaLElBQUksQ0FBQyxHQUFELENBQWhFO0FBQ0Q7O0FBQ0QsYUFBTyxNQUFNSyxLQUFLLENBQUNNLE1BQUQsQ0FBWCxHQUFzQnJDLElBQTdCO0FBQ0QsS0FUTSxFQVNKd0MsSUFUSSxDQVNDLElBVEQsQ0FBUDtBQVVEO0FBRUQ7Ozs7Ozs7Ozs7OztTQVVBQyxRLEdBQUEsb0JBQVk7QUFDVixRQUFJQyxJQUFJLEdBQUcsS0FBS2hDLGNBQUwsRUFBWDs7QUFDQSxRQUFJZ0MsSUFBSixFQUFVO0FBQ1JBLE1BQUFBLElBQUksR0FBRyxTQUFTQSxJQUFULEdBQWdCLElBQXZCO0FBQ0Q7O0FBQ0QsV0FBTyxLQUFLckMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MyQyxJQUF6QztBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OzttQkF0TTJCbEMsSzs7ZUFvTmRWLGMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcidcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsaydcblxuaW1wb3J0IHRlcm1pbmFsSGlnaGxpZ2h0IGZyb20gJy4vdGVybWluYWwtaGlnaGxpZ2h0J1xuXG4vKipcbiAqIFRoZSBDU1MgcGFyc2VyIHRocm93cyB0aGlzIGVycm9yIGZvciBicm9rZW4gQ1NTLlxuICpcbiAqIEN1c3RvbSBwYXJzZXJzIGNhbiB0aHJvdyB0aGlzIGVycm9yIGZvciBicm9rZW4gY3VzdG9tIHN5bnRheCB1c2luZ1xuICogdGhlIHtAbGluayBOb2RlI2Vycm9yfSBtZXRob2QuXG4gKlxuICogUG9zdENTUyB3aWxsIHVzZSB0aGUgaW5wdXQgc291cmNlIG1hcCB0byBkZXRlY3QgdGhlIG9yaWdpbmFsIGVycm9yIGxvY2F0aW9uLlxuICogSWYgeW91IHdyb3RlIGEgU2FzcyBmaWxlLCBjb21waWxlZCBpdCB0byBDU1MgYW5kIHRoZW4gcGFyc2VkIGl0IHdpdGggUG9zdENTUyxcbiAqIFBvc3RDU1Mgd2lsbCBzaG93IHRoZSBvcmlnaW5hbCBwb3NpdGlvbiBpbiB0aGUgU2FzcyBmaWxlLlxuICpcbiAqIElmIHlvdSBuZWVkIHRoZSBwb3NpdGlvbiBpbiB0aGUgUG9zdENTUyBpbnB1dFxuICogKGUuZy4sIHRvIGRlYnVnIHRoZSBwcmV2aW91cyBjb21waWxlciksIHVzZSBgZXJyb3IuaW5wdXQuZmlsZWAuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENhdGNoaW5nIGFuZCBjaGVja2luZyBzeW50YXggZXJyb3JcbiAqIHRyeSB7XG4gKiAgIHBvc3Rjc3MucGFyc2UoJ2F7JylcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InKSB7XG4gKiAgICAgZXJyb3IgLy89PiBDc3NTeW50YXhFcnJvclxuICogICB9XG4gKiB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJhaXNpbmcgZXJyb3IgZnJvbSBwbHVnaW5cbiAqIHRocm93IG5vZGUuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUnLCB7IHBsdWdpbjogJ3Bvc3Rjc3MtdmFycycgfSlcbiAqL1xuY2xhc3MgQ3NzU3ludGF4RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgRXJyb3IgbWVzc2FnZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIFNvdXJjZSBsaW5lIG9mIHRoZSBlcnJvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIFNvdXJjZSBjb2x1bW4gb2YgdGhlIGVycm9yLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSBQb3N0Q1NTIHBsdWdpbiBuYW1lLCBpZiBlcnJvciBjYW1lIGZyb20gcGx1Z2luLlxuICAgKi9cbiAgY29uc3RydWN0b3IgKG1lc3NhZ2UsIGxpbmUsIGNvbHVtbiwgc291cmNlLCBmaWxlLCBwbHVnaW4pIHtcbiAgICBzdXBlcihtZXNzYWdlKVxuXG4gICAgLyoqXG4gICAgICogQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZCBhbHdheXMgY2hlY2sgZXJyb3IgdHlwZVxuICAgICAqIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYFxuICAgICAqIGluc3RlYWQgb2YgYGVycm9yIGluc3RhbmNlb2YgQ3NzU3ludGF4RXJyb3JgLFxuICAgICAqIGJlY2F1c2UgbnBtIGNvdWxkIGhhdmUgc2V2ZXJhbCBQb3N0Q1NTIHZlcnNpb25zLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicpIHtcbiAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgKiB9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJ1xuICAgIC8qKlxuICAgICAqIEVycm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAqL1xuICAgIHRoaXMucmVhc29uID0gbWVzc2FnZVxuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIC8qKlxuICAgICAgICogQWJzb2x1dGUgcGF0aCB0byB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAgICAgKiBlcnJvci5pbnB1dC5maWxlIC8vPT4gJ2EuY3NzJ1xuICAgICAgICovXG4gICAgICB0aGlzLmZpbGUgPSBmaWxlXG4gICAgfVxuICAgIGlmIChzb3VyY2UpIHtcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvZGUgb2YgdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICpcbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKlxuICAgICAgICogQGV4YW1wbGVcbiAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgKi9cbiAgICAgIHRoaXMuc291cmNlID0gc291cmNlXG4gICAgfVxuICAgIGlmIChwbHVnaW4pIHtcbiAgICAgIC8qKlxuICAgICAgICogUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtdmFycydcbiAgICAgICAqL1xuICAgICAgdGhpcy5wbHVnaW4gPSBwbHVnaW5cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29sdW1uICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLyoqXG4gICAgICAgKiBTb3VyY2UgbGluZSBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IubGluZSAgICAgICAvLz0+IDJcbiAgICAgICAqIGVycm9yLmlucHV0LmxpbmUgLy89PiA0XG4gICAgICAgKi9cbiAgICAgIHRoaXMubGluZSA9IGxpbmVcbiAgICAgIC8qKlxuICAgICAgICogU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgKlxuICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAqXG4gICAgICAgKiBAZXhhbXBsZVxuICAgICAgICogZXJyb3IuY29sdW1uICAgICAgIC8vPT4gMVxuICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gNFxuICAgICAgICovXG4gICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtblxuICAgIH1cblxuICAgIHRoaXMuc2V0TWVzc2FnZSgpXG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIENzc1N5bnRheEVycm9yKVxuICAgIH1cbiAgfVxuXG4gIHNldE1lc3NhZ2UgKCkge1xuICAgIC8qKlxuICAgICAqIEZ1bGwgZXJyb3IgdGV4dCBpbiB0aGUgR05VIGVycm9yIGZvcm1hdFxuICAgICAqIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ2EuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2snXG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlID0gdGhpcy5wbHVnaW4gPyB0aGlzLnBsdWdpbiArICc6ICcgOiAnJ1xuICAgIHRoaXMubWVzc2FnZSArPSB0aGlzLmZpbGUgPyB0aGlzLmZpbGUgOiAnPGNzcyBpbnB1dD4nXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxpbmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgKz0gJzonICsgdGhpcy5saW5lICsgJzonICsgdGhpcy5jb2x1bW5cbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlICs9ICc6ICcgKyB0aGlzLnJlYXNvblxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAqXG4gICAqIElmIHRoZSBDU1MgaGFzIGFuIGlucHV0IHNvdXJjZSBtYXAgd2l0aG91dCBgc291cmNlQ29udGVudGAsXG4gICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbY29sb3JdIFdoZXRoZXIgYXJyb3cgd2lsbCBiZSBjb2xvcmVkIHJlZCBieSB0ZXJtaW5hbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIHN1cHBvcnQgYnkgYHByb2Nlc3Muc3Rkb3V0LmlzVFRZYFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBwcm9jZXNzLmVudi5OT0RFX0RJU0FCTEVfQ09MT1JTYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3Iuc2hvd1NvdXJjZUNvZGUoKSAvLz0+IFwiICA0IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgID4gNiB8ICAgYmFkXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgICBeXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgOCB8IGIge1wiXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gRmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yLlxuICAgKi9cbiAgc2hvd1NvdXJjZUNvZGUgKGNvbG9yKSB7XG4gICAgaWYgKCF0aGlzLnNvdXJjZSkgcmV0dXJuICcnXG5cbiAgICBsZXQgY3NzID0gdGhpcy5zb3VyY2VcbiAgICBpZiAodGVybWluYWxIaWdobGlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICd1bmRlZmluZWQnKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0XG4gICAgICBpZiAoY29sb3IpIGNzcyA9IHRlcm1pbmFsSGlnaGxpZ2h0KGNzcylcbiAgICB9XG5cbiAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKVxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KHRoaXMubGluZSAtIDMsIDApXG4gICAgbGV0IGVuZCA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aClcblxuICAgIGxldCBtYXhXaWR0aCA9IFN0cmluZyhlbmQpLmxlbmd0aFxuXG4gICAgZnVuY3Rpb24gbWFyayAodGV4dCkge1xuICAgICAgaWYgKGNvbG9yICYmIGNoYWxrLnJlZCkge1xuICAgICAgICByZXR1cm4gY2hhbGsucmVkLmJvbGQodGV4dClcbiAgICAgIH1cbiAgICAgIHJldHVybiB0ZXh0XG4gICAgfVxuICAgIGZ1bmN0aW9uIGFzaWRlICh0ZXh0KSB7XG4gICAgICBpZiAoY29sb3IgJiYgY2hhbGsuZ3JheSkge1xuICAgICAgICByZXR1cm4gY2hhbGsuZ3JheSh0ZXh0KVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRleHRcbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXMuc2xpY2Uoc3RhcnQsIGVuZCkubWFwKChsaW5lLCBpbmRleCkgPT4ge1xuICAgICAgbGV0IG51bWJlciA9IHN0YXJ0ICsgMSArIGluZGV4XG4gICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnXG4gICAgICBpZiAobnVtYmVyID09PSB0aGlzLmxpbmUpIHtcbiAgICAgICAgbGV0IHNwYWNpbmcgPSBhc2lkZShndXR0ZXIucmVwbGFjZSgvXFxkL2csICcgJykpICtcbiAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJylcbiAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICsgc3BhY2luZyArIG1hcmsoJ14nKVxuICAgICAgfVxuICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lXG4gICAgfSkuam9pbignXFxuJylcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICA+IDEgfCBhIHtcbiAgICogICAgICAgICAgICAgICAgICAvLyAgICAgICAgfCBeXCJcbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nfSBFcnJvciBwb3NpdGlvbiwgbWVzc2FnZSBhbmQgc291cmNlIGNvZGUuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgbGV0IGNvZGUgPSB0aGlzLnNob3dTb3VyY2VDb2RlKClcbiAgICBpZiAoY29kZSkge1xuICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBDc3NTeW50YXhFcnJvciNcbiAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IElucHV0IG9iamVjdCB3aXRoIFBvc3RDU1MgaW50ZXJuYWwgaW5mb3JtYXRpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHByZXZpb3VzIHRvb2wsIFBvc3RDU1Mgd2lsbCB1c2Ugb3JpZ2luXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAoZm9yIGV4YW1wbGUsIFNhc3MpIHNvdXJjZS4gWW91IGNhbiB1c2UgdGhpc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICogZXJyb3IuZmlsZSAgICAgICAvLz0+ICdhLnNhc3MnXG4gICAqL1xufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvclxuIl0sImZpbGUiOiJjc3Mtc3ludGF4LWVycm9yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar DEFAULT_RAW = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' ',\n semicolon: false\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier =\n/*#__PURE__*/\nfunction () {\n function Stringifier(builder) {\n this.builder = builder;\n }\n\n var _proto = Stringifier.prototype;\n\n _proto.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n _proto.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n _proto.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n _proto.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n _proto.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n _proto.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n _proto.body = function body(node) {\n var last = node.nodes.length - 1;\n\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n _proto.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n var after;\n\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n _proto.raw = function raw(node, own, detect) {\n var value;\n if (!detect) detect = own; // Already had\n\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent; // Hack for first rule in CSS\n\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n } // Floating child without parent\n\n\n if (!parent) return DEFAULT_RAW[detect]; // Detect style by other nodes\n\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect];\n root.rawCache[detect] = value;\n return value;\n };\n\n _proto.rawSemicolon = function rawSemicolon(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawEmptyBody = function rawEmptyBody(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value;\n root.walk(function (i) {\n var p = i.parent;\n\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n _proto.rawBeforeComment = function rawBeforeComment(root, node) {\n var value;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n\n return value;\n };\n\n _proto.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n });\n\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n\n return value;\n };\n\n _proto.rawBeforeRule = function rawBeforeRule(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n _proto.rawBeforeClose = function rawBeforeClose(root) {\n var value;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n _proto.rawBeforeOpen = function rawBeforeOpen(root) {\n var value;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n _proto.rawColon = function rawColon(root) {\n var value;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n _proto.beforeAfter = function beforeAfter(node, detect) {\n var value;\n\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n _proto.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n\n if (raw && raw.value === value) {\n return raw.raw;\n }\n\n return value;\n };\n\n return Stringifier;\n}();\n\nvar _default = Stringifier;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJERUZBVUxUX1JBVyIsImNvbG9uIiwiaW5kZW50IiwiYmVmb3JlRGVjbCIsImJlZm9yZVJ1bGUiLCJiZWZvcmVPcGVuIiwiYmVmb3JlQ2xvc2UiLCJiZWZvcmVDb21tZW50IiwiYWZ0ZXIiLCJlbXB0eUJvZHkiLCJjb21tZW50TGVmdCIsImNvbW1lbnRSaWdodCIsInNlbWljb2xvbiIsImNhcGl0YWxpemUiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiU3RyaW5naWZpZXIiLCJidWlsZGVyIiwic3RyaW5naWZ5Iiwibm9kZSIsInR5cGUiLCJyb290IiwiYm9keSIsInJhd3MiLCJjb21tZW50IiwibGVmdCIsInJhdyIsInJpZ2h0IiwidGV4dCIsImRlY2wiLCJiZXR3ZWVuIiwic3RyaW5nIiwicHJvcCIsInJhd1ZhbHVlIiwiaW1wb3J0YW50IiwicnVsZSIsImJsb2NrIiwib3duU2VtaWNvbG9uIiwiYXRydWxlIiwibmFtZSIsInBhcmFtcyIsImFmdGVyTmFtZSIsIm5vZGVzIiwiZW5kIiwibGFzdCIsImxlbmd0aCIsImkiLCJjaGlsZCIsImJlZm9yZSIsInN0YXJ0Iiwib3duIiwiZGV0ZWN0IiwidmFsdWUiLCJwYXJlbnQiLCJmaXJzdCIsInJhd0NhY2hlIiwiYmVmb3JlQWZ0ZXIiLCJtZXRob2QiLCJ3YWxrIiwicmF3U2VtaWNvbG9uIiwicmF3RW1wdHlCb2R5IiwicmF3SW5kZW50IiwicCIsInBhcnRzIiwic3BsaXQiLCJyZXBsYWNlIiwicmF3QmVmb3JlQ29tbWVudCIsIndhbGtDb21tZW50cyIsImluZGV4T2YiLCJyYXdCZWZvcmVEZWNsIiwid2Fsa0RlY2xzIiwicmF3QmVmb3JlUnVsZSIsInJhd0JlZm9yZUNsb3NlIiwicmF3QmVmb3JlT3BlbiIsInJhd0NvbG9uIiwiYnVmIiwiZGVwdGgiLCJzdGVwIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBTUEsV0FBVyxHQUFHO0FBQ2xCQyxFQUFBQSxLQUFLLEVBQUUsSUFEVztBQUVsQkMsRUFBQUEsTUFBTSxFQUFFLE1BRlU7QUFHbEJDLEVBQUFBLFVBQVUsRUFBRSxJQUhNO0FBSWxCQyxFQUFBQSxVQUFVLEVBQUUsSUFKTTtBQUtsQkMsRUFBQUEsVUFBVSxFQUFFLEdBTE07QUFNbEJDLEVBQUFBLFdBQVcsRUFBRSxJQU5LO0FBT2xCQyxFQUFBQSxhQUFhLEVBQUUsSUFQRztBQVFsQkMsRUFBQUEsS0FBSyxFQUFFLElBUlc7QUFTbEJDLEVBQUFBLFNBQVMsRUFBRSxFQVRPO0FBVWxCQyxFQUFBQSxXQUFXLEVBQUUsR0FWSztBQVdsQkMsRUFBQUEsWUFBWSxFQUFFLEdBWEk7QUFZbEJDLEVBQUFBLFNBQVMsRUFBRTtBQVpPLENBQXBCOztBQWVBLFNBQVNDLFVBQVQsQ0FBcUJDLEdBQXJCLEVBQTBCO0FBQ3hCLFNBQU9BLEdBQUcsQ0FBQyxDQUFELENBQUgsQ0FBT0MsV0FBUCxLQUF1QkQsR0FBRyxDQUFDRSxLQUFKLENBQVUsQ0FBVixDQUE5QjtBQUNEOztJQUVLQyxXOzs7QUFDSix1QkFBYUMsT0FBYixFQUFzQjtBQUNwQixTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDRDs7OztTQUVEQyxTLEdBQUEsbUJBQVdDLElBQVgsRUFBaUJSLFNBQWpCLEVBQTRCO0FBQzFCLFNBQUtRLElBQUksQ0FBQ0MsSUFBVixFQUFnQkQsSUFBaEIsRUFBc0JSLFNBQXRCO0FBQ0QsRzs7U0FFRFUsSSxHQUFBLGNBQU1GLElBQU4sRUFBWTtBQUNWLFNBQUtHLElBQUwsQ0FBVUgsSUFBVjtBQUNBLFFBQUlBLElBQUksQ0FBQ0ksSUFBTCxDQUFVaEIsS0FBZCxFQUFxQixLQUFLVSxPQUFMLENBQWFFLElBQUksQ0FBQ0ksSUFBTCxDQUFVaEIsS0FBdkI7QUFDdEIsRzs7U0FFRGlCLE8sR0FBQSxpQkFBU0wsSUFBVCxFQUFlO0FBQ2IsUUFBSU0sSUFBSSxHQUFHLEtBQUtDLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLE1BQWYsRUFBdUIsYUFBdkIsQ0FBWDtBQUNBLFFBQUlRLEtBQUssR0FBRyxLQUFLRCxHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLENBQVo7QUFDQSxTQUFLRixPQUFMLENBQWEsT0FBT1EsSUFBUCxHQUFjTixJQUFJLENBQUNTLElBQW5CLEdBQTBCRCxLQUExQixHQUFrQyxJQUEvQyxFQUFxRFIsSUFBckQ7QUFDRCxHOztTQUVEVSxJLEdBQUEsY0FBTVYsSUFBTixFQUFZUixTQUFaLEVBQXVCO0FBQ3JCLFFBQUltQixPQUFPLEdBQUcsS0FBS0osR0FBTCxDQUFTUCxJQUFULEVBQWUsU0FBZixFQUEwQixPQUExQixDQUFkO0FBQ0EsUUFBSVksTUFBTSxHQUFHWixJQUFJLENBQUNhLElBQUwsR0FBWUYsT0FBWixHQUFzQixLQUFLRyxRQUFMLENBQWNkLElBQWQsRUFBb0IsT0FBcEIsQ0FBbkM7O0FBRUEsUUFBSUEsSUFBSSxDQUFDZSxTQUFULEVBQW9CO0FBQ2xCSCxNQUFBQSxNQUFNLElBQUlaLElBQUksQ0FBQ0ksSUFBTCxDQUFVVyxTQUFWLElBQXVCLGFBQWpDO0FBQ0Q7O0FBRUQsUUFBSXZCLFNBQUosRUFBZW9CLE1BQU0sSUFBSSxHQUFWO0FBQ2YsU0FBS2QsT0FBTCxDQUFhYyxNQUFiLEVBQXFCWixJQUFyQjtBQUNELEc7O1NBRURnQixJLEdBQUEsY0FBTWhCLElBQU4sRUFBWTtBQUNWLFNBQUtpQixLQUFMLENBQVdqQixJQUFYLEVBQWlCLEtBQUtjLFFBQUwsQ0FBY2QsSUFBZCxFQUFvQixVQUFwQixDQUFqQjs7QUFDQSxRQUFJQSxJQUFJLENBQUNJLElBQUwsQ0FBVWMsWUFBZCxFQUE0QjtBQUMxQixXQUFLcEIsT0FBTCxDQUFhRSxJQUFJLENBQUNJLElBQUwsQ0FBVWMsWUFBdkIsRUFBcUNsQixJQUFyQyxFQUEyQyxLQUEzQztBQUNEO0FBQ0YsRzs7U0FFRG1CLE0sR0FBQSxnQkFBUW5CLElBQVIsRUFBY1IsU0FBZCxFQUF5QjtBQUN2QixRQUFJNEIsSUFBSSxHQUFHLE1BQU1wQixJQUFJLENBQUNvQixJQUF0QjtBQUNBLFFBQUlDLE1BQU0sR0FBR3JCLElBQUksQ0FBQ3FCLE1BQUwsR0FBYyxLQUFLUCxRQUFMLENBQWNkLElBQWQsRUFBb0IsUUFBcEIsQ0FBZCxHQUE4QyxFQUEzRDs7QUFFQSxRQUFJLE9BQU9BLElBQUksQ0FBQ0ksSUFBTCxDQUFVa0IsU0FBakIsS0FBK0IsV0FBbkMsRUFBZ0Q7QUFDOUNGLE1BQUFBLElBQUksSUFBSXBCLElBQUksQ0FBQ0ksSUFBTCxDQUFVa0IsU0FBbEI7QUFDRCxLQUZELE1BRU8sSUFBSUQsTUFBSixFQUFZO0FBQ2pCRCxNQUFBQSxJQUFJLElBQUksR0FBUjtBQUNEOztBQUVELFFBQUlwQixJQUFJLENBQUN1QixLQUFULEVBQWdCO0FBQ2QsV0FBS04sS0FBTCxDQUFXakIsSUFBWCxFQUFpQm9CLElBQUksR0FBR0MsTUFBeEI7QUFDRCxLQUZELE1BRU87QUFDTCxVQUFJRyxHQUFHLEdBQUcsQ0FBQ3hCLElBQUksQ0FBQ0ksSUFBTCxDQUFVTyxPQUFWLElBQXFCLEVBQXRCLEtBQTZCbkIsU0FBUyxHQUFHLEdBQUgsR0FBUyxFQUEvQyxDQUFWO0FBQ0EsV0FBS00sT0FBTCxDQUFhc0IsSUFBSSxHQUFHQyxNQUFQLEdBQWdCRyxHQUE3QixFQUFrQ3hCLElBQWxDO0FBQ0Q7QUFDRixHOztTQUVERyxJLEdBQUEsY0FBTUgsSUFBTixFQUFZO0FBQ1YsUUFBSXlCLElBQUksR0FBR3pCLElBQUksQ0FBQ3VCLEtBQUwsQ0FBV0csTUFBWCxHQUFvQixDQUEvQjs7QUFDQSxXQUFPRCxJQUFJLEdBQUcsQ0FBZCxFQUFpQjtBQUNmLFVBQUl6QixJQUFJLENBQUN1QixLQUFMLENBQVdFLElBQVgsRUFBaUJ4QixJQUFqQixLQUEwQixTQUE5QixFQUF5QztBQUN6Q3dCLE1BQUFBLElBQUksSUFBSSxDQUFSO0FBQ0Q7O0FBRUQsUUFBSWpDLFNBQVMsR0FBRyxLQUFLZSxHQUFMLENBQVNQLElBQVQsRUFBZSxXQUFmLENBQWhCOztBQUNBLFNBQUssSUFBSTJCLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUczQixJQUFJLENBQUN1QixLQUFMLENBQVdHLE1BQS9CLEVBQXVDQyxDQUFDLEVBQXhDLEVBQTRDO0FBQzFDLFVBQUlDLEtBQUssR0FBRzVCLElBQUksQ0FBQ3VCLEtBQUwsQ0FBV0ksQ0FBWCxDQUFaO0FBQ0EsVUFBSUUsTUFBTSxHQUFHLEtBQUt0QixHQUFMLENBQVNxQixLQUFULEVBQWdCLFFBQWhCLENBQWI7QUFDQSxVQUFJQyxNQUFKLEVBQVksS0FBSy9CLE9BQUwsQ0FBYStCLE1BQWI7QUFDWixXQUFLOUIsU0FBTCxDQUFlNkIsS0FBZixFQUFzQkgsSUFBSSxLQUFLRSxDQUFULElBQWNuQyxTQUFwQztBQUNEO0FBQ0YsRzs7U0FFRHlCLEssR0FBQSxlQUFPakIsSUFBUCxFQUFhOEIsS0FBYixFQUFvQjtBQUNsQixRQUFJbkIsT0FBTyxHQUFHLEtBQUtKLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLFNBQWYsRUFBMEIsWUFBMUIsQ0FBZDtBQUNBLFNBQUtGLE9BQUwsQ0FBYWdDLEtBQUssR0FBR25CLE9BQVIsR0FBa0IsR0FBL0IsRUFBb0NYLElBQXBDLEVBQTBDLE9BQTFDO0FBRUEsUUFBSVosS0FBSjs7QUFDQSxRQUFJWSxJQUFJLENBQUN1QixLQUFMLElBQWN2QixJQUFJLENBQUN1QixLQUFMLENBQVdHLE1BQTdCLEVBQXFDO0FBQ25DLFdBQUt2QixJQUFMLENBQVVILElBQVY7QUFDQVosTUFBQUEsS0FBSyxHQUFHLEtBQUttQixHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLENBQVI7QUFDRCxLQUhELE1BR087QUFDTFosTUFBQUEsS0FBSyxHQUFHLEtBQUttQixHQUFMLENBQVNQLElBQVQsRUFBZSxPQUFmLEVBQXdCLFdBQXhCLENBQVI7QUFDRDs7QUFFRCxRQUFJWixLQUFKLEVBQVcsS0FBS1UsT0FBTCxDQUFhVixLQUFiO0FBQ1gsU0FBS1UsT0FBTCxDQUFhLEdBQWIsRUFBa0JFLElBQWxCLEVBQXdCLEtBQXhCO0FBQ0QsRzs7U0FFRE8sRyxHQUFBLGFBQUtQLElBQUwsRUFBVytCLEdBQVgsRUFBZ0JDLE1BQWhCLEVBQXdCO0FBQ3RCLFFBQUlDLEtBQUo7QUFDQSxRQUFJLENBQUNELE1BQUwsRUFBYUEsTUFBTSxHQUFHRCxHQUFULENBRlMsQ0FJdEI7O0FBQ0EsUUFBSUEsR0FBSixFQUFTO0FBQ1BFLE1BQUFBLEtBQUssR0FBR2pDLElBQUksQ0FBQ0ksSUFBTCxDQUFVMkIsR0FBVixDQUFSO0FBQ0EsVUFBSSxPQUFPRSxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDLE9BQU9BLEtBQVA7QUFDbkM7O0FBRUQsUUFBSUMsTUFBTSxHQUFHbEMsSUFBSSxDQUFDa0MsTUFBbEIsQ0FWc0IsQ0FZdEI7O0FBQ0EsUUFBSUYsTUFBTSxLQUFLLFFBQWYsRUFBeUI7QUFDdkIsVUFBSSxDQUFDRSxNQUFELElBQVlBLE1BQU0sQ0FBQ2pDLElBQVAsS0FBZ0IsTUFBaEIsSUFBMEJpQyxNQUFNLENBQUNDLEtBQVAsS0FBaUJuQyxJQUEzRCxFQUFrRTtBQUNoRSxlQUFPLEVBQVA7QUFDRDtBQUNGLEtBakJxQixDQW1CdEI7OztBQUNBLFFBQUksQ0FBQ2tDLE1BQUwsRUFBYSxPQUFPdEQsV0FBVyxDQUFDb0QsTUFBRCxDQUFsQixDQXBCUyxDQXNCdEI7O0FBQ0EsUUFBSTlCLElBQUksR0FBR0YsSUFBSSxDQUFDRSxJQUFMLEVBQVg7QUFDQSxRQUFJLENBQUNBLElBQUksQ0FBQ2tDLFFBQVYsRUFBb0JsQyxJQUFJLENBQUNrQyxRQUFMLEdBQWdCLEVBQWhCOztBQUNwQixRQUFJLE9BQU9sQyxJQUFJLENBQUNrQyxRQUFMLENBQWNKLE1BQWQsQ0FBUCxLQUFpQyxXQUFyQyxFQUFrRDtBQUNoRCxhQUFPOUIsSUFBSSxDQUFDa0MsUUFBTCxDQUFjSixNQUFkLENBQVA7QUFDRDs7QUFFRCxRQUFJQSxNQUFNLEtBQUssUUFBWCxJQUF1QkEsTUFBTSxLQUFLLE9BQXRDLEVBQStDO0FBQzdDLGFBQU8sS0FBS0ssV0FBTCxDQUFpQnJDLElBQWpCLEVBQXVCZ0MsTUFBdkIsQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLFVBQUlNLE1BQU0sR0FBRyxRQUFRN0MsVUFBVSxDQUFDdUMsTUFBRCxDQUEvQjs7QUFDQSxVQUFJLEtBQUtNLE1BQUwsQ0FBSixFQUFrQjtBQUNoQkwsUUFBQUEsS0FBSyxHQUFHLEtBQUtLLE1BQUwsRUFBYXBDLElBQWIsRUFBbUJGLElBQW5CLENBQVI7QUFDRCxPQUZELE1BRU87QUFDTEUsUUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiTSxVQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBTzJCLEdBQVAsQ0FBUjtBQUNBLGNBQUksT0FBT0UsS0FBUCxLQUFpQixXQUFyQixFQUFrQyxPQUFPLEtBQVA7QUFDbkMsU0FIRDtBQUlEO0FBQ0Y7O0FBRUQsUUFBSSxPQUFPQSxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDQSxLQUFLLEdBQUdyRCxXQUFXLENBQUNvRCxNQUFELENBQW5CO0FBRWxDOUIsSUFBQUEsSUFBSSxDQUFDa0MsUUFBTCxDQUFjSixNQUFkLElBQXdCQyxLQUF4QjtBQUNBLFdBQU9BLEtBQVA7QUFDRCxHOztTQUVETyxZLEdBQUEsc0JBQWN0QyxJQUFkLEVBQW9CO0FBQ2xCLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNxQyxJQUFMLENBQVUsVUFBQVosQ0FBQyxFQUFJO0FBQ2IsVUFBSUEsQ0FBQyxDQUFDSixLQUFGLElBQVdJLENBQUMsQ0FBQ0osS0FBRixDQUFRRyxNQUFuQixJQUE2QkMsQ0FBQyxDQUFDRixJQUFGLENBQU94QixJQUFQLEtBQWdCLE1BQWpELEVBQXlEO0FBQ3ZEZ0MsUUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9aLFNBQWY7QUFDQSxZQUFJLE9BQU95QyxLQUFQLEtBQWlCLFdBQXJCLEVBQWtDLE9BQU8sS0FBUDtBQUNuQztBQUNGLEtBTEQ7QUFNQSxXQUFPQSxLQUFQO0FBQ0QsRzs7U0FFRFEsWSxHQUFBLHNCQUFjdkMsSUFBZCxFQUFvQjtBQUNsQixRQUFJK0IsS0FBSjtBQUNBL0IsSUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiLFVBQUlBLENBQUMsQ0FBQ0osS0FBRixJQUFXSSxDQUFDLENBQUNKLEtBQUYsQ0FBUUcsTUFBUixLQUFtQixDQUFsQyxFQUFxQztBQUNuQ08sUUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFmO0FBQ0EsWUFBSSxPQUFPNkMsS0FBUCxLQUFpQixXQUFyQixFQUFrQyxPQUFPLEtBQVA7QUFDbkM7QUFDRixLQUxEO0FBTUEsV0FBT0EsS0FBUDtBQUNELEc7O1NBRURTLFMsR0FBQSxtQkFBV3hDLElBQVgsRUFBaUI7QUFDZixRQUFJQSxJQUFJLENBQUNFLElBQUwsQ0FBVXRCLE1BQWQsRUFBc0IsT0FBT29CLElBQUksQ0FBQ0UsSUFBTCxDQUFVdEIsTUFBakI7QUFDdEIsUUFBSW1ELEtBQUo7QUFDQS9CLElBQUFBLElBQUksQ0FBQ3FDLElBQUwsQ0FBVSxVQUFBWixDQUFDLEVBQUk7QUFDYixVQUFJZ0IsQ0FBQyxHQUFHaEIsQ0FBQyxDQUFDTyxNQUFWOztBQUNBLFVBQUlTLENBQUMsSUFBSUEsQ0FBQyxLQUFLekMsSUFBWCxJQUFtQnlDLENBQUMsQ0FBQ1QsTUFBckIsSUFBK0JTLENBQUMsQ0FBQ1QsTUFBRixLQUFhaEMsSUFBaEQsRUFBc0Q7QUFDcEQsWUFBSSxPQUFPeUIsQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZCxLQUF5QixXQUE3QixFQUEwQztBQUN4QyxjQUFJZSxLQUFLLEdBQUdqQixDQUFDLENBQUN2QixJQUFGLENBQU95QixNQUFQLENBQWNnQixLQUFkLENBQW9CLElBQXBCLENBQVo7QUFDQVosVUFBQUEsS0FBSyxHQUFHVyxLQUFLLENBQUNBLEtBQUssQ0FBQ2xCLE1BQU4sR0FBZSxDQUFoQixDQUFiO0FBQ0FPLFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ0EsaUJBQU8sS0FBUDtBQUNEO0FBQ0Y7QUFDRixLQVZEO0FBV0EsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURjLGdCLEdBQUEsMEJBQWtCN0MsSUFBbEIsRUFBd0JGLElBQXhCLEVBQThCO0FBQzVCLFFBQUlpQyxLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUM4QyxZQUFMLENBQWtCLFVBQUFyQixDQUFDLEVBQUk7QUFDckIsVUFBSSxPQUFPQSxDQUFDLENBQUN2QixJQUFGLENBQU95QixNQUFkLEtBQXlCLFdBQTdCLEVBQTBDO0FBQ3hDSSxRQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWY7O0FBQ0EsWUFBSUksS0FBSyxDQUFDZ0IsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBQyxDQUE3QixFQUFnQztBQUM5QmhCLFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsU0FBZCxFQUF5QixFQUF6QixDQUFSO0FBQ0Q7O0FBQ0QsZUFBTyxLQUFQO0FBQ0Q7QUFDRixLQVJEOztBQVNBLFFBQUksT0FBT2IsS0FBUCxLQUFpQixXQUFyQixFQUFrQztBQUNoQ0EsTUFBQUEsS0FBSyxHQUFHLEtBQUsxQixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFlBQXJCLENBQVI7QUFDRCxLQUZELE1BRU8sSUFBSWlDLEtBQUosRUFBVztBQUNoQkEsTUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxRQUFkLEVBQXdCLEVBQXhCLENBQVI7QUFDRDs7QUFDRCxXQUFPYixLQUFQO0FBQ0QsRzs7U0FFRGlCLGEsR0FBQSx1QkFBZWhELElBQWYsRUFBcUJGLElBQXJCLEVBQTJCO0FBQ3pCLFFBQUlpQyxLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNpRCxTQUFMLENBQWUsVUFBQXhCLENBQUMsRUFBSTtBQUNsQixVQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeENJLFFBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZjs7QUFDQSxZQUFJSSxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsVUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxlQUFPLEtBQVA7QUFDRDtBQUNGLEtBUkQ7O0FBU0EsUUFBSSxPQUFPYixLQUFQLEtBQWlCLFdBQXJCLEVBQWtDO0FBQ2hDQSxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsWUFBckIsQ0FBUjtBQUNELEtBRkQsTUFFTyxJQUFJaUMsS0FBSixFQUFXO0FBQ2hCQSxNQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ2EsT0FBTixDQUFjLFFBQWQsRUFBd0IsRUFBeEIsQ0FBUjtBQUNEOztBQUNELFdBQU9iLEtBQVA7QUFDRCxHOztTQUVEbUIsYSxHQUFBLHVCQUFlbEQsSUFBZixFQUFxQjtBQUNuQixRQUFJK0IsS0FBSjtBQUNBL0IsSUFBQUEsSUFBSSxDQUFDcUMsSUFBTCxDQUFVLFVBQUFaLENBQUMsRUFBSTtBQUNiLFVBQUlBLENBQUMsQ0FBQ0osS0FBRixLQUFZSSxDQUFDLENBQUNPLE1BQUYsS0FBYWhDLElBQWIsSUFBcUJBLElBQUksQ0FBQ2lDLEtBQUwsS0FBZVIsQ0FBaEQsQ0FBSixFQUF3RDtBQUN0RCxZQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT3lCLE1BQWQsS0FBeUIsV0FBN0IsRUFBMEM7QUFDeENJLFVBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPeUIsTUFBZjs7QUFDQSxjQUFJSSxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsWUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxpQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEtBVkQ7QUFXQSxRQUFJYixLQUFKLEVBQVdBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ1gsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURvQixjLEdBQUEsd0JBQWdCbkQsSUFBaEIsRUFBc0I7QUFDcEIsUUFBSStCLEtBQUo7QUFDQS9CLElBQUFBLElBQUksQ0FBQ3FDLElBQUwsQ0FBVSxVQUFBWixDQUFDLEVBQUk7QUFDYixVQUFJQSxDQUFDLENBQUNKLEtBQUYsSUFBV0ksQ0FBQyxDQUFDSixLQUFGLENBQVFHLE1BQVIsR0FBaUIsQ0FBaEMsRUFBbUM7QUFDakMsWUFBSSxPQUFPQyxDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFkLEtBQXdCLFdBQTVCLEVBQXlDO0FBQ3ZDNkMsVUFBQUEsS0FBSyxHQUFHTixDQUFDLENBQUN2QixJQUFGLENBQU9oQixLQUFmOztBQUNBLGNBQUk2QyxLQUFLLENBQUNnQixPQUFOLENBQWMsSUFBZCxNQUF3QixDQUFDLENBQTdCLEVBQWdDO0FBQzlCaEIsWUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNhLE9BQU4sQ0FBYyxTQUFkLEVBQXlCLEVBQXpCLENBQVI7QUFDRDs7QUFDRCxpQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNGLEtBVkQ7QUFXQSxRQUFJYixLQUFKLEVBQVdBLEtBQUssR0FBR0EsS0FBSyxDQUFDYSxPQUFOLENBQWMsUUFBZCxFQUF3QixFQUF4QixDQUFSO0FBQ1gsV0FBT2IsS0FBUDtBQUNELEc7O1NBRURxQixhLEdBQUEsdUJBQWVwRCxJQUFmLEVBQXFCO0FBQ25CLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNxQyxJQUFMLENBQVUsVUFBQVosQ0FBQyxFQUFJO0FBQ2IsVUFBSUEsQ0FBQyxDQUFDMUIsSUFBRixLQUFXLE1BQWYsRUFBdUI7QUFDckJnQyxRQUFBQSxLQUFLLEdBQUdOLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT08sT0FBZjtBQUNBLFlBQUksT0FBT3NCLEtBQVAsS0FBaUIsV0FBckIsRUFBa0MsT0FBTyxLQUFQO0FBQ25DO0FBQ0YsS0FMRDtBQU1BLFdBQU9BLEtBQVA7QUFDRCxHOztTQUVEc0IsUSxHQUFBLGtCQUFVckQsSUFBVixFQUFnQjtBQUNkLFFBQUkrQixLQUFKO0FBQ0EvQixJQUFBQSxJQUFJLENBQUNpRCxTQUFMLENBQWUsVUFBQXhCLENBQUMsRUFBSTtBQUNsQixVQUFJLE9BQU9BLENBQUMsQ0FBQ3ZCLElBQUYsQ0FBT08sT0FBZCxLQUEwQixXQUE5QixFQUEyQztBQUN6Q3NCLFFBQUFBLEtBQUssR0FBR04sQ0FBQyxDQUFDdkIsSUFBRixDQUFPTyxPQUFQLENBQWVtQyxPQUFmLENBQXVCLFNBQXZCLEVBQWtDLEVBQWxDLENBQVI7QUFDQSxlQUFPLEtBQVA7QUFDRDtBQUNGLEtBTEQ7QUFNQSxXQUFPYixLQUFQO0FBQ0QsRzs7U0FFREksVyxHQUFBLHFCQUFhckMsSUFBYixFQUFtQmdDLE1BQW5CLEVBQTJCO0FBQ3pCLFFBQUlDLEtBQUo7O0FBQ0EsUUFBSWpDLElBQUksQ0FBQ0MsSUFBTCxLQUFjLE1BQWxCLEVBQTBCO0FBQ3hCZ0MsTUFBQUEsS0FBSyxHQUFHLEtBQUsxQixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFlBQXJCLENBQVI7QUFDRCxLQUZELE1BRU8sSUFBSUEsSUFBSSxDQUFDQyxJQUFMLEtBQWMsU0FBbEIsRUFBNkI7QUFDbENnQyxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsZUFBckIsQ0FBUjtBQUNELEtBRk0sTUFFQSxJQUFJZ0MsTUFBTSxLQUFLLFFBQWYsRUFBeUI7QUFDOUJDLE1BQUFBLEtBQUssR0FBRyxLQUFLMUIsR0FBTCxDQUFTUCxJQUFULEVBQWUsSUFBZixFQUFxQixZQUFyQixDQUFSO0FBQ0QsS0FGTSxNQUVBO0FBQ0xpQyxNQUFBQSxLQUFLLEdBQUcsS0FBSzFCLEdBQUwsQ0FBU1AsSUFBVCxFQUFlLElBQWYsRUFBcUIsYUFBckIsQ0FBUjtBQUNEOztBQUVELFFBQUl3RCxHQUFHLEdBQUd4RCxJQUFJLENBQUNrQyxNQUFmO0FBQ0EsUUFBSXVCLEtBQUssR0FBRyxDQUFaOztBQUNBLFdBQU9ELEdBQUcsSUFBSUEsR0FBRyxDQUFDdkQsSUFBSixLQUFhLE1BQTNCLEVBQW1DO0FBQ2pDd0QsTUFBQUEsS0FBSyxJQUFJLENBQVQ7QUFDQUQsTUFBQUEsR0FBRyxHQUFHQSxHQUFHLENBQUN0QixNQUFWO0FBQ0Q7O0FBRUQsUUFBSUQsS0FBSyxDQUFDZ0IsT0FBTixDQUFjLElBQWQsTUFBd0IsQ0FBQyxDQUE3QixFQUFnQztBQUM5QixVQUFJbkUsTUFBTSxHQUFHLEtBQUt5QixHQUFMLENBQVNQLElBQVQsRUFBZSxJQUFmLEVBQXFCLFFBQXJCLENBQWI7O0FBQ0EsVUFBSWxCLE1BQU0sQ0FBQzRDLE1BQVgsRUFBbUI7QUFDakIsYUFBSyxJQUFJZ0MsSUFBSSxHQUFHLENBQWhCLEVBQW1CQSxJQUFJLEdBQUdELEtBQTFCLEVBQWlDQyxJQUFJLEVBQXJDO0FBQXlDekIsVUFBQUEsS0FBSyxJQUFJbkQsTUFBVDtBQUF6QztBQUNEO0FBQ0Y7O0FBRUQsV0FBT21ELEtBQVA7QUFDRCxHOztTQUVEbkIsUSxHQUFBLGtCQUFVZCxJQUFWLEVBQWdCYSxJQUFoQixFQUFzQjtBQUNwQixRQUFJb0IsS0FBSyxHQUFHakMsSUFBSSxDQUFDYSxJQUFELENBQWhCO0FBQ0EsUUFBSU4sR0FBRyxHQUFHUCxJQUFJLENBQUNJLElBQUwsQ0FBVVMsSUFBVixDQUFWOztBQUNBLFFBQUlOLEdBQUcsSUFBSUEsR0FBRyxDQUFDMEIsS0FBSixLQUFjQSxLQUF6QixFQUFnQztBQUM5QixhQUFPMUIsR0FBRyxDQUFDQSxHQUFYO0FBQ0Q7O0FBRUQsV0FBTzBCLEtBQVA7QUFDRCxHOzs7OztlQUdZcEMsVyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IERFRkFVTFRfUkFXID0ge1xuICBjb2xvbjogJzogJyxcbiAgaW5kZW50OiAnICAgICcsXG4gIGJlZm9yZURlY2w6ICdcXG4nLFxuICBiZWZvcmVSdWxlOiAnXFxuJyxcbiAgYmVmb3JlT3BlbjogJyAnLFxuICBiZWZvcmVDbG9zZTogJ1xcbicsXG4gIGJlZm9yZUNvbW1lbnQ6ICdcXG4nLFxuICBhZnRlcjogJ1xcbicsXG4gIGVtcHR5Qm9keTogJycsXG4gIGNvbW1lbnRMZWZ0OiAnICcsXG4gIGNvbW1lbnRSaWdodDogJyAnLFxuICBzZW1pY29sb246IGZhbHNlXG59XG5cbmZ1bmN0aW9uIGNhcGl0YWxpemUgKHN0cikge1xuICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn1cblxuY2xhc3MgU3RyaW5naWZpZXIge1xuICBjb25zdHJ1Y3RvciAoYnVpbGRlcikge1xuICAgIHRoaXMuYnVpbGRlciA9IGJ1aWxkZXJcbiAgfVxuXG4gIHN0cmluZ2lmeSAobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgdGhpc1tub2RlLnR5cGVdKG5vZGUsIHNlbWljb2xvbilcbiAgfVxuXG4gIHJvb3QgKG5vZGUpIHtcbiAgICB0aGlzLmJvZHkobm9kZSlcbiAgICBpZiAobm9kZS5yYXdzLmFmdGVyKSB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLmFmdGVyKVxuICB9XG5cbiAgY29tbWVudCAobm9kZSkge1xuICAgIGxldCBsZWZ0ID0gdGhpcy5yYXcobm9kZSwgJ2xlZnQnLCAnY29tbWVudExlZnQnKVxuICAgIGxldCByaWdodCA9IHRoaXMucmF3KG5vZGUsICdyaWdodCcsICdjb21tZW50UmlnaHQnKVxuICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSlcbiAgfVxuXG4gIGRlY2wgKG5vZGUsIHNlbWljb2xvbikge1xuICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnY29sb24nKVxuICAgIGxldCBzdHJpbmcgPSBub2RlLnByb3AgKyBiZXR3ZWVuICsgdGhpcy5yYXdWYWx1ZShub2RlLCAndmFsdWUnKVxuXG4gICAgaWYgKG5vZGUuaW1wb3J0YW50KSB7XG4gICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnXG4gICAgfVxuXG4gICAgaWYgKHNlbWljb2xvbikgc3RyaW5nICs9ICc7J1xuICAgIHRoaXMuYnVpbGRlcihzdHJpbmcsIG5vZGUpXG4gIH1cblxuICBydWxlIChub2RlKSB7XG4gICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKVxuICAgIGlmIChub2RlLnJhd3Mub3duU2VtaWNvbG9uKSB7XG4gICAgICB0aGlzLmJ1aWxkZXIobm9kZS5yYXdzLm93blNlbWljb2xvbiwgbm9kZSwgJ2VuZCcpXG4gICAgfVxuICB9XG5cbiAgYXRydWxlIChub2RlLCBzZW1pY29sb24pIHtcbiAgICBsZXQgbmFtZSA9ICdAJyArIG5vZGUubmFtZVxuICAgIGxldCBwYXJhbXMgPSBub2RlLnBhcmFtcyA/IHRoaXMucmF3VmFsdWUobm9kZSwgJ3BhcmFtcycpIDogJydcblxuICAgIGlmICh0eXBlb2Ygbm9kZS5yYXdzLmFmdGVyTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZVxuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBuYW1lICs9ICcgJ1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbmQgPSAobm9kZS5yYXdzLmJldHdlZW4gfHwgJycpICsgKHNlbWljb2xvbiA/ICc7JyA6ICcnKVxuICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpXG4gICAgfVxuICB9XG5cbiAgYm9keSAobm9kZSkge1xuICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxXG4gICAgd2hpbGUgKGxhc3QgPiAwKSB7XG4gICAgICBpZiAobm9kZS5ub2Rlc1tsYXN0XS50eXBlICE9PSAnY29tbWVudCcpIGJyZWFrXG4gICAgICBsYXN0IC09IDFcbiAgICB9XG5cbiAgICBsZXQgc2VtaWNvbG9uID0gdGhpcy5yYXcobm9kZSwgJ3NlbWljb2xvbicpXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSBub2RlLm5vZGVzW2ldXG4gICAgICBsZXQgYmVmb3JlID0gdGhpcy5yYXcoY2hpbGQsICdiZWZvcmUnKVxuICAgICAgaWYgKGJlZm9yZSkgdGhpcy5idWlsZGVyKGJlZm9yZSlcbiAgICAgIHRoaXMuc3RyaW5naWZ5KGNoaWxkLCBsYXN0ICE9PSBpIHx8IHNlbWljb2xvbilcbiAgICB9XG4gIH1cblxuICBibG9jayAobm9kZSwgc3RhcnQpIHtcbiAgICBsZXQgYmV0d2VlbiA9IHRoaXMucmF3KG5vZGUsICdiZXR3ZWVuJywgJ2JlZm9yZU9wZW4nKVxuICAgIHRoaXMuYnVpbGRlcihzdGFydCArIGJldHdlZW4gKyAneycsIG5vZGUsICdzdGFydCcpXG5cbiAgICBsZXQgYWZ0ZXJcbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5ib2R5KG5vZGUpXG4gICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJywgJ2VtcHR5Qm9keScpXG4gICAgfVxuXG4gICAgaWYgKGFmdGVyKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpXG4gICAgdGhpcy5idWlsZGVyKCd9Jywgbm9kZSwgJ2VuZCcpXG4gIH1cblxuICByYXcgKG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKCFkZXRlY3QpIGRldGVjdCA9IG93blxuXG4gICAgLy8gQWxyZWFkeSBoYWRcbiAgICBpZiAob3duKSB7XG4gICAgICB2YWx1ZSA9IG5vZGUucmF3c1tvd25dXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgbGV0IHBhcmVudCA9IG5vZGUucGFyZW50XG5cbiAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgIGlmIChkZXRlY3QgPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAoIXBhcmVudCB8fCAocGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZsb2F0aW5nIGNoaWxkIHdpdGhvdXQgcGFyZW50XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiBERUZBVUxUX1JBV1tkZXRlY3RdXG5cbiAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICBsZXQgcm9vdCA9IG5vZGUucm9vdCgpXG4gICAgaWYgKCFyb290LnJhd0NhY2hlKSByb290LnJhd0NhY2hlID0geyB9XG4gICAgaWYgKHR5cGVvZiByb290LnJhd0NhY2hlW2RldGVjdF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdXG4gICAgfVxuXG4gICAgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScgfHwgZGV0ZWN0ID09PSAnYWZ0ZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWZvcmVBZnRlcihub2RlLCBkZXRlY3QpXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtZXRob2QgPSAncmF3JyArIGNhcGl0YWxpemUoZGV0ZWN0KVxuICAgICAgaWYgKHRoaXNbbWV0aG9kXSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzW293bl1cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHZhbHVlID0gREVGQVVMVF9SQVdbZGV0ZWN0XVxuXG4gICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWVcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd1NlbWljb2xvbiAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIGkubm9kZXMubGVuZ3RoICYmIGkubGFzdC50eXBlID09PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3Muc2VtaWNvbG9uXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3RW1wdHlCb2R5IChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYWZ0ZXJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdJbmRlbnQgKHJvb3QpIHtcbiAgICBpZiAocm9vdC5yYXdzLmluZGVudCkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnRcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBsZXQgcCA9IGkucGFyZW50XG4gICAgICBpZiAocCAmJiBwICE9PSByb290ICYmIHAucGFyZW50ICYmIHAucGFyZW50ID09PSByb290KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBsZXQgcGFydHMgPSBpLnJhd3MuYmVmb3JlLnNwbGl0KCdcXG4nKVxuICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdCZWZvcmVDb21tZW50IChyb290LCBub2RlKSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrQ29tbWVudHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZVxuICAgICAgICBpZiAodmFsdWUuaW5kZXhPZignXFxuJykgIT09IC0xKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKVxuICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZURlY2wgKHJvb3QsIG5vZGUpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGtEZWNscyhpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpXG4gICAgfSBlbHNlIGlmICh2YWx1ZSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpXG4gICAgfVxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgcmF3QmVmb3JlUnVsZSAocm9vdCkge1xuICAgIGxldCB2YWx1ZVxuICAgIHJvb3Qud2FsayhpID0+IHtcbiAgICAgIGlmIChpLm5vZGVzICYmIChpLnBhcmVudCAhPT0gcm9vdCB8fCByb290LmZpcnN0ICE9PSBpKSkge1xuICAgICAgICBpZiAodHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmVmb3JlXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZUNsb3NlIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrKGkgPT4ge1xuICAgICAgaWYgKGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaS5yYXdzLmFmdGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyXG4gICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHZhbHVlKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJylcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0JlZm9yZU9wZW4gKHJvb3QpIHtcbiAgICBsZXQgdmFsdWVcbiAgICByb290LndhbGsoaSA9PiB7XG4gICAgICBpZiAoaS50eXBlICE9PSAnZGVjbCcpIHtcbiAgICAgICAgdmFsdWUgPSBpLnJhd3MuYmV0d2VlblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIHJhd0NvbG9uIChyb290KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgcm9vdC53YWxrRGVjbHMoaSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkucmF3cy5iZXR3ZWVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuLnJlcGxhY2UoL1teXFxzOl0vZywgJycpXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBiZWZvcmVBZnRlciAobm9kZSwgZGV0ZWN0KSB7XG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJylcbiAgICB9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDb21tZW50JylcbiAgICB9IGVsc2UgaWYgKGRldGVjdCA9PT0gJ2JlZm9yZScpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZVJ1bGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVDbG9zZScpXG4gICAgfVxuXG4gICAgbGV0IGJ1ZiA9IG5vZGUucGFyZW50XG4gICAgbGV0IGRlcHRoID0gMFxuICAgIHdoaWxlIChidWYgJiYgYnVmLnR5cGUgIT09ICdyb290Jykge1xuICAgICAgZGVwdGggKz0gMVxuICAgICAgYnVmID0gYnVmLnBhcmVudFxuICAgIH1cblxuICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEpIHtcbiAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50JylcbiAgICAgIGlmIChpbmRlbnQubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKykgdmFsdWUgKz0gaW5kZW50XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICByYXdWYWx1ZSAobm9kZSwgcHJvcCkge1xuICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF1cbiAgICBsZXQgcmF3ID0gbm9kZS5yYXdzW3Byb3BdXG4gICAgaWYgKHJhdyAmJiByYXcudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gcmF3LnJhd1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyXG4iXSwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _lazyResult = _interopRequireDefault(require(\"./lazy-result\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.process(css1).then(result => console.log(result.css))\n * processor.process(css2).then(result => console.log(result.css))\n */\nvar Processor =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {Array.|Processor} plugins PostCSS plugins.\n * See {@link Processor#use} for plugin format.\n */\n function Processor(plugins) {\n if (plugins === void 0) {\n plugins = [];\n }\n\n /**\n * Current PostCSS version.\n *\n * @type {string}\n *\n * @example\n * if (result.processor.version.split('.')[0] !== '6') {\n * throw new Error('This plugin works only with PostCSS 6')\n * }\n */\n this.version = '7.0.23';\n /**\n * Plugins added to this processor.\n *\n * @type {pluginFunction[]}\n *\n * @example\n * const processor = postcss([autoprefixer, precss])\n * processor.plugins.length //=> 2\n */\n\n this.plugins = this.normalize(plugins);\n }\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin PostCSS plugin\n * or {@link Processor}\n * with plugins.\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss)\n *\n * @return {Processes} Current processor to make methods chain.\n */\n\n\n var _proto = Processor.prototype;\n\n _proto.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n }\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css String with input CSS or any object\n * with a `toString()` method,\n * like a Buffer. Optionally, send\n * a {@link Result} instance\n * and the processor will take\n * the {@link Root} from it.\n * @param {processOptions} [opts] Options.\n *\n * @return {LazyResult} Promise proxy.\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css)\n * })\n */\n ;\n\n _proto.process = function (_process) {\n function process(_x) {\n return _process.apply(this, arguments);\n }\n\n process.toString = function () {\n return _process.toString();\n };\n\n return process;\n }(function (css, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.plugins.length === 0 && opts.parser === opts.stringifier) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('You did not set any plugins, parser, or stringifier. ' + 'Right now, PostCSS does nothing. Pick plugins for your case ' + 'on https://www.postcss.parts/ and use them in postcss.config.js.');\n }\n }\n }\n\n return new _lazyResult.default(this, css, opts);\n });\n\n _proto.normalize = function normalize(plugins) {\n var normalized = [];\n\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n if (i.postcss) i = i.postcss;\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('PostCSS syntaxes cannot be used as plugins. Instead, please use ' + 'one of the syntax/parser/stringifier options as outlined ' + 'in your PostCSS runner documentation.');\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n\n return normalized;\n };\n\n return Processor;\n}();\n\nvar _default = Processor;\n/**\n * @callback builder\n * @param {string} part Part of generated CSS connected to this node.\n * @param {Node} node AST node.\n * @param {\"start\"|\"end\"} [type] Node’s part type.\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css String with input CSS or any object\n * with toString() method, like a Buffer.\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n * or generate string and source map.\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse Function to generate AST by string.\n * @property {stringifier} stringify Function to generate string by AST.\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root Parsed input CSS.\n * @param {Result} result Result to set warnings or check other plugins.\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss PostCSS plugin function.\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from The path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to The path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser Function to generate AST by string.\n * @property {stringifier} stringifier Class to generate string by AST.\n * @property {syntax} syntax Object with `parse` and `stringify`.\n * @property {object} map Source map options.\n * @property {boolean} map.inline Does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment.\n * @property {string|object|false|function} map.prev Source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map automatically,\n * so you could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent Does PostCSS should set\n * the origin content to map.\n * @property {string|false} map.annotation Does PostCSS should set\n * annotation comment to map.\n * @property {string} map.from Override `from` in map’s\n * sources`.\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsImxlbmd0aCIsInBhcnNlciIsInN0cmluZ2lmaWVyIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7OztBQUVBOzs7Ozs7Ozs7SUFTTUEsUzs7O0FBQ0o7Ozs7QUFJQSxxQkFBYUMsT0FBYixFQUEyQjtBQUFBLFFBQWRBLE9BQWM7QUFBZEEsTUFBQUEsT0FBYyxHQUFKLEVBQUk7QUFBQTs7QUFDekI7Ozs7Ozs7Ozs7QUFVQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7Ozs7O0FBU0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBNkJBRyxHLEdBQUEsYUFBS0MsTUFBTCxFQUFhO0FBQ1gsU0FBS0osT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUssTUFBYixDQUFvQixLQUFLSCxTQUFMLENBQWUsQ0FBQ0UsTUFBRCxDQUFmLENBQXBCLENBQWY7QUFDQSxXQUFPLElBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FzQkFFLE87Ozs7Ozs7Ozs7SUFBQSxVQUFTQyxHQUFULEVBQWNDLElBQWQsRUFBMEI7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3hCLFFBQUksS0FBS1IsT0FBTCxDQUFhUyxNQUFiLEtBQXdCLENBQXhCLElBQTZCRCxJQUFJLENBQUNFLE1BQUwsS0FBZ0JGLElBQUksQ0FBQ0csV0FBdEQsRUFBbUU7QUFDakUsVUFBSUwsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsWUFBSSxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxPQUFPLENBQUNDLElBQTlDLEVBQW9EO0FBQ2xERCxVQUFBQSxPQUFPLENBQUNDLElBQVIsQ0FDRSwwREFDQSw4REFEQSxHQUVBLGtFQUhGO0FBS0Q7QUFDRjtBQUNGOztBQUNELFdBQU8sSUFBSUMsbUJBQUosQ0FBZSxJQUFmLEVBQXFCVCxHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNELEc7O1NBRUROLFMsR0FBQSxtQkFBV0YsT0FBWCxFQUFvQjtBQUNsQixRQUFJaUIsVUFBVSxHQUFHLEVBQWpCOztBQUNBLHlCQUFjakIsT0FBZCxrSEFBdUI7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLFVBQWRrQixDQUFjO0FBQ3JCLFVBQUlBLENBQUMsQ0FBQ0MsT0FBTixFQUFlRCxDQUFDLEdBQUdBLENBQUMsQ0FBQ0MsT0FBTjs7QUFFZixVQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFiLElBQXlCRSxLQUFLLENBQUNDLE9BQU4sQ0FBY0gsQ0FBQyxDQUFDbEIsT0FBaEIsQ0FBN0IsRUFBdUQ7QUFDckRpQixRQUFBQSxVQUFVLEdBQUdBLFVBQVUsQ0FBQ1osTUFBWCxDQUFrQmEsQ0FBQyxDQUFDbEIsT0FBcEIsQ0FBYjtBQUNELE9BRkQsTUFFTyxJQUFJLE9BQU9rQixDQUFQLEtBQWEsVUFBakIsRUFBNkI7QUFDbENELFFBQUFBLFVBQVUsQ0FBQ0ssSUFBWCxDQUFnQkosQ0FBaEI7QUFDRCxPQUZNLE1BRUEsSUFBSSxPQUFPQSxDQUFQLEtBQWEsUUFBYixLQUEwQkEsQ0FBQyxDQUFDSyxLQUFGLElBQVdMLENBQUMsQ0FBQ00sU0FBdkMsQ0FBSixFQUF1RDtBQUM1RCxZQUFJbEIsT0FBTyxDQUFDTSxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsZ0JBQU0sSUFBSVksS0FBSixDQUNKLHFFQUNBLDJEQURBLEdBRUEsdUNBSEksQ0FBTjtBQUtEO0FBQ0YsT0FSTSxNQVFBO0FBQ0wsY0FBTSxJQUFJQSxLQUFKLENBQVVQLENBQUMsR0FBRywwQkFBZCxDQUFOO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPRCxVQUFQO0FBQ0QsRzs7Ozs7ZUFHWWxCLFM7QUFFZjs7Ozs7OztBQU9BOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7QUFVQTs7Ozs7O0FBTUE7Ozs7O0FBS0E7Ozs7OztBQU1BOzs7OztBQUtBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExhenlSZXN1bHQgZnJvbSAnLi9sYXp5LXJlc3VsdCdcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pXG4gKiBwcm9jZXNzb3IucHJvY2Vzcyhjc3MxKS50aGVuKHJlc3VsdCA9PiBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKSlcbiAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzczIpLnRoZW4ocmVzdWx0ID0+IGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpKVxuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuICAvKipcbiAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgUG9zdENTUyBwbHVnaW5zLlxuICAgKiAgICAgICAgU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChwbHVnaW5zID0gW10pIHtcbiAgICAvKipcbiAgICAgKiBDdXJyZW50IFBvc3RDU1MgdmVyc2lvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmIChyZXN1bHQucHJvY2Vzc29yLnZlcnNpb24uc3BsaXQoJy4nKVswXSAhPT0gJzYnKSB7XG4gICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKVxuICAgICAqIH1cbiAgICAgKi9cbiAgICB0aGlzLnZlcnNpb24gPSAnNy4wLjIzJ1xuICAgIC8qKlxuICAgICAqIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7cGx1Z2luRnVuY3Rpb25bXX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcHJvY2Vzc29yID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyLCBwcmVjc3NdKVxuICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgKi9cbiAgICB0aGlzLnBsdWdpbnMgPSB0aGlzLm5vcm1hbGl6ZShwbHVnaW5zKVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAqXG4gICAqIFBvc3RDU1MgcGx1Z2luIGNhbiBiZSBpbiA0IGZvcm1hdHM6XG4gICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICogKiBBIGZ1bmN0aW9uLiBQb3N0Q1NTIHdpbGwgcGFzcyB0aGUgZnVuY3Rpb24gYSBAe2xpbmsgUm9vdH1cbiAgICogICBhcyB0aGUgZmlyc3QgYXJndW1lbnQgYW5kIGN1cnJlbnQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgKiAqIEFuIG9iamVjdCB3aXRoIGEgYHBvc3Rjc3NgIG1ldGhvZC4gUG9zdENTUyB3aWxsIHVzZSB0aGF0IG1ldGhvZFxuICAgKiAgIGFzIGRlc2NyaWJlZCBpbiAjMi5cbiAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAqICAgZnJvbSB0aGF0IGluc3RhbmNlIGludG8gdGhpcyBvbmUuXG4gICAqXG4gICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAqIGEgYHBvc3Rjc3NgIGluc3RhbmNlIChzZWUgW2Bwb3N0Y3NzKHBsdWdpbnMpYF0pLlxuICAgKlxuICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1BsdWdpbnxwbHVnaW5GdW5jdGlvbnxQcm9jZXNzb3J9IHBsdWdpbiBQb3N0Q1NTIHBsdWdpblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUHJvY2Vzc29yfVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBsdWdpbnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoKVxuICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgKiAgIC51c2UocHJlY3NzKVxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9jZXNzZXN9IEN1cnJlbnQgcHJvY2Vzc29yIHRvIG1ha2UgbWV0aG9kcyBjaGFpbi5cbiAgICovXG4gIHVzZSAocGx1Z2luKSB7XG4gICAgdGhpcy5wbHVnaW5zID0gdGhpcy5wbHVnaW5zLmNvbmNhdCh0aGlzLm5vcm1hbGl6ZShbcGx1Z2luXSkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgc291cmNlIENTUyBhbmQgcmV0dXJucyBhIHtAbGluayBMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5LlxuICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAqIGFueSB0cmFuc2Zvcm1hdGlvbnMuIFRyYW5zZm9ybWF0aW9ucyB3aWxsIGJlIGFwcGxpZWRcbiAgICogaW4gdGhlIHtAbGluayBMYXp5UmVzdWx0fSBtZXRob2RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ3xSZXN1bHR9IGNzcyBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGEgYHRvU3RyaW5nKClgIG1ldGhvZCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlrZSBhIEJ1ZmZlci4gT3B0aW9uYWxseSwgc2VuZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGUgcHJvY2Vzc29yIHdpbGwgdGFrZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAgICAgIE9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4ge0xhenlSZXN1bHR9IFByb21pc2UgcHJveHkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICogICAudGhlbihyZXN1bHQgPT4ge1xuICAgKiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpXG4gICAqICAgfSlcbiAgICovXG4gIHByb2Nlc3MgKGNzcywgb3B0cyA9IHsgfSkge1xuICAgIGlmICh0aGlzLnBsdWdpbnMubGVuZ3RoID09PSAwICYmIG9wdHMucGFyc2VyID09PSBvcHRzLnN0cmluZ2lmaWVyKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdZb3UgZGlkIG5vdCBzZXQgYW55IHBsdWdpbnMsIHBhcnNlciwgb3Igc3RyaW5naWZpZXIuICcgK1xuICAgICAgICAgICAgJ1JpZ2h0IG5vdywgUG9zdENTUyBkb2VzIG5vdGhpbmcuIFBpY2sgcGx1Z2lucyBmb3IgeW91ciBjYXNlICcgK1xuICAgICAgICAgICAgJ29uIGh0dHBzOi8vd3d3LnBvc3Rjc3MucGFydHMvIGFuZCB1c2UgdGhlbSBpbiBwb3N0Y3NzLmNvbmZpZy5qcy4nXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpXG4gIH1cblxuICBub3JtYWxpemUgKHBsdWdpbnMpIHtcbiAgICBsZXQgbm9ybWFsaXplZCA9IFtdXG4gICAgZm9yIChsZXQgaSBvZiBwbHVnaW5zKSB7XG4gICAgICBpZiAoaS5wb3N0Y3NzKSBpID0gaS5wb3N0Y3NzXG5cbiAgICAgIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgQXJyYXkuaXNBcnJheShpLnBsdWdpbnMpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLmNvbmNhdChpLnBsdWdpbnMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgKGkucGFyc2UgfHwgaS5zdHJpbmdpZnkpKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1Bvc3RDU1Mgc3ludGF4ZXMgY2Fubm90IGJlIHVzZWQgYXMgcGx1Z2lucy4gSW5zdGVhZCwgcGxlYXNlIHVzZSAnICtcbiAgICAgICAgICAgICdvbmUgb2YgdGhlIHN5bnRheC9wYXJzZXIvc3RyaW5naWZpZXIgb3B0aW9ucyBhcyBvdXRsaW5lZCAnICtcbiAgICAgICAgICAgICdpbiB5b3VyIFBvc3RDU1MgcnVubmVyIGRvY3VtZW50YXRpb24uJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGkgKyAnIGlzIG5vdCBhIFBvc3RDU1MgcGx1Z2luJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3JcblxuLyoqXG4gKiBAY2FsbGJhY2sgYnVpbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgICAgICAgICAgUGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGUuXG4gKiBAcGFyYW0ge05vZGV9ICAgbm9kZSAgICAgICAgICBBU1Qgbm9kZS5cbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSBOb2Rl4oCZcyBwYXJ0IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgcGFyc2VyXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8dG9TdHJpbmd9IGNzcyAgIFN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBzdHJpbmdpZmllclxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHN5bnRheFxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlICAgICAgICAgIEZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmcuXG4gKiBAcHJvcGVydHkge3N0cmluZ2lmaWVyfSBzdHJpbmdpZnkgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIFBhcnNlZCBpbnB1dCBDU1MuXG4gKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0IFJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2lucy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFBsdWdpblxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gcG9zdGNzcyBQb3N0Q1NTIHBsdWdpbiBmdW5jdGlvbi5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICBUaGUgcGF0aCBvZiB0aGUgQ1NTIHNvdXJjZSBmaWxlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBhbHdheXMgc2V0IGBmcm9tYCxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uIGFuZCBzeW50YXggZXJyb3IgbWVzc2FnZXMuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdG8gICAgICAgICAgICAgICBUaGUgcGF0aCB3aGVyZSB5b3XigJlsbCBwdXQgdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSBjb3JyZWN0IHNvdXJjZSBtYXBzLlxuICogQHByb3BlcnR5IHtwYXJzZXJ9IHBhcnNlciAgICAgICAgICAgRnVuY3Rpb24gdG8gZ2VuZXJhdGUgQVNUIGJ5IHN0cmluZy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIENsYXNzIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1QuXG4gKiBAcHJvcGVydHkge3N5bnRheH0gc3ludGF4ICAgICAgICAgICBPYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YC5cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBtYXAgICAgICAgICAgICAgIFNvdXJjZSBtYXAgb3B0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgRG9lcyBzb3VyY2UgbWFwIHNob3VsZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBlbWJlZGRlZCBpbiB0aGUgb3V0cHV0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuXG4gKiBAcHJvcGVydHkge3N0cmluZ3xvYmplY3R8ZmFsc2V8ZnVuY3Rpb259IG1hcC5wcmV2IFNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGEgcHJldmlvdXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZyBzdGVwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCB0cnkgdG8gZmluZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cyBtYXAgYXV0b21hdGljYWxseSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28geW91IGNvdWxkIGRpc2FibGUgaXQgYnlcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGZhbHNlYCB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLnNvdXJjZXNDb250ZW50ICAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbiBjb250ZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGZhbHNlfSBtYXAuYW5ub3RhdGlvbiAgICAgICAgICAgRG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbiBjb21tZW50IHRvIG1hcC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXAuZnJvbSAgICAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlc2AuXG4gKi9cbiJdLCJmaWxlIjoicHJvY2Vzc29yLmpzIn0=\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _mapGenerator = _interopRequireDefault(require(\"./map-generator\"));\n\nvar _stringify2 = _interopRequireDefault(require(\"./stringify\"));\n\nvar _warnOnce = _interopRequireDefault(require(\"./warn-once\"));\n\nvar _result = _interopRequireDefault(require(\"./result\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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 isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function';\n}\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([autoprefixer]).process(css)\n */\n\n\nvar LazyResult =\n/*#__PURE__*/\nfunction () {\n function LazyResult(processor, css, opts) {\n this.stringified = false;\n this.processed = false;\n var root;\n\n if (typeof css === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result.default) {\n root = css.root;\n\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result.default(processor, root, opts);\n }\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n *\n * @type {Processor}\n */\n\n\n var _proto = LazyResult.prototype;\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} Warnings from plugins.\n */\n _proto.warnings = function warnings() {\n return this.sync().warnings();\n }\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css\n *\n * @return {string} Output CSS.\n */\n ;\n\n _proto.toString = function toString() {\n return this.css;\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled Callback will be executed\n * when all plugins will finish work.\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css)\n * })\n */\n ;\n\n _proto.then = function then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n (0, _warnOnce.default)('Without `from` option PostCSS could generate wrong source map ' + 'and will not find Browserslist config. Set it to CSS file path ' + 'or to `undefined` to prevent this warning.');\n }\n }\n\n return this.async().then(onFulfilled, onRejected);\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected Callback will be executed on any error.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css).then(result => {\n * console.log(result.css)\n * }).catch(error => {\n * console.error(error)\n * })\n */\n ;\n\n _proto.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n }\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onFinally on any error or when all plugins will finish work.\n *\n * It implements standard Promise API.\n *\n * @param {onFinally} onFinally Callback will be executed on any error or\n * when all plugins will finish work.\n *\n * @return {Promise} Promise API to make queue.\n *\n * @example\n * postcss([autoprefixer]).process(css).finally(() => {\n * console.log('processing ended')\n * })\n */\n ;\n\n _proto.finally = function _finally(onFinally) {\n return this.async().then(onFinally, onFinally);\n };\n\n _proto.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. Your current PostCSS ' + 'version is ' + runtimeVer + ', but ' + pluginName + ' uses ' + pluginVer + '. Perhaps this is the source of the error below.');\n }\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n _proto.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n _proto.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n return this.processing;\n };\n\n _proto.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n var promise = this.run(plugin);\n\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n _proto.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n _proto.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n this.sync();\n var opts = this.result.opts;\n var str = _stringify2.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n var map = new _mapGenerator.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: \"processor\",\n get: function get() {\n return this.result.processor;\n }\n /**\n * Options from the {@link Processor#process} call.\n *\n * @type {processOptions}\n */\n\n }, {\n key: \"opts\",\n get: function get() {\n return this.result.opts;\n }\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: \"css\",\n get: function get() {\n return this.stringify().css;\n }\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: \"content\",\n get: function get() {\n return this.stringify().content;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: \"map\",\n get: function get() {\n return this.stringify().map;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: \"root\",\n get: function get() {\n return this.sync().root;\n }\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: \"messages\",\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nvar _default = LazyResult;\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImFzeW5jIiwiY2F0Y2giLCJmaW5hbGx5Iiwib25GaW5hbGx5IiwiaGFuZGxlRXJyb3IiLCJwbHVnaW4iLCJuYW1lIiwicG9zdGNzc1BsdWdpbiIsInNldE1lc3NhZ2UiLCJwb3N0Y3NzVmVyc2lvbiIsInBsdWdpbk5hbWUiLCJwbHVnaW5WZXIiLCJydW50aW1lVmVyIiwidmVyc2lvbiIsImEiLCJzcGxpdCIsImIiLCJwYXJzZUludCIsImNvbnNvbGUiLCJlcnIiLCJhc3luY1RpY2siLCJyZXNvbHZlIiwicmVqZWN0IiwicGx1Z2lucyIsImxlbmd0aCIsInByb21pc2UiLCJydW4iLCJQcm9taXNlIiwic3RyaW5naWZ5IiwicHJvY2Vzc2luZyIsIkVycm9yIiwibGFzdFBsdWdpbiIsInN0ciIsInN0cmluZ2lmaWVyIiwiTWFwR2VuZXJhdG9yIiwiZGF0YSIsImdlbmVyYXRlIiwiY29udGVudCIsIm1lc3NhZ2VzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFNBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBRyxDQUFDQyxJQUFYLEtBQW9CLFVBQXREO0FBQ0Q7QUFFRDs7Ozs7Ozs7OztJQVFNQyxV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QUdBLEdBQUcsQ0FBQ0osU0FBVjtBQUVuQixRQUFJNUMsR0FBRyxHQUFHLElBQUlrRCxxQkFBSixDQUFpQkYsR0FBakIsRUFBc0IsS0FBS3pDLE1BQUwsQ0FBWVYsSUFBbEMsRUFBd0MsS0FBS1UsTUFBTCxDQUFZYixJQUFwRCxDQUFWO0FBQ0EsUUFBSXlELElBQUksR0FBR25ELEdBQUcsQ0FBQ29ELFFBQUosRUFBWDtBQUNBLFNBQUs3QyxNQUFMLENBQVlkLEdBQVosR0FBa0IwRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUNBLFNBQUs1QyxNQUFMLENBQVlQLEdBQVosR0FBa0JtRCxJQUFJLENBQUMsQ0FBRCxDQUF0QjtBQUVBLFdBQU8sS0FBSzVDLE1BQVo7QUFDRCxHOzs7O3dCQWpVZ0I7QUFDZixhQUFPLEtBQUtBLE1BQUwsQ0FBWWYsU0FBbkI7QUFDRDtBQUVEOzs7Ozs7Ozt3QkFLWTtBQUNWLGFBQU8sS0FBS2UsTUFBTCxDQUFZYixJQUFuQjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZVztBQUNULGFBQU8sS0FBS2tELFNBQUwsR0FBaUJuRCxHQUF4QjtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozt3QkFZZTtBQUNiLGFBQU8sS0FBS21ELFNBQUwsR0FBaUJTLE9BQXhCO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O3dCQVlXO0FBQ1QsYUFBTyxLQUFLVCxTQUFMLEdBQWlCNUMsR0FBeEI7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O3dCQWFZO0FBQ1YsYUFBTyxLQUFLUyxJQUFMLEdBQVlaLElBQW5CO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozt3QkFhZ0I7QUFDZCxhQUFPLEtBQUtZLElBQUwsR0FBWTZDLFFBQW5CO0FBQ0Q7Ozs7OztlQXVPWS9ELFU7QUFFZjs7Ozs7QUFLQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNYXBHZW5lcmF0b3IgZnJvbSAnLi9tYXAtZ2VuZXJhdG9yJ1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeSdcbmltcG9ydCB3YXJuT25jZSBmcm9tICcuL3dhcm4tb25jZSdcbmltcG9ydCBSZXN1bHQgZnJvbSAnLi9yZXN1bHQnXG5pbXBvcnQgcGFyc2UgZnJvbSAnLi9wYXJzZSdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG4vKipcbiAqIEEgUHJvbWlzZSBwcm94eSBmb3IgdGhlIHJlc3VsdCBvZiBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIGBMYXp5UmVzdWx0YCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9LlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsYXp5ID0gcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpXG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuICBjb25zdHJ1Y3RvciAocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gZmFsc2VcbiAgICB0aGlzLnByb2Nlc3NlZCA9IGZhbHNlXG5cbiAgICBsZXQgcm9vdFxuICAgIGlmICh0eXBlb2YgY3NzID09PSAnb2JqZWN0JyAmJiBjc3MgIT09IG51bGwgJiYgY3NzLnR5cGUgPT09ICdyb290Jykge1xuICAgICAgcm9vdCA9IGNzc1xuICAgIH0gZWxzZSBpZiAoY3NzIGluc3RhbmNlb2YgTGF6eVJlc3VsdCB8fCBjc3MgaW5zdGFuY2VvZiBSZXN1bHQpIHtcbiAgICAgIHJvb3QgPSBjc3Mucm9vdFxuICAgICAgaWYgKGNzcy5tYXApIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcpIG9wdHMubWFwID0geyB9XG4gICAgICAgIGlmICghb3B0cy5tYXAuaW5saW5lKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZVxuICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGFyc2VyID0gcGFyc2VcbiAgICAgIGlmIChvcHRzLnN5bnRheCkgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2VcbiAgICAgIGlmIChvcHRzLnBhcnNlcikgcGFyc2VyID0gb3B0cy5wYXJzZXJcbiAgICAgIGlmIChwYXJzZXIucGFyc2UpIHBhcnNlciA9IHBhcnNlci5wYXJzZVxuXG4gICAgICB0cnkge1xuICAgICAgICByb290ID0gcGFyc2VyKGNzcywgb3B0cylcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucmVzdWx0ID0gbmV3IFJlc3VsdChwcm9jZXNzb3IsIHJvb3QsIG9wdHMpXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLCB3aGljaCB3aWxsIGJlIHVzZWRcbiAgICogZm9yIENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAqL1xuICBnZXQgcHJvY2Vzc29yICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQucHJvY2Vzc29yXG4gIH1cblxuICAvKipcbiAgICogT3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9IGNhbGwuXG4gICAqXG4gICAqIEB0eXBlIHtwcm9jZXNzT3B0aW9uc31cbiAgICovXG4gIGdldCBvcHRzICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHQub3B0c1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICogdG8gYSBDU1Mgc3RyaW5nIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjY3NzfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAqL1xuICBnZXQgY3NzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5jc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBhbGlhcyBmb3IgdGhlIGBjc3NgIHByb3BlcnR5LiBVc2UgaXQgd2l0aCBzeW50YXhlc1xuICAgKiB0aGF0IGdlbmVyYXRlIG5vbi1DU1Mgb3V0cHV0LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy5cbiAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgKiBmb3IgZGVidWcgcHVycG9zZSwgeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAc2VlIFJlc3VsdCNjb250ZW50XG4gICAqL1xuICBnZXQgY29udGVudCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudFxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuIFRoaXMgaXMgd2h5IHRoaXMgbWV0aG9kIGlzIG9ubHlcbiAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICpcbiAgICogQHR5cGUge1NvdXJjZU1hcEdlbmVyYXRvcn1cbiAgICogQHNlZSBSZXN1bHQjbWFwXG4gICAqL1xuICBnZXQgbWFwICgpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnkoKS5tYXBcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgcmV0dXJucyB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgKiBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnMgaXQgd2lsbCB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICogeW91IHNob3VsZCBhbHdheXMgdXNlIHtAbGluayBMYXp5UmVzdWx0I3RoZW59LlxuICAgKlxuICAgKiBAdHlwZSB7Um9vdH1cbiAgICogQHNlZSBSZXN1bHQjcm9vdFxuICAgKi9cbiAgZ2V0IHJvb3QgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAqXG4gICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLiBJZiB0aGUgcHJvY2Vzc29yXG4gICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLFxuICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAqXG4gICAqIEB0eXBlIHtNZXNzYWdlW119XG4gICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAqL1xuICBnZXQgbWVzc2FnZXMgKCkge1xuICAgIHJldHVybiB0aGlzLnN5bmMoKS5tZXNzYWdlc1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyB7QGxpbmsgUmVzdWx0I3dhcm5pbmdzKCl9LlxuICAgKlxuICAgKiBAcmV0dXJuIHtXYXJuaW5nW119IFdhcm5pbmdzIGZyb20gcGx1Z2lucy5cbiAgICovXG4gIHdhcm5pbmdzICgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW5jKCkud2FybmluZ3MoKVxuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbGF6eSArICcnID09PSBsYXp5LmNzc1xuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE91dHB1dCBDU1MuXG4gICAqL1xuICB0b1N0cmluZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzXG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgKiBhbmQgY2FsbHMgYG9uRnVsZmlsbGVkYCB3aXRoIGEgUmVzdWx0IGluc3RhbmNlLiBJZiBhIHBsdWdpbiB0aHJvd3NcbiAgICogYW4gZXJyb3IsIHRoZSBgb25SZWplY3RlZGAgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZC5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgQ2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmsuXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gIG9uUmVqZWN0ZWQgIENhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzKFthdXRvcHJlZml4ZXJdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KVxuICAgKi9cbiAgdGhlbiAob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgJ1dpdGhvdXQgYGZyb21gIG9wdGlvbiBQb3N0Q1NTIGNvdWxkIGdlbmVyYXRlIHdyb25nIHNvdXJjZSBtYXAgJyArXG4gICAgICAgICAgJ2FuZCB3aWxsIG5vdCBmaW5kIEJyb3dzZXJzbGlzdCBjb25maWcuIFNldCBpdCB0byBDU1MgZmlsZSBwYXRoICcgK1xuICAgICAgICAgICdvciB0byBgdW5kZWZpbmVkYCB0byBwcmV2ZW50IHRoaXMgd2FybmluZy4nXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAqXG4gICAqIEl0IGltcGxlbWVudHMgc3RhbmRhcmQgUHJvbWlzZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7b25SZWplY3RlZH0gb25SZWplY3RlZCBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvci5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAqICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICogfSlcbiAgICovXG4gIGNhdGNoIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmMoKS5jYXRjaChvblJlamVjdGVkKVxuICB9XG4gIC8qKlxuICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAqIGFuZCBjYWxscyBvbkZpbmFsbHkgb24gYW55IGVycm9yIG9yIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogSXQgaW1wbGVtZW50cyBzdGFuZGFyZCBQcm9taXNlIEFQSS5cbiAgICpcbiAgICogQHBhcmFtIHtvbkZpbmFsbHl9IG9uRmluYWxseSBDYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIG9uIGFueSBlcnJvciBvclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYWxsIHBsdWdpbnMgd2lsbCBmaW5pc2ggd29yay5cbiAgICpcbiAgICogQHJldHVybiB7UHJvbWlzZX0gUHJvbWlzZSBBUEkgdG8gbWFrZSBxdWV1ZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcyhbYXV0b3ByZWZpeGVyXSkucHJvY2Vzcyhjc3MpLmZpbmFsbHkoKCkgPT4ge1xuICAgKiAgIGNvbnNvbGUubG9nKCdwcm9jZXNzaW5nIGVuZGVkJylcbiAgICogfSlcbiAgICovXG4gIGZpbmFsbHkgKG9uRmluYWxseSkge1xuICAgIHJldHVybiB0aGlzLmFzeW5jKCkudGhlbihvbkZpbmFsbHksIG9uRmluYWxseSlcbiAgfVxuXG4gIGhhbmRsZUVycm9yIChlcnJvciwgcGx1Z2luKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdDc3NTeW50YXhFcnJvcicgJiYgIWVycm9yLnBsdWdpbikge1xuICAgICAgICBlcnJvci5wbHVnaW4gPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICBlcnJvci5zZXRNZXNzYWdlKClcbiAgICAgIH0gZWxzZSBpZiAocGx1Z2luLnBvc3Rjc3NWZXJzaW9uKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgbGV0IHBsdWdpbk5hbWUgPSBwbHVnaW4ucG9zdGNzc1BsdWdpblxuICAgICAgICAgIGxldCBwbHVnaW5WZXIgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb25cbiAgICAgICAgICBsZXQgcnVudGltZVZlciA9IHRoaXMucmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uXG4gICAgICAgICAgbGV0IGEgPSBwbHVnaW5WZXIuc3BsaXQoJy4nKVxuICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpXG5cbiAgICAgICAgICBpZiAoYVswXSAhPT0gYlswXSB8fCBwYXJzZUludChhWzFdKSA+IHBhcnNlSW50KGJbMV0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiBZb3VyIGN1cnJlbnQgUG9zdENTUyAnICtcbiAgICAgICAgICAgICAgJ3ZlcnNpb24gaXMgJyArIHJ1bnRpbWVWZXIgKyAnLCBidXQgJyArIHBsdWdpbk5hbWUgKyAnIHVzZXMgJyArXG4gICAgICAgICAgICAgIHBsdWdpblZlciArICcuIFBlcmhhcHMgdGhpcyBpcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBiZWxvdy4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSBjb25zb2xlLmVycm9yKGVycilcbiAgICB9XG4gIH1cblxuICBhc3luY1RpY2sgKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGlmICh0aGlzLnBsdWdpbiA+PSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCkge1xuICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICByZXR1cm4gcmVzb2x2ZSgpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBwbHVnaW4gPSB0aGlzLnByb2Nlc3Nvci5wbHVnaW5zW3RoaXMucGx1Z2luXVxuICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pXG4gICAgICB0aGlzLnBsdWdpbiArPSAxXG5cbiAgICAgIGlmIChpc1Byb21pc2UocHJvbWlzZSkpIHtcbiAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCBwbHVnaW4pXG4gICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cblxuICBhc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUodGhpcy5zdHJpbmdpZnkoKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc2luZykge1xuICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICAgIH1cblxuICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmVycm9yKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpXG4gICAgICB0aGlzLnBsdWdpbiA9IDBcbiAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdClcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkID0gdHJ1ZVxuICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KClcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZ1xuICB9XG5cbiAgc3luYyAoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc2VkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWVcblxuICAgIGlmICh0aGlzLnByb2Nlc3NpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVycm9yKSB0aHJvdyB0aGlzLmVycm9yXG5cbiAgICBmb3IgKGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMpIHtcbiAgICAgIGxldCBwcm9taXNlID0gdGhpcy5ydW4ocGx1Z2luKVxuICAgICAgaWYgKGlzUHJvbWlzZShwcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1VzZSBwcm9jZXNzKGNzcykudGhlbihjYikgdG8gd29yayB3aXRoIGFzeW5jIHBsdWdpbnMnKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG5cbiAgcnVuIChwbHVnaW4pIHtcbiAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHBsdWdpbih0aGlzLnJlc3VsdC5yb290LCB0aGlzLnJlc3VsdClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICBzdHJpbmdpZnkgKCkge1xuICAgIGlmICh0aGlzLnN0cmluZ2lmaWVkKSByZXR1cm4gdGhpcy5yZXN1bHRcbiAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZVxuXG4gICAgdGhpcy5zeW5jKClcblxuICAgIGxldCBvcHRzID0gdGhpcy5yZXN1bHQub3B0c1xuICAgIGxldCBzdHIgPSBzdHJpbmdpZnlcbiAgICBpZiAob3B0cy5zeW50YXgpIHN0ciA9IG9wdHMuc3ludGF4LnN0cmluZ2lmeVxuICAgIGlmIChvcHRzLnN0cmluZ2lmaWVyKSBzdHIgPSBvcHRzLnN0cmluZ2lmaWVyXG4gICAgaWYgKHN0ci5zdHJpbmdpZnkpIHN0ciA9IHN0ci5zdHJpbmdpZnlcblxuICAgIGxldCBtYXAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cylcbiAgICBsZXQgZGF0YSA9IG1hcC5nZW5lcmF0ZSgpXG4gICAgdGhpcy5yZXN1bHQuY3NzID0gZGF0YVswXVxuICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV1cblxuICAgIHJldHVybiB0aGlzLnJlc3VsdFxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExhenlSZXN1bHRcblxuLyoqXG4gKiBAY2FsbGJhY2sgb25GdWxmaWxsZWRcbiAqIEBwYXJhbSB7UmVzdWx0fSByZXN1bHRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBvblJlamVjdGVkXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICovXG4iXSwiZmlsZSI6ImxhenktcmVzdWx0LmpzIn0=\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string Space-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string Comma-separated values.\n *\n * @return {string[]} Split values.\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n return list.split(string, [','], true);\n }\n};\nvar _default = list;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7OztBQVNBLElBQUlBLElBQUksR0FBRztBQUVUQyxFQUFBQSxLQUZTLGlCQUVGQyxNQUZFLEVBRU1DLFVBRk4sRUFFa0JDLElBRmxCLEVBRXdCO0FBQy9CLFFBQUlDLEtBQUssR0FBRyxFQUFaO0FBQ0EsUUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFDQSxRQUFJTCxLQUFLLEdBQUcsS0FBWjtBQUVBLFFBQUlNLElBQUksR0FBRyxDQUFYO0FBQ0EsUUFBSUMsS0FBSyxHQUFHLEtBQVo7QUFDQSxRQUFJQyxNQUFNLEdBQUcsS0FBYjs7QUFFQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ1MsTUFBM0IsRUFBbUNELENBQUMsRUFBcEMsRUFBd0M7QUFDdEMsVUFBSUUsTUFBTSxHQUFHVixNQUFNLENBQUNRLENBQUQsQ0FBbkI7O0FBRUEsVUFBSUYsS0FBSixFQUFXO0FBQ1QsWUFBSUMsTUFBSixFQUFZO0FBQ1ZBLFVBQUFBLE1BQU0sR0FBRyxLQUFUO0FBQ0QsU0FGRCxNQUVPLElBQUlHLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQzFCSCxVQUFBQSxNQUFNLEdBQUcsSUFBVDtBQUNELFNBRk0sTUFFQSxJQUFJRyxNQUFNLEtBQUtKLEtBQWYsRUFBc0I7QUFDM0JBLFVBQUFBLEtBQUssR0FBRyxLQUFSO0FBQ0Q7QUFDRixPQVJELE1BUU8sSUFBSUksTUFBTSxLQUFLLEdBQVgsSUFBa0JBLE1BQU0sS0FBSyxJQUFqQyxFQUF1QztBQUM1Q0osUUFBQUEsS0FBSyxHQUFHSSxNQUFSO0FBQ0QsT0FGTSxNQUVBLElBQUlBLE1BQU0sS0FBSyxHQUFmLEVBQW9CO0FBQ3pCTCxRQUFBQSxJQUFJLElBQUksQ0FBUjtBQUNELE9BRk0sTUFFQSxJQUFJSyxNQUFNLEtBQUssR0FBZixFQUFvQjtBQUN6QixZQUFJTCxJQUFJLEdBQUcsQ0FBWCxFQUFjQSxJQUFJLElBQUksQ0FBUjtBQUNmLE9BRk0sTUFFQSxJQUFJQSxJQUFJLEtBQUssQ0FBYixFQUFnQjtBQUNyQixZQUFJSixVQUFVLENBQUNVLE9BQVgsQ0FBbUJELE1BQW5CLE1BQStCLENBQUMsQ0FBcEMsRUFBdUNYLEtBQUssR0FBRyxJQUFSO0FBQ3hDOztBQUVELFVBQUlBLEtBQUosRUFBVztBQUNULFlBQUlLLE9BQU8sS0FBSyxFQUFoQixFQUFvQkQsS0FBSyxDQUFDUyxJQUFOLENBQVdSLE9BQU8sQ0FBQ1MsSUFBUixFQUFYO0FBQ3BCVCxRQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNBTCxRQUFBQSxLQUFLLEdBQUcsS0FBUjtBQUNELE9BSkQsTUFJTztBQUNMSyxRQUFBQSxPQUFPLElBQUlNLE1BQVg7QUFDRDtBQUNGOztBQUVELFFBQUlSLElBQUksSUFBSUUsT0FBTyxLQUFLLEVBQXhCLEVBQTRCRCxLQUFLLENBQUNTLElBQU4sQ0FBV1IsT0FBTyxDQUFDUyxJQUFSLEVBQVg7QUFDNUIsV0FBT1YsS0FBUDtBQUNELEdBM0NROztBQTZDVDs7Ozs7Ozs7Ozs7QUFXQVcsRUFBQUEsS0F4RFMsaUJBd0RGZCxNQXhERSxFQXdETTtBQUNiLFFBQUllLE1BQU0sR0FBRyxDQUFDLEdBQUQsRUFBTSxJQUFOLEVBQVksSUFBWixDQUFiO0FBQ0EsV0FBT2pCLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0QsR0EzRFE7O0FBNkRUOzs7Ozs7Ozs7Ozs7QUFZQUMsRUFBQUEsS0F6RVMsaUJBeUVGaEIsTUF6RUUsRUF5RU07QUFDYixXQUFPRixJQUFJLENBQUNDLEtBQUwsQ0FBV0MsTUFBWCxFQUFtQixDQUFDLEdBQUQsQ0FBbkIsRUFBMEIsSUFBMUIsQ0FBUDtBQUNEO0FBM0VRLENBQVg7ZUErRWVGLEkiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlcnMgZm9yIHNhZmVseSBzcGxpdHRpbmcgbGlzdHMgb2YgQ1NTIHZhbHVlcyxcbiAqIHByZXNlcnZpbmcgcGFyZW50aGVzZXMgYW5kIHF1b3Rlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGlzdCA9IHBvc3Rjc3MubGlzdFxuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICBzcGxpdCAoc3RyaW5nLCBzZXBhcmF0b3JzLCBsYXN0KSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBsZXQgY3VycmVudCA9ICcnXG4gICAgbGV0IHNwbGl0ID0gZmFsc2VcblxuICAgIGxldCBmdW5jID0gMFxuICAgIGxldCBxdW90ZSA9IGZhbHNlXG4gICAgbGV0IGVzY2FwZSA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGxldHRlciA9IHN0cmluZ1tpXVxuXG4gICAgICBpZiAocXVvdGUpIHtcbiAgICAgICAgaWYgKGVzY2FwZSkge1xuICAgICAgICAgIGVzY2FwZSA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICBlc2NhcGUgPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSBxdW90ZSkge1xuICAgICAgICAgIHF1b3RlID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICdcIicgfHwgbGV0dGVyID09PSAnXFwnJykge1xuICAgICAgICBxdW90ZSA9IGxldHRlclxuICAgICAgfSBlbHNlIGlmIChsZXR0ZXIgPT09ICcoJykge1xuICAgICAgICBmdW5jICs9IDFcbiAgICAgIH0gZWxzZSBpZiAobGV0dGVyID09PSAnKScpIHtcbiAgICAgICAgaWYgKGZ1bmMgPiAwKSBmdW5jIC09IDFcbiAgICAgIH0gZWxzZSBpZiAoZnVuYyA9PT0gMCkge1xuICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmRleE9mKGxldHRlcikgIT09IC0xKSBzcGxpdCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHNwbGl0KSB7XG4gICAgICAgIGlmIChjdXJyZW50ICE9PSAnJykgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIHNwbGl0ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxhc3QgfHwgY3VycmVudCAhPT0gJycpIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpXG4gICAgcmV0dXJuIGFycmF5XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYGJhY2tncm91bmRgLFxuICAgKiBgYm9yZGVyLXJhZGl1c2AsIGFuZCBvdGhlciBzaG9ydGhhbmQgcHJvcGVydGllcykuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgU3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICpcbiAgICogQHJldHVybiB7c3RyaW5nW119IFNwbGl0IHZhbHVlcy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgKi9cbiAgc3BhY2UgKHN0cmluZykge1xuICAgIGxldCBzcGFjZXMgPSBbJyAnLCAnXFxuJywgJ1xcdCddXG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhZmVseSBzcGxpdHMgY29tbWEtc2VwYXJhdGVkIHZhbHVlcyAoc3VjaCBhcyB0aG9zZSBmb3IgYHRyYW5zaXRpb24tKmBcbiAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBDb21tYS1zZXBhcmF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gU3BsaXQgdmFsdWVzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBwb3N0Y3NzLmxpc3QuY29tbWEoJ2JsYWNrLCBsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKScpXG4gICAqIC8vPT4gWydibGFjaycsICdsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSddXG4gICAqL1xuICBjb21tYSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBbJywnXSwgdHJ1ZSlcbiAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RcbiJdLCJmaWxlIjoibGlzdC5qcyJ9\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}')\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root =\n/*#__PURE__*/\nfunction (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(defaults) {\n var _this;\n\n _this = _Container.call(this, defaults) || this;\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n _proto.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n }\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] Options with only `to` and `map` keys.\n *\n * @return {Result} Result with current root’s CSS.\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' })\n * const root2 = postcss.parse(css2, { from: 'b.css' })\n * root1.append(root2)\n * const result = root1.toResult({ to: 'all.css', map: true })\n */\n ;\n\n _proto.toResult = function toResult(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var LazyResult = require('./lazy-result');\n\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n }\n /**\n * @memberof Root#\n * @member {object} raws Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n ;\n\n return Root;\n}(_container.default);\n\nvar _default = Root;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7OztBQUVBOzs7Ozs7Ozs7O0lBVU1BLEk7Ozs7O0FBQ0osZ0JBQWFDLFFBQWIsRUFBdUI7QUFBQTs7QUFDckIsa0NBQU1BLFFBQU47QUFDQSxVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUNBLFFBQUksQ0FBQyxNQUFLQyxLQUFWLEVBQWlCLE1BQUtBLEtBQUwsR0FBYSxFQUFiO0FBSEk7QUFJdEI7Ozs7U0FFREMsVyxHQUFBLHFCQUFhQyxLQUFiLEVBQW9CQyxNQUFwQixFQUE0QjtBQUMxQixRQUFJQyxLQUFLLEdBQUcsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQVo7O0FBRUEsUUFBSSxDQUFDQyxNQUFELElBQVdDLEtBQUssS0FBSyxDQUFyQixJQUEwQixLQUFLSixLQUFMLENBQVdLLE1BQVgsR0FBb0IsQ0FBbEQsRUFBcUQ7QUFDbkQsV0FBS0wsS0FBTCxDQUFXLENBQVgsRUFBY00sSUFBZCxDQUFtQkMsTUFBbkIsR0FBNEIsS0FBS1AsS0FBTCxDQUFXSSxLQUFYLEVBQWtCRSxJQUFsQixDQUF1QkMsTUFBbkQ7QUFDRDs7QUFFRCxnQ0FBYU4sV0FBYixZQUF5QkMsS0FBekI7QUFDRCxHOztTQUVETSxTLEdBQUEsbUJBQVdOLEtBQVgsRUFBa0JPLE1BQWxCLEVBQTBCVixJQUExQixFQUFnQztBQUM5QixRQUFJQyxLQUFLLHdCQUFTUSxTQUFULFlBQW1CTixLQUFuQixDQUFUOztBQUVBLFFBQUlPLE1BQUosRUFBWTtBQUNWLFVBQUlWLElBQUksS0FBSyxTQUFiLEVBQXdCO0FBQ3RCLFlBQUksS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCSSxVQUFBQSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBWixHQUFxQixLQUFLUCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUF4QztBQUNELFNBRkQsTUFFTztBQUNMLGlCQUFPRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBbkI7QUFDRDtBQUNGLE9BTkQsTUFNTyxJQUFJLEtBQUtHLEtBQUwsS0FBZUQsTUFBbkIsRUFBMkI7QUFDaEMsNkJBQWlCVCxLQUFqQixrSEFBd0I7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUFBLGNBQWZXLElBQWU7QUFDdEJBLFVBQUFBLElBQUksQ0FBQ0wsSUFBTCxDQUFVQyxNQUFWLEdBQW1CRSxNQUFNLENBQUNILElBQVAsQ0FBWUMsTUFBL0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBT1AsS0FBUDtBQUNEO0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztTQWFBWSxRLEdBQUEsa0JBQVVDLElBQVYsRUFBc0I7QUFBQSxRQUFaQSxJQUFZO0FBQVpBLE1BQUFBLElBQVksR0FBTCxFQUFLO0FBQUE7O0FBQ3BCLFFBQUlDLFVBQVUsR0FBR0MsT0FBTyxDQUFDLGVBQUQsQ0FBeEI7O0FBQ0EsUUFBSUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUF2Qjs7QUFFQSxRQUFJRSxJQUFJLEdBQUcsSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLFdBQU9JLElBQUksQ0FBQ0MsU0FBTCxFQUFQO0FBQ0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMURpQkMsa0I7O2VBMkVKdEIsSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb250YWluZXIgZnJvbSAnLi9jb250YWluZXInXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpXG4gKiByb290LnR5cGUgICAgICAgICAvLz0+ICdyb290J1xuICogcm9vdC5ub2Rlcy5sZW5ndGggLy89PiAyXG4gKi9cbmNsYXNzIFJvb3QgZXh0ZW5kcyBDb250YWluZXIge1xuICBjb25zdHJ1Y3RvciAoZGVmYXVsdHMpIHtcbiAgICBzdXBlcihkZWZhdWx0cylcbiAgICB0aGlzLnR5cGUgPSAncm9vdCdcbiAgICBpZiAoIXRoaXMubm9kZXMpIHRoaXMubm9kZXMgPSBbXVxuICB9XG5cbiAgcmVtb3ZlQ2hpbGQgKGNoaWxkLCBpZ25vcmUpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKVxuXG4gICAgaWYgKCFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlID0gdGhpcy5ub2Rlc1tpbmRleF0ucmF3cy5iZWZvcmVcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gIH1cblxuICBub3JtYWxpemUgKGNoaWxkLCBzYW1wbGUsIHR5cGUpIHtcbiAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpXG5cbiAgICBpZiAoc2FtcGxlKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ3ByZXBlbmQnKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBzYW1wbGUucmF3cy5iZWZvcmUgPSB0aGlzLm5vZGVzWzFdLnJhd3MuYmVmb3JlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZmlyc3QgIT09IHNhbXBsZSkge1xuICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSA9IHNhbXBsZS5yYXdzLmJlZm9yZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHtAbGluayBSZXN1bHR9IGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUgcm9vdOKAmXMgQ1NTLlxuICAgKlxuICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gT3B0aW9ucyB3aXRoIG9ubHkgYHRvYCBhbmQgYG1hcGAga2V5cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVzdWx0fSBSZXN1bHQgd2l0aCBjdXJyZW50IHJvb3TigJlzIENTUy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KVxuICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pXG4gICAqIHJvb3QxLmFwcGVuZChyb290MilcbiAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSlcbiAgICovXG4gIHRvUmVzdWx0IChvcHRzID0geyB9KSB7XG4gICAgbGV0IExhenlSZXN1bHQgPSByZXF1aXJlKCcuL2xhenktcmVzdWx0JylcbiAgICBsZXQgUHJvY2Vzc29yID0gcmVxdWlyZSgnLi9wcm9jZXNzb3InKVxuXG4gICAgbGV0IGxhenkgPSBuZXcgTGF6eVJlc3VsdChuZXcgUHJvY2Vzc29yKCksIHRoaXMsIG9wdHMpXG4gICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KClcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUm9vdCNcbiAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAqXG4gICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAqXG4gICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgdG8gdGhlIGVuZCBvZiBmaWxlLlxuICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgKiBwb3N0Y3NzLnBhcnNlKCdhIHt9JykucmF3cyAgIC8vPT4geyBhZnRlcjogJycgfVxuICAgKi9cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdFxuIl0sImZpbGUiOiJyb290LmpzIn0=\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/.test(stream.current().toLowerCase())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = \"string-2\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = \"string-2\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backface-visibility\",\n \"background\", \"background-attachment\", \"background-blend-mode\", \"background-clip\",\n \"background-color\", \"background-image\", \"background-origin\", \"background-position\",\n \"background-repeat\", \"background-size\", \"baseline-shift\", \"binding\",\n \"bleed\", \"bookmark-label\", \"bookmark-level\", \"bookmark-state\",\n \"bookmark-target\", \"border\", \"border-bottom\", \"border-bottom-color\",\n \"border-bottom-left-radius\", \"border-bottom-right-radius\",\n \"border-bottom-style\", \"border-bottom-width\", \"border-collapse\",\n \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\",\n \"border-left-style\", \"border-left-width\", \"border-radius\", \"border-right\",\n \"border-right-color\", \"border-right-style\", \"border-right-width\",\n \"border-spacing\", \"border-style\", \"border-top\", \"border-top-color\",\n \"border-top-left-radius\", \"border-top-right-radius\", \"border-top-style\",\n \"border-top-width\", \"border-width\", \"bottom\", \"box-decoration-break\",\n \"box-shadow\", \"box-sizing\", \"break-after\", \"break-before\", \"break-inside\",\n \"caption-side\", \"caret-color\", \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\",\n \"column-fill\", \"column-gap\", \"column-rule\", \"column-rule-color\",\n \"column-rule-style\", \"column-rule-width\", \"column-span\", \"column-width\",\n \"columns\", \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\",\n \"cue-after\", \"cue-before\", \"cursor\", \"direction\", \"display\",\n \"dominant-baseline\", \"drop-initial-after-adjust\",\n \"drop-initial-after-align\", \"drop-initial-before-adjust\",\n \"drop-initial-before-align\", \"drop-initial-size\", \"drop-initial-value\",\n \"elevation\", \"empty-cells\", \"fit\", \"fit-position\", \"flex\", \"flex-basis\",\n \"flex-direction\", \"flex-flow\", \"flex-grow\", \"flex-shrink\", \"flex-wrap\",\n \"float\", \"float-offset\", \"flow-from\", \"flow-into\", \"font\", \"font-feature-settings\",\n \"font-family\", \"font-kerning\", \"font-language-override\", \"font-size\", \"font-size-adjust\",\n \"font-stretch\", \"font-style\", \"font-synthesis\", \"font-variant\",\n \"font-variant-alternates\", \"font-variant-caps\", \"font-variant-east-asian\",\n \"font-variant-ligatures\", \"font-variant-numeric\", \"font-variant-position\",\n \"font-weight\", \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\",\n \"grid-auto-rows\", \"grid-column\", \"grid-column-end\", \"grid-column-gap\",\n \"grid-column-start\", \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\",\n \"grid-row-start\", \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\",\n \"icon\", \"image-orientation\", \"image-rendering\", \"image-resolution\",\n \"inline-box-align\", \"justify-content\", \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\",\n \"line-break\", \"line-height\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\",\n \"marks\", \"marquee-direction\", \"marquee-loop\",\n \"marquee-play-count\", \"marquee-speed\", \"marquee-style\", \"max-height\",\n \"max-width\", \"min-height\", \"min-width\", \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\",\n \"nav-left\", \"nav-right\", \"nav-up\", \"object-fit\", \"object-position\",\n \"opacity\", \"order\", \"orphans\", \"outline\",\n \"outline-color\", \"outline-offset\", \"outline-style\", \"outline-width\",\n \"overflow\", \"overflow-style\", \"overflow-wrap\", \"overflow-x\", \"overflow-y\",\n \"padding\", \"padding-bottom\", \"padding-left\", \"padding-right\", \"padding-top\",\n \"page\", \"page-break-after\", \"page-break-before\", \"page-break-inside\",\n \"page-policy\", \"pause\", \"pause-after\", \"pause-before\", \"perspective\",\n \"perspective-origin\", \"pitch\", \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\", \"position\",\n \"presentation-level\", \"punctuation-trim\", \"quotes\", \"region-break-after\",\n \"region-break-before\", \"region-break-inside\", \"region-fragment\",\n \"rendering-intent\", \"resize\", \"rest\", \"rest-after\", \"rest-before\", \"richness\",\n \"right\", \"rotation\", \"rotation-point\", \"ruby-align\", \"ruby-overhang\",\n \"ruby-position\", \"ruby-span\", \"shape-image-threshold\", \"shape-inside\", \"shape-margin\",\n \"shape-outside\", \"size\", \"speak\", \"speak-as\", \"speak-header\",\n \"speak-numeral\", \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\",\n \"tab-size\", \"table-layout\", \"target\", \"target-name\", \"target-new\",\n \"target-position\", \"text-align\", \"text-align-last\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-style\", \"text-emphasis\", \"text-emphasis-color\",\n \"text-emphasis-position\", \"text-emphasis-style\", \"text-height\",\n \"text-indent\", \"text-justify\", \"text-outline\", \"text-overflow\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\", \"text-underline-position\",\n \"text-wrap\", \"top\", \"transform\", \"transform-origin\", \"transform-style\",\n \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"unicode-bidi\",\n \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\", \"voice-duration\",\n \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\", \"voice-stress\",\n \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\", \"will-change\", \"word-break\",\n \"word-spacing\", \"word-wrap\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\"\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-3d-light-color\", \"scrollbar-track-color\", \"shape-inside\",\n \"searchfield-cancel-button\", \"searchfield-decoration\", \"searchfield-results-button\",\n \"searchfield-results-decoration\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-family\", \"src\", \"unicode-range\", \"font-variant\", \"font-feature-settings\",\n \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"sub\",\n \"subpixel-antialiased\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","export default {\r\n run(ed) {\r\n ed.DomComponents.clear();\r\n ed.CssComposer.clear();\r\n }\r\n};\r\n","import { bindAll } from 'underscore';\r\nimport { on, off, getKeyChar } from 'utils/mixins';\r\nimport Dragger from 'utils/Dragger';\r\n\r\nexport default {\r\n run(ed) {\r\n bindAll(this, 'onKeyUp', 'enableDragger', 'disableDragger');\r\n this.editor = ed;\r\n this.canvasModel = this.canvas.getCanvasView().model;\r\n this.toggleMove(1);\r\n },\r\n stop(ed) {\r\n this.toggleMove();\r\n this.disableDragger();\r\n },\r\n\r\n onKeyUp(ev) {\r\n if (getKeyChar(ev) === ' ') {\r\n this.editor.stopCommand(this.id);\r\n }\r\n },\r\n\r\n enableDragger(ev) {\r\n this.toggleDragger(1, ev);\r\n },\r\n\r\n disableDragger(ev) {\r\n this.toggleDragger(0, ev);\r\n },\r\n\r\n toggleDragger(enable, ev) {\r\n const { canvasModel, em } = this;\r\n let { dragger } = this;\r\n const methodCls = enable ? 'add' : 'remove';\r\n this.getCanvas().classList[methodCls](`${this.ppfx}is__grabbing`);\r\n\r\n if (!dragger) {\r\n dragger = new Dragger({\r\n getPosition() {\r\n return {\r\n x: canvasModel.get('x'),\r\n y: canvasModel.get('y')\r\n };\r\n },\r\n setPosition({ x, y }) {\r\n canvasModel.set({ x, y });\r\n },\r\n onStart(ev, dragger) {\r\n em.trigger('canvas:move:start', dragger);\r\n },\r\n onDrag(ev, dragger) {\r\n em.trigger('canvas:move', dragger);\r\n },\r\n onEnd(ev, dragger) {\r\n em.trigger('canvas:move:end', dragger);\r\n }\r\n });\r\n this.dragger = dragger;\r\n }\r\n\r\n enable ? dragger.start(ev) : dragger.stop();\r\n },\r\n\r\n toggleMove(enable) {\r\n const { ppfx } = this;\r\n const methodCls = enable ? 'add' : 'remove';\r\n const methodEv = enable ? 'on' : 'off';\r\n const methodsEv = { on, off };\r\n const canvas = this.getCanvas();\r\n const classes = [`${ppfx}is__grab`];\r\n !enable && classes.push(`${ppfx}is__grabbing`);\r\n classes.forEach(cls => canvas.classList[methodCls](cls));\r\n methodsEv[methodEv](document, 'keyup', this.onKeyUp);\r\n methodsEv[methodEv](canvas, 'mousedown', this.enableDragger);\r\n methodsEv[methodEv](document, 'mouseup', this.disableDragger);\r\n }\r\n};\r\n","import { isArray } from 'underscore';\r\n\r\nexport default {\r\n run(ed, sender, opts = {}) {\r\n let components = opts.component || ed.getSelectedAll();\r\n components = isArray(components) ? [...components] : [components];\r\n\r\n // It's important to deselect components first otherwise,\r\n // with undo, the component will be set with the wrong `collection`\r\n ed.select(null);\r\n\r\n components.forEach(component => {\r\n if (!component || !component.get('removable')) {\r\n console.warn('The element is not removable', component);\r\n return;\r\n }\r\n if (component) {\r\n const coll = component.collection;\r\n component.trigger('component:destroy');\r\n coll && coll.remove(component);\r\n }\r\n });\r\n\r\n return components;\r\n }\r\n};\r\n","import { keys, bindAll, each, isUndefined } from 'underscore';\r\nimport Dragger from 'utils/Dragger';\r\n\r\nexport default {\r\n run(editor, sender, opts = {}) {\r\n bindAll(\r\n this,\r\n 'setPosition',\r\n 'onStart',\r\n 'onDrag',\r\n 'onEnd',\r\n 'getPosition',\r\n 'getGuidesStatic',\r\n 'renderGuide',\r\n 'getGuidesTarget'\r\n );\r\n const { target, event, mode, dragger = {} } = opts;\r\n const el = target.getEl();\r\n const config = {\r\n doc: el.ownerDocument,\r\n onStart: this.onStart,\r\n onEnd: this.onEnd,\r\n onDrag: this.onDrag,\r\n getPosition: this.getPosition,\r\n setPosition: this.setPosition,\r\n guidesStatic: () => this.guidesStatic,\r\n guidesTarget: () => this.guidesTarget,\r\n ...dragger\r\n };\r\n this.setupGuides();\r\n this.opts = opts;\r\n this.editor = editor;\r\n this.em = editor.getModel();\r\n this.target = target;\r\n this.isTran = mode == 'translate';\r\n this.guidesContainer = this.getGuidesContainer();\r\n this.guidesTarget = this.getGuidesTarget();\r\n this.guidesStatic = this.getGuidesStatic();\r\n window.guidesTarget = this.guidesTarget;\r\n let drg = this.dragger;\r\n\r\n if (!drg) {\r\n drg = new Dragger(config);\r\n this.dragger = drg;\r\n } else {\r\n drg.setOptions(config);\r\n }\r\n\r\n event && drg.start(event);\r\n this.toggleDrag(1);\r\n\r\n return drg;\r\n },\r\n\r\n stop() {\r\n this.toggleDrag();\r\n },\r\n\r\n setupGuides() {\r\n (this.guides || []).forEach(item => {\r\n const { guide } = item;\r\n guide && guide.parentNode.removeChild(guide);\r\n });\r\n this.guides = [];\r\n },\r\n\r\n getGuidesContainer() {\r\n let { guidesEl } = this;\r\n\r\n if (!guidesEl) {\r\n const { editor, em, opts } = this;\r\n const pfx = editor.getConfig('stylePrefix');\r\n const elInfoX = document.createElement('div');\r\n const elInfoY = document.createElement('div');\r\n const guideContent = `
\r\n
\r\n
`;\r\n guidesEl = document.createElement('div');\r\n guidesEl.className = `${pfx}guides`;\r\n elInfoX.className = `${pfx}guide-info ${pfx}guide-info__x`;\r\n elInfoY.className = `${pfx}guide-info ${pfx}guide-info__y`;\r\n elInfoX.innerHTML = guideContent;\r\n elInfoY.innerHTML = guideContent;\r\n guidesEl.appendChild(elInfoX);\r\n guidesEl.appendChild(elInfoY);\r\n editor.Canvas.getToolsEl().appendChild(guidesEl);\r\n this.guidesEl = guidesEl;\r\n this.elGuideInfoX = elInfoX;\r\n this.elGuideInfoY = elInfoY;\r\n this.elGuideInfoContentX = elInfoX.querySelector(\r\n `.${pfx}guide-info__content`\r\n );\r\n this.elGuideInfoContentY = elInfoY.querySelector(\r\n `.${pfx}guide-info__content`\r\n );\r\n em.on('canvas:update', () => {\r\n this.updateGuides();\r\n opts.debug && this.guides.forEach(item => this.renderGuide(item));\r\n });\r\n }\r\n\r\n return guidesEl;\r\n },\r\n\r\n getGuidesStatic() {\r\n let result = [];\r\n const el = this.target.getEl();\r\n const { parentNode = {} } = el;\r\n each(\r\n parentNode.children,\r\n item =>\r\n (result = result.concat(el !== item ? this.getElementGuides(item) : []))\r\n );\r\n\r\n return result.concat(this.getElementGuides(parentNode));\r\n },\r\n\r\n getGuidesTarget() {\r\n return this.getElementGuides(this.target.getEl());\r\n },\r\n\r\n updateGuides(guides) {\r\n (guides || this.guides).forEach(item => {\r\n const { origin } = item;\r\n const { top, height, left, width } = editor.Canvas.getElementPos(origin);\r\n\r\n switch (item.type) {\r\n case 't':\r\n return (item.y = top);\r\n case 'b':\r\n return (item.y = top + height);\r\n case 'l':\r\n return (item.x = left);\r\n case 'r':\r\n return (item.x = left + width);\r\n case 'x':\r\n return (item.x = left + width / 2);\r\n case 'y':\r\n return (item.y = top + height / 2);\r\n }\r\n });\r\n },\r\n\r\n getGuidePosUpdate(item, rect) {\r\n const result = {};\r\n const { top, height, left, width } = rect;\r\n\r\n switch (item.type) {\r\n case 't':\r\n result.y = top;\r\n break;\r\n case 'b':\r\n result.y = top + height;\r\n break;\r\n case 'l':\r\n result.x = left;\r\n break;\r\n case 'r':\r\n result.x = left + width;\r\n break;\r\n case 'x':\r\n result.x = left + width / 2;\r\n break;\r\n case 'y':\r\n result.y = top + height / 2;\r\n break;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n renderGuide(item = {}) {\r\n const el = item.guide || document.createElement('div');\r\n const { Canvas } = this.editor;\r\n const { topScroll, top } = Canvas.getRect();\r\n const frameTop = Canvas.getCanvasView().getFrameOffset().top;\r\n const un = 'px';\r\n const guideSize = item.active ? 2 : 1;\r\n let numEl = el.children[0];\r\n el.style = `position: absolute; background-color: ${\r\n item.active ? 'green' : 'red'\r\n };`;\r\n\r\n if (!el.children.length) {\r\n numEl = document.createElement('div');\r\n numEl.style =\r\n 'position: absolute; color: red; padding: 5px; top: 0; left: 0;';\r\n el.appendChild(numEl);\r\n }\r\n\r\n if (item.y) {\r\n el.style.width = '100%';\r\n el.style.height = `${guideSize}${un}`;\r\n el.style.top = `${item.y}${un}`;\r\n el.style.left = 0;\r\n } else {\r\n el.style.width = `${guideSize}${un}`;\r\n el.style.height = '100%';\r\n el.style.left = `${item.x}${un}`;\r\n el.style.top = `${topScroll - frameTop + top}${un}`;\r\n }\r\n\r\n !item.guide && this.guidesContainer.appendChild(el);\r\n return el;\r\n },\r\n\r\n getElementGuides(el) {\r\n const { editor, opts } = this;\r\n const { top, height, left, width } = editor.Canvas.getElementPos(el);\r\n const guides = [\r\n { type: 't', y: top }, // Top\r\n { type: 'b', y: top + height }, // Bottom\r\n { type: 'l', x: left }, // Left\r\n { type: 'r', x: left + width }, // Right\r\n { type: 'x', x: left + width / 2 }, // Mid x\r\n { type: 'y', y: top + height / 2 } // Mid y\r\n ].map(item => ({\r\n ...item,\r\n origin: el,\r\n originRect: editor.Canvas.getElementPos(el),\r\n guide: opts.debug && this.renderGuide(item)\r\n }));\r\n guides.forEach(item => this.guides.push(item));\r\n\r\n return guides;\r\n },\r\n\r\n getTranslate(transform, axis = 'x') {\r\n let result = 0;\r\n (transform || '').split(' ').forEach(item => {\r\n const itemStr = item.trim();\r\n const fn = `translate${axis.toUpperCase()}(`;\r\n if (itemStr.indexOf(fn) === 0)\r\n result = parseFloat(itemStr.replace(fn, ''));\r\n });\r\n return result;\r\n },\r\n\r\n setTranslate(transform, axis, value) {\r\n const fn = `translate${axis.toUpperCase()}(`;\r\n const val = `${fn}${value})`;\r\n let result = (transform || '')\r\n .split(' ')\r\n .map(item => {\r\n const itemStr = item.trim();\r\n if (itemStr.indexOf(fn) === 0) item = val;\r\n return item;\r\n })\r\n .join(' ');\r\n if (result.indexOf(fn) < 0) result += ` ${val}`;\r\n\r\n return result;\r\n },\r\n\r\n getPosition() {\r\n const { target, isTran } = this;\r\n const { left, top, transform } = target.getStyle();\r\n let x = 0;\r\n let y = 0;\r\n\r\n if (isTran) {\r\n x = this.getTranslate(transform);\r\n y = this.getTranslate(transform, 'y');\r\n } else {\r\n x = parseFloat(left);\r\n y = parseFloat(top);\r\n }\r\n\r\n return { x, y };\r\n },\r\n\r\n setPosition({ x, y, end, position, width, height }) {\r\n const { target, isTran } = this;\r\n const unit = 'px';\r\n const en = !end ? 1 : ''; // this will trigger the final change\r\n const left = `${x}${unit}`;\r\n const top = `${y}${unit}`;\r\n\r\n if (isTran) {\r\n let transform = target.getStyle()['transform'] || '';\r\n transform = this.setTranslate(transform, 'x', left);\r\n transform = this.setTranslate(transform, 'y', top);\r\n return target.addStyle({ transform, en }, { avoidStore: !end });\r\n }\r\n\r\n const adds = { position, width, height };\r\n const style = { left, top, en };\r\n keys(adds).forEach(add => {\r\n const prop = adds[add];\r\n if (prop) style[add] = prop;\r\n });\r\n target.addStyle(style, { avoidStore: !end });\r\n },\r\n\r\n onStart() {\r\n const { target, editor, isTran, opts } = this;\r\n const { center } = opts;\r\n const { Canvas } = editor;\r\n const style = target.getStyle();\r\n const position = 'absolute';\r\n if (isTran) return;\r\n\r\n if (style.position !== position) {\r\n let { left, top, width, height } = Canvas.offset(target.getEl());\r\n\r\n // Check if to center the target to the pointer position\r\n if (center) {\r\n const { x, y } = Canvas.getMouseRelativeCanvas(event);\r\n left = x;\r\n top = y;\r\n }\r\n\r\n this.setPosition({\r\n x: left,\r\n y: top,\r\n width: `${width}px`,\r\n height: `${height}px`,\r\n position\r\n });\r\n }\r\n },\r\n\r\n onDrag(...args) {\r\n const { guidesTarget, opts } = this;\r\n const { onDrag } = opts;\r\n this.updateGuides(guidesTarget);\r\n opts.debug && guidesTarget.forEach(item => this.renderGuide(item));\r\n opts.guidesInfo &&\r\n this.renderGuideInfo(guidesTarget.filter(item => item.active));\r\n onDrag && onDrag(...args);\r\n },\r\n\r\n onEnd(...args) {\r\n const { editor, opts, id } = this;\r\n const { onEnd } = opts;\r\n onEnd && onEnd(...args);\r\n editor.stopCommand(id);\r\n this.hideGuidesInfo();\r\n },\r\n\r\n hideGuidesInfo() {\r\n ['X', 'Y'].forEach(item => {\r\n const guide = this[`elGuideInfo${item}`];\r\n if (guide) guide.style.display = 'none';\r\n });\r\n },\r\n\r\n /**\r\n * Render guides with spacing information\r\n */\r\n renderGuideInfo(guides = []) {\r\n const { guidesStatic, editor } = this;\r\n this.hideGuidesInfo();\r\n\r\n guides.forEach(item => {\r\n const { origin, x } = item;\r\n const rectOrigin = editor.Canvas.getElementPos(origin);\r\n const axis = isUndefined(x) ? 'y' : 'x';\r\n const isY = axis === 'y';\r\n const origEdge1 = rectOrigin[isY ? 'left' : 'top'];\r\n const origEdge1Raw = rectOrigin.rect[isY ? 'left' : 'top'];\r\n const origEdge2 = isY\r\n ? origEdge1 + rectOrigin.width\r\n : origEdge1 + rectOrigin.height;\r\n const origEdge2Raw = isY\r\n ? origEdge1Raw + rectOrigin.rect.width\r\n : origEdge1Raw + rectOrigin.rect.height;\r\n const elGuideInfo = this[`elGuideInfo${axis.toUpperCase()}`];\r\n const elGuideInfoCnt = this[`elGuideInfoContent${axis.toUpperCase()}`];\r\n const guideInfoStyle = elGuideInfo.style;\r\n\r\n // Find the nearest element\r\n const res = guidesStatic\r\n .filter(stat => stat[axis] === item[axis])\r\n .map(stat => {\r\n const { left, width, top, height } = stat.originRect;\r\n const statEdge1 = isY ? left : top;\r\n const statEdge2 = isY ? left + width : top + height;\r\n return {\r\n gap:\r\n statEdge2 < origEdge1\r\n ? origEdge1 - statEdge2\r\n : statEdge1 - origEdge2,\r\n guide: stat\r\n };\r\n })\r\n .filter(item => item.gap > 0)\r\n .sort((a, b) => a.gap - b.gap)\r\n .map(item => item.guide)[0];\r\n\r\n if (res) {\r\n const { left, width, top, height, rect } = res.originRect;\r\n const isEdge1 = isY ? left < rectOrigin.left : top < rectOrigin.top;\r\n const statEdge1 = isY ? left : top;\r\n const statEdge1Raw = isY ? rect.left : rect.top;\r\n const statEdge2 = isY ? left + width : top + height;\r\n const statEdge2Raw = isY\r\n ? rect.left + rect.width\r\n : rect.top + rect.height;\r\n const pos2 = `${isY ? item.y : item.x}px`;\r\n const size = isEdge1 ? origEdge1 - statEdge2 : statEdge1 - origEdge2;\r\n const sizeRaw = isEdge1\r\n ? origEdge1Raw - statEdge2Raw\r\n : statEdge1Raw - origEdge2Raw;\r\n guideInfoStyle.display = '';\r\n guideInfoStyle[isY ? 'top' : 'left'] = pos2;\r\n guideInfoStyle[isY ? 'left' : 'top'] = `${\r\n isEdge1 ? statEdge2 : origEdge2\r\n }px`;\r\n guideInfoStyle[isY ? 'width' : 'height'] = `${size}px`;\r\n elGuideInfoCnt.innerHTML = `${Math.round(sizeRaw)}px`;\r\n }\r\n });\r\n },\r\n\r\n toggleDrag(enable) {\r\n const { ppfx, editor } = this;\r\n const methodCls = enable ? 'add' : 'remove';\r\n const classes = [`${ppfx}is__grabbing`];\r\n const { Canvas } = editor;\r\n const body = Canvas.getBody();\r\n classes.forEach(cls => body.classList[methodCls](cls));\r\n Canvas[enable ? 'startAutoscroll' : 'stopAutoscroll']();\r\n }\r\n};\r\n","export default {\r\n run(ed) {\r\n if (!ed.Canvas.hasFocus()) return;\r\n const toSelect = [];\r\n\r\n ed.getSelectedAll().forEach(component => {\r\n const coll = component.components();\r\n const next = coll && coll.at(0);\r\n next && toSelect.push(next);\r\n });\r\n\r\n toSelect.length && ed.select(toSelect);\r\n }\r\n};\r\n","export default {\r\n run(ed, snd, opts = {}) {\r\n if (!ed.Canvas.hasFocus() && !opts.force) return;\r\n const toSelect = [];\r\n\r\n ed.getSelectedAll().forEach(component => {\r\n let next = component.parent();\r\n\r\n // Recurse through the parent() chain until a selectable parent is found\r\n while (next && !next.get('selectable')) {\r\n next = next.parent();\r\n }\r\n\r\n next && toSelect.push(next);\r\n });\r\n\r\n toSelect.length && ed.select(toSelect);\r\n }\r\n};\r\n","export default {\r\n run(ed) {\r\n if (!ed.Canvas.hasFocus()) return;\r\n const toSelect = [];\r\n\r\n ed.getSelectedAll().forEach(component => {\r\n const coll = component.collection;\r\n const at = coll.indexOf(component);\r\n const next = coll.at(at + 1);\r\n toSelect.push(next || component);\r\n });\r\n\r\n toSelect.length && ed.select(toSelect);\r\n }\r\n};\r\n","export default {\r\n run(ed) {\r\n if (!ed.Canvas.hasFocus()) return;\r\n const toSelect = [];\r\n\r\n ed.getSelectedAll().forEach(component => {\r\n const coll = component.collection;\r\n const at = coll.indexOf(component);\r\n const next = coll.at(at - 1);\r\n toSelect.push(next && at - 1 >= 0 ? next : component);\r\n });\r\n\r\n toSelect.length && ed.select(toSelect);\r\n }\r\n};\r\n","import { isArray } from 'underscore';\r\n\r\nexport default {\r\n run(ed, sender, opts = {}) {\r\n const { target } = opts;\r\n const dc = ed.DomComponents;\r\n const type = target.get('type');\r\n const len = dc.getWrapper().find(`[data-gjs-type=\"${type}\"]`).length;\r\n const toRemove = [];\r\n\r\n if (!len) {\r\n const rules = ed.CssComposer.getAll();\r\n let toClear = target.get('style-signature');\r\n toClear = isArray(toClear) ? toClear : [toClear];\r\n\r\n rules.forEach(rule => {\r\n const selector = rule.selectorsToString();\r\n toClear.forEach(part => {\r\n part && selector.indexOf(part) >= 0 && toRemove.push(rule);\r\n });\r\n });\r\n\r\n rules.remove(toRemove);\r\n }\r\n\r\n return toRemove;\r\n }\r\n};\r\n","export default {\r\n run(ed) {\r\n const em = ed.getModel();\r\n const models = [...ed.getSelectedAll()];\r\n\r\n if (models.length) {\r\n em.set('clipboard', models);\r\n }\r\n }\r\n};\r\n","import { extend, bindAll } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport SelectComponent from './SelectComponent';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default extend({}, SelectComponent, {\r\n init(o) {\r\n bindAll(this, 'startDelete', 'stopDelete', 'onDelete');\r\n this.hoverClass = this.pfx + 'hover-delete';\r\n this.badgeClass = this.pfx + 'badge-red';\r\n },\r\n\r\n enable() {\r\n var that = this;\r\n this.$el\r\n .find('*')\r\n .mouseover(this.startDelete)\r\n .mouseout(this.stopDelete)\r\n .click(this.onDelete);\r\n },\r\n\r\n /**\r\n * Start command\r\n * @param {Object} e\r\n * @private\r\n */\r\n startDelete(e) {\r\n e.stopPropagation();\r\n var $this = $(e.target);\r\n\r\n // Show badge if possible\r\n if ($this.data('model').get('removable')) {\r\n $this.addClass(this.hoverClass);\r\n this.attachBadge($this.get(0));\r\n }\r\n },\r\n\r\n /**\r\n * Stop command\r\n * @param {Object} e\r\n * @private\r\n */\r\n stopDelete(e) {\r\n e.stopPropagation();\r\n var $this = $(e.target);\r\n $this.removeClass(this.hoverClass);\r\n\r\n // Hide badge if possible\r\n if (this.badge) this.badge.css({ left: -1000, top: -1000 });\r\n },\r\n\r\n /**\r\n * Delete command\r\n * @param {Object} e\r\n * @private\r\n */\r\n onDelete(e) {\r\n e.stopPropagation();\r\n var $this = $(e.target);\r\n\r\n // Do nothing in case can't remove\r\n if (!$this.data('model').get('removable')) return;\r\n\r\n $this.data('model').destroy();\r\n this.removeBadge();\r\n this.clean();\r\n },\r\n\r\n /**\r\n * Updates badge label\r\n * @param {Object} model\r\n * @private\r\n * */\r\n updateBadgeLabel(model) {\r\n this.badge.html('Remove ' + model.getName());\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor, sender) {\r\n var command = sender.id;\r\n editor.editor.set('device', command);\r\n },\r\n\r\n stop() {}\r\n};\r\n","import { isElement } from 'underscore';\r\n\r\nexport default {\r\n /**\r\n * Check if fullscreen mode is enabled\r\n * @return {Boolean}\r\n */\r\n isEnabled() {\r\n var d = document;\r\n if (\r\n d.fullscreenElement ||\r\n d.webkitFullscreenElement ||\r\n d.mozFullScreenElement\r\n )\r\n return 1;\r\n else return 0;\r\n },\r\n\r\n /**\r\n * Enable fullscreen mode and return browser prefix\r\n * @param {HTMLElement} el\r\n * @return {string}\r\n */\r\n enable(el) {\r\n var pfx = '';\r\n if (el.requestFullscreen) el.requestFullscreen();\r\n else if (el.webkitRequestFullscreen) {\r\n pfx = 'webkit';\r\n el.webkitRequestFullscreen();\r\n } else if (el.mozRequestFullScreen) {\r\n pfx = 'moz';\r\n el.mozRequestFullScreen();\r\n } else if (el.msRequestFullscreen) el.msRequestFullscreen();\r\n else console.warn('Fullscreen not supported');\r\n return pfx;\r\n },\r\n\r\n /**\r\n * Disable fullscreen mode\r\n */\r\n disable() {\r\n const d = document;\r\n if (this.isEnabled()) {\r\n if (d.exitFullscreen) d.exitFullscreen();\r\n else if (d.webkitExitFullscreen) d.webkitExitFullscreen();\r\n else if (d.mozCancelFullScreen) d.mozCancelFullScreen();\r\n else if (d.msExitFullscreen) d.msExitFullscreen();\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the state of the fullscreen is changed. Inside detects if\r\n * it's enabled\r\n * @param {strinf} pfx Browser prefix\r\n * @param {Event} e\r\n */\r\n fsChanged(pfx, e) {\r\n var d = document;\r\n var ev = (pfx || '') + 'fullscreenchange';\r\n if (!this.isEnabled()) {\r\n this.stop(null, this.sender);\r\n document.removeEventListener(ev, this.fsChanged);\r\n }\r\n },\r\n\r\n run(editor, sender, opts = {}) {\r\n this.sender = sender;\r\n const { target } = opts;\r\n const targetEl = isElement(target)\r\n ? target\r\n : document.querySelector(target);\r\n const pfx = this.enable(targetEl || editor.getContainer());\r\n this.fsChanged = this.fsChanged.bind(this, pfx);\r\n document.addEventListener(pfx + 'fullscreenchange', this.fsChanged);\r\n editor.trigger('change:canvasOffset');\r\n },\r\n\r\n stop(editor, sender) {\r\n if (sender && sender.set) sender.set('active', false);\r\n this.disable();\r\n if (editor) editor.trigger('change:canvasOffset');\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport StateManager from '../../state_manager';\r\nimport State from '../../state_manager/model/State';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(em, sender, opts = {}) {\r\n sender && sender.set && sender.set('active', 0);\r\n const config = em.getConfig();\r\n const modal = em.Modal;\r\n const pfx = config.stylePrefix;\r\n this.cm = em.CodeManager || null;\r\n this.em = em;\r\n\r\n if (!this.$editors) {\r\n const oHtmlEd = this.buildEditor('htmlmixed', 'hopscotch', 'HTML', 0);\r\n const oCsslEd = this.buildEditor('css', 'hopscotch', 'CSS', 0);\r\n this.htmlEditor = oHtmlEd.el;\r\n this.cssEditor = oCsslEd.el;\r\n const $editors = $(`
`);\r\n const $button = $(`
Save
`);\r\n this.$importButton = $button;\r\n $editors.append(oHtmlEd.$el).append(oCsslEd.$el);\r\n $editors.append($button);\r\n this.$editors = $editors;\r\n }\r\n\r\n modal\r\n .open({\r\n title: config.codeEditorHeading,\r\n content: this.$editors\r\n })\r\n .getModel()\r\n .once('change:open', () => em.stopCommand(this.id));\r\n this.htmlEditor.setContent(em.getHtml());\r\n this.cssEditor.setContent(editor.getCss());\r\n this.$importButton.off('click').on('click', this.onImportClick.bind(this));\r\n },\r\n\r\n onImportClick(e) {\r\n console.log('import button clicked');\r\n var html = this.htmlEditor.editor.getValue();\r\n var css = ``;\r\n var code = html + css;\r\n var states = StateManager.stateJson(this.em);\r\n this.em.CssComposer.clear();\r\n this.em.DomComponents.getWrapper().set('content', '');\r\n this.em.setComponents(code.trim());\r\n this.em.Modal.close();\r\n StateManager.init(this.em, states);\r\n },\r\n\r\n stop(em) {\r\n const modal = em.Modal;\r\n modal && modal.close();\r\n },\r\n\r\n buildEditor(codeName, theme, label, readOnly) {\r\n const input = document.createElement('textarea');\r\n !this.codeMirror && (this.codeMirror = this.cm.getViewer('CodeMirror'));\r\n const el = this.codeMirror.clone().set({\r\n label,\r\n codeName,\r\n theme,\r\n input,\r\n readOnly\r\n });\r\n\r\n const $el = new this.cm.EditorView({\r\n model: el,\r\n config: this.cm.getConfig()\r\n }).render().$el;\r\n\r\n el.init(input);\r\n\r\n return { el, $el };\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport Marketplace from '../../marketplace';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor, sender, opts = {}) {\r\n var command_type = opts.command;\r\n switch (command_type) {\r\n case 'add-to-marketplace':\r\n let control_id = $('.is-component-selected').data('control_id');\r\n Marketplace.addupdateTemplate(control_id);\r\n break;\r\n\r\n case 'view-marketplace':\r\n Marketplace.openMarketPlace(1);\r\n break;\r\n\r\n case 'open-template-preview':\r\n Marketplace.openPreview(opts);\r\n break;\r\n default:\r\n console.log(opts);\r\n break;\r\n }\r\n }\r\n};\r\n","import { extend, bindAll } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport { on, off } from 'utils/mixins';\r\nimport SelectComponent from './SelectComponent';\r\nimport SelectPosition from './SelectPosition';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default extend({}, SelectPosition, SelectComponent, {\r\n init(o) {\r\n SelectComponent.init.apply(this, arguments);\r\n bindAll(this, 'initSorter', 'rollback', 'onEndMove');\r\n this.opt = o;\r\n this.hoverClass = this.ppfx + 'highlighter-warning';\r\n this.badgeClass = this.ppfx + 'badge-warning';\r\n this.noSelClass = this.ppfx + 'no-select';\r\n },\r\n\r\n enable(...args) {\r\n SelectComponent.enable.apply(this, args);\r\n this.getBadgeEl().addClass(this.badgeClass);\r\n this.getHighlighterEl().addClass(this.hoverClass);\r\n var wp = this.$wrapper;\r\n wp.css('cursor', 'move');\r\n wp.on('mousedown', this.initSorter);\r\n\r\n // Avoid strange moving behavior\r\n wp.addClass(this.noSelClass);\r\n },\r\n\r\n /**\r\n * Overwrite for doing nothing\r\n * @private\r\n */\r\n toggleClipboard() {},\r\n\r\n /**\r\n * Delegate sorting\r\n * @param {Event} e\r\n * @private\r\n * */\r\n initSorter(e) {\r\n var el = $(e.target).data('model');\r\n var drag = el.get('draggable');\r\n if (!drag) return;\r\n\r\n // Avoid badge showing on move\r\n this.cacheEl = null;\r\n this.startSelectPosition(e.target, this.frameEl.contentDocument);\r\n this.sorter.draggable = drag;\r\n this.sorter.onEndMove = this.onEndMove.bind(this);\r\n this.stopSelectComponent();\r\n this.$wrapper.off('mousedown', this.initSorter);\r\n on(this.getContentWindow(), 'keydown', this.rollback);\r\n },\r\n\r\n /**\r\n * Init sorter from model\r\n * @param {Object} model\r\n * @private\r\n */\r\n initSorterFromModel(model) {\r\n var drag = model.get('draggable');\r\n if (!drag) return;\r\n // Avoid badge showing on move\r\n this.cacheEl = null;\r\n var el = model.view.el;\r\n this.startSelectPosition(el, this.frameEl.contentDocument);\r\n this.sorter.draggable = drag;\r\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\r\n\r\n /*\r\n this.sorter.setDragHelper(el);\r\n var dragHelper = this.sorter.dragHelper;\r\n dragHelper.className = this.ppfx + 'drag-helper';\r\n dragHelper.innerHTML = '';\r\n dragHelper.backgroundColor = 'white';\r\n */\r\n\r\n this.stopSelectComponent();\r\n on(this.getContentWindow(), 'keydown', this.rollback);\r\n },\r\n\r\n /**\r\n * Init sorter from models\r\n * @param {Object} model\r\n * @private\r\n */\r\n initSorterFromModels(models) {\r\n // TODO: if one only check for `draggable`\r\n // Avoid badge showing on move\r\n this.cacheEl = null;\r\n const lastModel = models[models.length - 1];\r\n const doc = this.frameEl.contentDocument;\r\n this.startSelectPosition(lastModel.view.el, doc);\r\n this.sorter.draggable = lastModel.get('draggable');\r\n this.sorter.toMove = models;\r\n this.sorter.onEndMove = this.onEndMoveFromModel.bind(this);\r\n this.stopSelectComponent();\r\n on(this.getContentWindow(), 'keydown', this.rollback);\r\n },\r\n\r\n onEndMoveFromModel() {\r\n off(this.getContentWindow(), 'keydown', this.rollback);\r\n },\r\n\r\n /**\r\n * Callback after sorting\r\n * @private\r\n */\r\n onEndMove() {\r\n this.enable();\r\n off(this.getContentWindow(), 'keydown', this.rollback);\r\n },\r\n\r\n /**\r\n * Say what to do after the component was selected (selectComponent)\r\n * @param {Event} e\r\n * @param {Object} Selected element\r\n * @private\r\n * */\r\n onSelect(e, el) {},\r\n\r\n /**\r\n * Used to bring the previous situation before start moving the component\r\n * @param {Event} e\r\n * @param {Boolean} Indicates if rollback in anycase\r\n * @private\r\n * */\r\n rollback(e, force) {\r\n var key = e.which || e.keyCode;\r\n if (key == 27 || force) {\r\n this.sorter.moved = false;\r\n this.sorter.endMove();\r\n }\r\n return;\r\n },\r\n\r\n /**\r\n * Returns badge element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getBadgeEl() {\r\n if (!this.$badge) this.$badge = $(this.getBadge());\r\n return this.$badge;\r\n },\r\n\r\n /**\r\n * Returns highlighter element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getHighlighterEl() {\r\n if (!this.$hl) this.$hl = $(this.canvas.getHighlighter());\r\n return this.$hl;\r\n },\r\n\r\n stop(...args) {\r\n SelectComponent.stop.apply(this, args);\r\n this.getBadgeEl().removeClass(this.badgeClass);\r\n this.getHighlighterEl().removeClass(this.hoverClass);\r\n var wp = this.$wrapper;\r\n wp.css('cursor', '')\r\n .unbind()\r\n .removeClass(this.noSelClass);\r\n }\r\n});\r\n","export default {\r\n run(editor, sender, opts = {}) {\r\n const modal = editor.Modal;\r\n const am = editor.AssetManager;\r\n const config = am.getConfig();\r\n const amContainer = am.getContainer();\r\n const title = opts.modalTitle || config.modalTitle || '';\r\n const types = opts.types;\r\n const accept = opts.accept;\r\n\r\n am.setTarget(opts.target);\r\n am.onClick(opts.onClick);\r\n am.onDblClick(opts.onDblClick);\r\n am.onSelect(opts.onSelect);\r\n\r\n if (!this.rendered || types) {\r\n let assets = am.getAll().filter(i => 1);\r\n\r\n if (types && types.length) {\r\n assets = assets.filter(a => types.indexOf(a.get('type')) !== -1);\r\n }\r\n\r\n am.render(assets);\r\n this.rendered = 1;\r\n }\r\n\r\n if (accept) {\r\n const uploadEl = amContainer.querySelector(\r\n `input#${config.stylePrefix}uploadFile`\r\n );\r\n uploadEl && uploadEl.setAttribute('accept', accept);\r\n }\r\n\r\n modal\r\n .open({\r\n title,\r\n content: amContainer\r\n })\r\n .getModel()\r\n .once('change:open', () => editor.stopCommand(this.id));\r\n return this;\r\n },\r\n\r\n stop(editor) {\r\n editor.Modal.close();\r\n return this;\r\n }\r\n};\r\n","export default {\r\n run(editor, sender) {\r\n const bm = editor.BlockManager;\r\n const pn = editor.Panels;\r\n\r\n if (!this.blocks) {\r\n bm.render();\r\n const id = 'views-container';\r\n const blocks = document.createElement('div');\r\n const panels = pn.getPanel(id) || pn.addPanel({ id });\r\n blocks.appendChild(bm.getContainer());\r\n panels.set('appendContent', blocks).trigger('change:appendContent');\r\n this.blocks = blocks;\r\n }\r\n\r\n this.blocks.style.display = 'block';\r\n },\r\n\r\n stop() {\r\n const blocks = this.blocks;\r\n blocks && (blocks.style.display = 'none');\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport Layers from 'navigator';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor) {\r\n const lm = editor.LayerManager;\r\n const pn = editor.Panels;\r\n\r\n if (!this.layers) {\r\n const id = 'views-container';\r\n const layers = document.createElement('div');\r\n const panels = pn.getPanel(id) || pn.addPanel({ id });\r\n layers.appendChild(lm.render());\r\n panels.set('appendContent', layers).trigger('change:appendContent');\r\n this.layers = layers;\r\n }\r\n\r\n this.layers.style.display = 'block';\r\n },\r\n\r\n stop() {\r\n const layers = this.layers;\r\n layers && (layers.style.display = 'none');\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport StyleManager from 'style_manager';\r\nimport StateManager from '../../state_manager';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(em, sender) {\r\n this.sender = sender;\r\n if (!this.$cn) {\r\n var config = em.getConfig(),\r\n panels = em.Panels;\r\n // Main container\r\n this.$cn = $('
');\r\n // Secondary container\r\n this.$cn2 = $('
');\r\n this.$cn.append(this.$cn2);\r\n\r\n // Device Manager\r\n // var dvm = em.DeviceManager;\r\n // if (dvm && config.showDevices) {\r\n // var devicePanel = panels.addPanel({ id: 'devices-c' });\r\n // devicePanel\r\n // .set('appendContent', dvm.render())\r\n // .trigger('change:appendContent');\r\n // }\r\n\r\n // Class Manager container\r\n var clm = em.SelectorManager;\r\n if (clm) this.$cn2.append(clm.render([]));\r\n\r\n // state manager container\r\n var stm = StateManager.getStateView(em);\r\n if (stm) this.$cn2.append(stm.$el);\r\n\r\n this.$cn2.append(em.StyleManager.render());\r\n var smConfig = em.StyleManager.getConfig();\r\n const pfx = smConfig.stylePrefix;\r\n // Create header\r\n this.$header = $(\r\n `
${smConfig.textNoElement}
`\r\n );\r\n this.$cn.append(this.$header);\r\n\r\n // Create panel if not exists\r\n if (!panels.getPanel('views-container'))\r\n this.panel = panels.addPanel({ id: 'views-container' });\r\n else this.panel = panels.getPanel('views-container');\r\n\r\n // Add all containers to the panel\r\n this.panel.set('appendContent', this.$cn).trigger('change:appendContent');\r\n\r\n this.target = em.editor;\r\n this.listenTo(this.target, 'component:toggled', this.toggleSm);\r\n }\r\n this.toggleSm();\r\n },\r\n\r\n /**\r\n * Toggle Style Manager visibility\r\n * @private\r\n */\r\n toggleSm() {\r\n const { target, sender } = this;\r\n if (sender && sender.get && !sender.get('active')) return;\r\n\r\n if (target.getSelectedAll().length === 1) {\r\n this.$cn2.show();\r\n this.$header.hide();\r\n } else {\r\n this.$cn2.hide();\r\n this.$header.show();\r\n }\r\n },\r\n\r\n stop() {\r\n // Hide secondary container if exists\r\n if (this.$cn2) this.$cn2.hide();\r\n\r\n // Hide header container if exists\r\n if (this.$header) this.$header.hide();\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor, sender) {\r\n this.sender = sender;\r\n\r\n var config = editor.Config;\r\n var pfx = config.stylePrefix;\r\n var tm = editor.TraitManager;\r\n var panelC;\r\n\r\n if (!this.$cn) {\r\n var tmView = tm.getTraitsViewer();\r\n var confTm = tm.getConfig();\r\n this.$cn = $('
');\r\n this.$cn2 = $('
');\r\n this.$cn.append(this.$cn2);\r\n this.$header = $('
').append(\r\n `
${confTm.textNoElement}
`\r\n );\r\n this.$cn.append(this.$header);\r\n this.$cn2.append(\r\n `
${confTm.labelContainer}
\r\n
  • Fields marked in red are mendatory
  • All property name should be unique
  • Special characters are not allowed
  • `\r\n );\r\n this.$cn2.append(tmView.render().el);\r\n var panels = editor.Panels;\r\n\r\n if (!panels.getPanel('views-container'))\r\n panelC = panels.addPanel({ id: 'views-container' });\r\n else panelC = panels.getPanel('views-container');\r\n\r\n panelC\r\n .set('appendContent', this.$cn.get(0))\r\n .trigger('change:appendContent');\r\n\r\n this.target = editor.getModel();\r\n this.listenTo(this.target, 'component:toggled', this.toggleTm);\r\n }\r\n\r\n this.toggleTm();\r\n },\r\n\r\n /**\r\n * Toggle Trait Manager visibility\r\n * @private\r\n */\r\n toggleTm() {\r\n const sender = this.sender;\r\n if (sender && sender.get && !sender.get('active')) return;\r\n\r\n if (this.target.getSelectedAll().length === 1) {\r\n this.$cn2.show();\r\n this.$header.hide();\r\n } else {\r\n this.$cn2.hide();\r\n this.$header.show();\r\n }\r\n },\r\n\r\n stop() {\r\n this.$cn2 && this.$cn2.hide();\r\n this.$header && this.$header.hide();\r\n }\r\n};\r\n","import { isArray, contains } from 'underscore';\r\n\r\nexport default {\r\n run(ed) {\r\n const em = ed.getModel();\r\n const clp = em.get('clipboard');\r\n const selected = ed.getSelected();\r\n\r\n if (clp && selected) {\r\n ed.getSelectedAll().forEach(comp => {\r\n if (!comp) return;\r\n const coll = comp.collection;\r\n const at = coll.indexOf(comp) + 1;\r\n const copyable = clp.filter(cop => cop.get('copyable'));\r\n let added;\r\n\r\n if (contains(clp, comp) && comp.get('copyable')) {\r\n added = coll.add(comp.clone(), { at });\r\n } else {\r\n added = coll.add(copyable.map(cop => cop.clone()), { at });\r\n }\r\n\r\n added = isArray(added) ? added : [added];\r\n added.forEach(add => ed.trigger('component:paste', add));\r\n });\r\n\r\n selected.emitUpdate();\r\n }\r\n }\r\n};\r\n","import { each } from 'underscore';\r\n\r\nexport default {\r\n getPanels(editor) {\r\n if (!this.panels) {\r\n this.panels = editor.Panels.getPanelsEl();\r\n }\r\n\r\n return this.panels;\r\n },\r\n\r\n tglPointers(editor, val) {\r\n const body = editor.Canvas.getBody();\r\n const elP = body.querySelectorAll(`.${this.ppfx}no-pointer`);\r\n each(elP, item => (item.style.pointerEvents = val ? '' : 'all'));\r\n },\r\n\r\n run(editor, sender) {\r\n this.sender = sender;\r\n editor.stopCommand('sw-visibility');\r\n editor.getModel().stopDefault();\r\n const panels = this.getPanels(editor);\r\n const canvas = editor.Canvas.getElement();\r\n const editorEl = editor.getEl();\r\n const pfx = editor.Config.stylePrefix;\r\n\r\n if (!this.helper) {\r\n const helper = document.createElement('span');\r\n helper.className = `${pfx}off-prv fa fa-eye-slash`;\r\n editorEl.appendChild(helper);\r\n helper.onclick = () => this.stopCommand();\r\n this.helper = helper;\r\n }\r\n\r\n this.helper.style.display = 'inline-block';\r\n this.tglPointers(editor);\r\n panels.style.display = 'none';\r\n const canvasS = canvas.style;\r\n canvasS.width = '100%';\r\n canvasS.height = '100%';\r\n canvasS.top = '0';\r\n canvasS.left = '0';\r\n canvasS.padding = '0';\r\n canvasS.margin = '0';\r\n editor.refresh();\r\n },\r\n\r\n stop(editor) {\r\n const { sender = {} } = this;\r\n sender.set && sender.set('active', 0);\r\n const panels = this.getPanels(editor);\r\n editor.runCommand('sw-visibility');\r\n editor.getModel().runDefault();\r\n panels.style.display = '';\r\n const canvas = editor.Canvas.getElement();\r\n canvas.setAttribute('style', '');\r\n\r\n if (this.helper) {\r\n this.helper.style.display = 'none';\r\n }\r\n\r\n editor.refresh();\r\n this.tglPointers(editor, 1);\r\n }\r\n};\r\n","export default {\r\n run(editor, sender, opts) {\r\n var opt = opts || {};\r\n var el = opt.el || '';\r\n var canvas = editor.Canvas;\r\n var canvasResizer = this.canvasResizer;\r\n var options = opt.options || {};\r\n var canvasView = canvas.getCanvasView();\r\n options.appendTo = canvas.getResizerEl();\r\n options.prefix = editor.getConfig().stylePrefix;\r\n options.posFetcher = canvasView.getElementPos.bind(canvasView);\r\n options.mousePosFetcher = canvas.getMouseRelativePos;\r\n\r\n // Create the resizer for the canvas if not yet created\r\n if (!canvasResizer || opt.forceNew) {\r\n this.canvasResizer = editor.Utils.Resizer.init(options);\r\n canvasResizer = this.canvasResizer;\r\n }\r\n\r\n canvasResizer.setOptions(options);\r\n canvasResizer.blur();\r\n canvasResizer.focus(el);\r\n return canvasResizer;\r\n },\r\n\r\n stop() {\r\n const resizer = this.canvasResizer;\r\n resizer && resizer.blur();\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport { isTextNode } from 'utils/mixins';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n getOffsetMethod(state) {\r\n var method = state || '';\r\n return 'get' + method + 'OffsetViewerEl';\r\n },\r\n\r\n run(editor, sender, opts) {\r\n var opt = opts || {};\r\n var state = opt.state || '';\r\n var config = editor.getConfig();\r\n const zoom = this.em.getZoomDecimal();\r\n const el = opt.el || '';\r\n\r\n if (\r\n !config.showOffsets ||\r\n isTextNode(el) ||\r\n (!config.showOffsetsSelected && state == 'Fixed')\r\n ) {\r\n editor.stopCommand(this.id, opts);\r\n return;\r\n }\r\n\r\n var canvas = editor.Canvas;\r\n var pos = opt.elPos || canvas.getElementPos(el);\r\n var style = window.getComputedStyle(el);\r\n var ppfx = this.ppfx;\r\n var stateVar = state + 'State';\r\n var method = this.getOffsetMethod(state);\r\n var offsetViewer = canvas[method]();\r\n offsetViewer.style.display = 'block';\r\n\r\n var marginT = this['marginT' + state];\r\n var marginB = this['marginB' + state];\r\n var marginL = this['marginL' + state];\r\n var marginR = this['marginR' + state];\r\n var padT = this['padT' + state];\r\n var padB = this['padB' + state];\r\n var padL = this['padL' + state];\r\n var padR = this['padR' + state];\r\n\r\n if (!this[stateVar]) {\r\n var stateLow = state.toLowerCase();\r\n var marginName = stateLow + 'margin-v';\r\n var paddingName = stateLow + 'padding-v';\r\n var marginV = $(`
    `).get(0);\r\n var paddingV = $(`
    `).get(0);\r\n var marginEls = ppfx + marginName + '-el';\r\n var paddingEls = ppfx + paddingName + '-el';\r\n const fullMargName = `${marginEls} ${ppfx + marginName}`;\r\n const fullPadName = `${paddingEls} ${ppfx + paddingName}`;\r\n marginT = $(`
    `).get(0);\r\n marginB = $(`
    `).get(0);\r\n marginL = $(`
    `).get(0);\r\n marginR = $(`
    `).get(0);\r\n padT = $(`
    `).get(0);\r\n padB = $(`
    `).get(0);\r\n padL = $(`
    `).get(0);\r\n padR = $(`
    `).get(0);\r\n this['marginT' + state] = marginT;\r\n this['marginB' + state] = marginB;\r\n this['marginL' + state] = marginL;\r\n this['marginR' + state] = marginR;\r\n this['padT' + state] = padT;\r\n this['padB' + state] = padB;\r\n this['padL' + state] = padL;\r\n this['padR' + state] = padR;\r\n marginV.appendChild(marginT);\r\n marginV.appendChild(marginB);\r\n marginV.appendChild(marginL);\r\n marginV.appendChild(marginR);\r\n paddingV.appendChild(padT);\r\n paddingV.appendChild(padB);\r\n paddingV.appendChild(padL);\r\n paddingV.appendChild(padR);\r\n offsetViewer.appendChild(marginV);\r\n offsetViewer.appendChild(paddingV);\r\n this[stateVar] = '1';\r\n }\r\n\r\n var unit = 'px';\r\n var marginLeftSt = parseFloat(style.marginLeft.replace(unit, '')) * zoom;\r\n var marginRightSt = parseFloat(style.marginRight.replace(unit, '')) * zoom;\r\n var marginTopSt = parseFloat(style.marginTop.replace(unit, '')) * zoom;\r\n var marginBottomSt =\r\n parseFloat(style.marginBottom.replace(unit, '')) * zoom;\r\n var mtStyle = marginT.style;\r\n var mbStyle = marginB.style;\r\n var mlStyle = marginL.style;\r\n var mrStyle = marginR.style;\r\n var ptStyle = padT.style;\r\n var pbStyle = padB.style;\r\n var plStyle = padL.style;\r\n var prStyle = padR.style;\r\n var posLeft = parseFloat(pos.left);\r\n var widthEl = parseFloat(style.width) * zoom + unit;\r\n\r\n // Margin style\r\n mtStyle.height = marginTopSt + unit;\r\n mtStyle.width = widthEl;\r\n mtStyle.top = pos.top - marginTopSt + unit;\r\n mtStyle.left = posLeft + unit;\r\n\r\n mbStyle.height = marginBottomSt + unit;\r\n mbStyle.width = widthEl;\r\n mbStyle.top = pos.top + pos.height + unit;\r\n mbStyle.left = posLeft + unit;\r\n\r\n var marginSideH = pos.height + marginTopSt + marginBottomSt + unit;\r\n var marginSideT = pos.top - marginTopSt + unit;\r\n mlStyle.height = marginSideH;\r\n mlStyle.width = marginLeftSt + unit;\r\n mlStyle.top = marginSideT;\r\n mlStyle.left = posLeft - marginLeftSt + unit;\r\n\r\n mrStyle.height = marginSideH;\r\n mrStyle.width = marginRightSt + unit;\r\n mrStyle.top = marginSideT;\r\n mrStyle.left = posLeft + pos.width + unit;\r\n\r\n // Padding style\r\n var padTop = parseFloat(style.paddingTop) * zoom;\r\n ptStyle.height = padTop + unit;\r\n ptStyle.width = widthEl;\r\n ptStyle.top = pos.top + unit;\r\n ptStyle.left = posLeft + unit;\r\n\r\n var padBot = parseFloat(style.paddingBottom) * zoom;\r\n pbStyle.height = padBot + unit;\r\n pbStyle.width = widthEl;\r\n pbStyle.top = pos.top + pos.height - padBot + unit;\r\n pbStyle.left = posLeft + unit;\r\n\r\n var padSideH = pos.height - padBot - padTop + unit;\r\n var padSideT = pos.top + padTop + unit;\r\n plStyle.height = padSideH;\r\n plStyle.width = parseFloat(style.paddingLeft) * zoom + unit;\r\n plStyle.top = padSideT;\r\n plStyle.left = pos.left + unit;\r\n\r\n var padRight = parseFloat(style.paddingRight) * zoom;\r\n prStyle.height = padSideH;\r\n prStyle.width = padRight + unit;\r\n prStyle.top = padSideT;\r\n prStyle.left = pos.left + pos.width - padRight + unit;\r\n },\r\n\r\n stop(editor, sender, opts) {\r\n var opt = opts || {};\r\n var state = opt.state || '';\r\n var method = this.getOffsetMethod(state);\r\n var canvas = editor.Canvas;\r\n var offsetViewer = canvas[method]();\r\n offsetViewer.style.display = 'none';\r\n }\r\n};\r\n","import { isEmpty } from 'underscore';\r\n\r\nexport default {\r\n run(em, sender, opts = {}) {\r\n if (opts && opts.sender) {\r\n sender = opts.sender;\r\n }\r\n let command = opts.command;\r\n switch (command) {\r\n case 'recordState':\r\n $('#gjs').addClass('restrict');\r\n let sel = em.getSelected();\r\n let className = sender.get('className');\r\n if (sel) {\r\n let cssc = em.CssComposer;\r\n em.$('#gjs-clm-new')\r\n .val(className)\r\n .trigger('keyup', 13); // adds class to current selected component.\r\n var idRule = cssc.getRule(`.${className}#${sel.getId()}`);\r\n var style = idRule ? idRule.get('style') : {};\r\n var classArr = sel.getClassesForStates();\r\n cssc.getClassRule(classArr).set('style', style);\r\n sel.set('isStateRecording', true);\r\n sel.set('recordingStateName', className);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n },\r\n stop(em, sender, opts) {\r\n if (opts && opts.sender) {\r\n sender = opts.sender;\r\n }\r\n var command = opts.command;\r\n switch (command) {\r\n case 'recordState':\r\n $('#gjs').removeClass('restrict');\r\n let sel = em.getSelected();\r\n let className = sender.get('className');\r\n let isRecording = sel && sel.get('isStateRecording');\r\n if (isRecording) {\r\n let sm = em.SelectorManager;\r\n let cssc = em.CssComposer;\r\n let states = sel.get('customStates');\r\n let recordedState = sel.get('recordedState');\r\n var classArr = sel.getClassesForStates();\r\n cssc.getAll().remove(cssc.getClassRule(classArr)); // removes css.\r\n sel.getSelectors().remove(sm.get(className)); // removes class from component.\r\n if (\r\n em.Config.blockWithStates.indexOf(sel.getId()) === -1 &&\r\n !isEmpty(recordedState)\r\n ) {\r\n em.Config.blockWithStates.push(sel.getId());\r\n }\r\n states = {\r\n ...states,\r\n ...recordedState\r\n };\r\n sel.set('customStates', states);\r\n sel.resetCustomState();\r\n sel.setCssRule(sel.get('customStates'));\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor, sender, opts = {}) {\r\n sender && sender.set && sender.set('active', 0);\r\n var command_type = sender.get('command');\r\n switch (command_type) {\r\n case 'show-sidebar':\r\n editor.ControlManager.openConrolList();\r\n break;\r\n case 'studio-export':\r\n editor.studioPlugin.export();\r\n break;\r\n case 'add-new-control':\r\n editor.studioPlugin.addControl();\r\n break;\r\n case 'edit-control':\r\n editor.studioPlugin.editControl();\r\n break;\r\n case 'save-control':\r\n editor.studioPlugin.saveControl();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\n","var sourceFile = require('../../../config/config');\r\n\r\nexport default {\r\n run(editor, sendor, opts) {\r\n window.open(sourceFile.studioUrl, '_self');\r\n }\r\n};\r\n","export default {\r\n run(ed) {\r\n ed.Canvas.getBody().className = this.ppfx + 'dashed';\r\n },\r\n\r\n stop(ed) {\r\n ed.Canvas.getBody().className = '';\r\n }\r\n};\r\n","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n* console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n* console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter () {\n var emitter = {}\n var _fns = emitter._fns = {}\n\n /**\n * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n * @name emit\n * @param {String} event – the name of the event, with optional namespace\n * @param {...*} data – up to 6 arguments that are passed to the event listener\n * @example\n * emitter.emit('example')\n * emitter.emit('demo:test')\n * emitter.emit('data', { example: true}, 'a string', 1)\n */\n emitter.emit = function emit (event, arg1, arg2, arg3, arg4, arg5, arg6) {\n var toEmit = getListeners(event)\n\n if (toEmit.length) {\n emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6])\n }\n }\n\n /**\n * Create en event listener.\n * @name on\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.on('example', function () {})\n * emitter.on('demo', function () {})\n */\n emitter.on = function on (event, fn) {\n if (!_fns[event]) {\n _fns[event] = []\n }\n\n _fns[event].push(fn)\n }\n\n /**\n * Create en event listener that fires once.\n * @name once\n * @param {String} event\n * @param {Function} fn\n * @example\n * emitter.once('example', function () {})\n * emitter.once('demo', function () {})\n */\n emitter.once = function once (event, fn) {\n function one () {\n fn.apply(this, arguments)\n emitter.off(event, one)\n }\n this.on(event, one)\n }\n\n /**\n * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n * @name off\n * @param {String} event\n * @param {Function} [fn] – the specific handler\n * @example\n * emitter.off('example')\n * emitter.off('demo', function () {})\n */\n emitter.off = function off (event, fn) {\n var keep = []\n\n if (event && fn) {\n var fns = this._fns[event]\n var i = 0\n var l = fns ? fns.length : 0\n\n for (i; i < l; i++) {\n if (fns[i] !== fn) {\n keep.push(fns[i])\n }\n }\n }\n\n keep.length ? this._fns[event] = keep : delete this._fns[event]\n }\n\n function getListeners (e) {\n var out = _fns[e] ? _fns[e] : []\n var idx = e.indexOf(':')\n var args = (idx === -1) ? [e] : [e.substring(0, idx), e.substring(idx + 1)]\n\n var keys = Object.keys(_fns)\n var i = 0\n var l = keys.length\n\n for (i; i < l; i++) {\n var key = keys[i]\n if (key === '*') {\n out = out.concat(_fns[key])\n }\n\n if (args.length === 2 && args[0] === key) {\n out = out.concat(_fns[key])\n break\n }\n }\n\n return out\n }\n\n function emitAll (e, fns, args) {\n var i = 0\n var l = fns.length\n\n for (i; i < l; i++) {\n if (!fns[i]) break\n fns[i].event = e\n fns[i].apply(fns[i], args)\n }\n }\n\n return emitter\n}\n","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","var getFileNameAndExtension = require('./getFileNameAndExtension');\n\nvar mimeTypes = require('./mimeTypes');\n\nmodule.exports = function getFileType(file) {\n var fileExtension = file.name ? getFileNameAndExtension(file.name).extension : null;\n fileExtension = fileExtension ? fileExtension.toLowerCase() : null;\n\n if (file.type) {\n // if mime type is set in the file object already, use that\n return file.type;\n } else if (fileExtension && mimeTypes[fileExtension]) {\n // else, see if we can map extension to a mime type\n return mimeTypes[fileExtension];\n } else {\n // if all fails, fall back to a generic byte stream type\n return 'application/octet-stream';\n }\n};","/**\n * Takes a full filename string and returns an object {name, extension}\n *\n * @param {string} fullFileName\n * @returns {object} {name, extension}\n */\nmodule.exports = function getFileNameAndExtension(fullFileName) {\n var lastDot = fullFileName.lastIndexOf('.'); // these count as no extension: \"no-dot\", \"trailing-dot.\"\n\n if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n return {\n name: fullFileName,\n extension: undefined\n };\n } else {\n return {\n name: fullFileName.slice(0, lastDot),\n extension: fullFileName.slice(lastDot + 1)\n };\n }\n};","// ___Why not add the mime-types package?\n// It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n// https://github.com/jshttp/mime-db/blob/master/db.json\nmodule.exports = {\n md: 'text/markdown',\n markdown: 'text/markdown',\n mp4: 'video/mp4',\n mp3: 'audio/mp3',\n svg: 'image/svg+xml',\n jpg: 'image/jpeg',\n png: 'image/png',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n yaml: 'text/yaml',\n yml: 'text/yaml',\n csv: 'text/csv',\n tsv: 'text/tab-separated-values',\n tab: 'text/tab-separated-values',\n avi: 'video/x-msvideo',\n mks: 'video/x-matroska',\n mkv: 'video/x-matroska',\n mov: 'video/quicktime',\n doc: 'application/msword',\n docm: 'application/vnd.ms-word.document.macroenabled.12',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n dot: 'application/msword',\n dotm: 'application/vnd.ms-word.template.macroenabled.12',\n dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n xla: 'application/vnd.ms-excel',\n xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n xlc: 'application/vnd.ms-excel',\n xlf: 'application/x-xliff+xml',\n xlm: 'application/vnd.ms-excel',\n xls: 'application/vnd.ms-excel',\n xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xlt: 'application/vnd.ms-excel',\n xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n xlw: 'application/vnd.ms-excel',\n txt: 'text/plain',\n text: 'text/plain',\n conf: 'text/plain',\n log: 'text/plain',\n pdf: 'application/pdf'\n};","/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {object} file\n * @returns {string} the fileID\n */\nmodule.exports = function generateFileID(file) {\n // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n // is slower! simple string concatenation is fast\n var id = 'uppy';\n\n if (typeof file.name === 'string') {\n id += '-' + encodeFilename(file.name.toLowerCase());\n }\n\n if (file.type !== undefined) {\n id += '-' + file.type;\n }\n\n if (file.meta && typeof file.meta.relativePath === 'string') {\n id += '-' + encodeFilename(file.meta.relativePath.toLowerCase());\n }\n\n if (file.data.size !== undefined) {\n id += '-' + file.data.size;\n }\n\n if (file.data.lastModified !== undefined) {\n id += '-' + file.data.lastModified;\n }\n\n return id;\n};\n\nfunction encodeFilename(name) {\n var suffix = '';\n return name.replace(/[^A-Z0-9]/ig, function (character) {\n suffix += '-' + encodeCharacter(character);\n return '/';\n }) + suffix;\n}\n\nfunction encodeCharacter(character) {\n return character.charCodeAt(0).toString(32);\n}","var isDOMElement = require('./isDOMElement');\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @returns {Node|null}\n */\n\n\nmodule.exports = function findDOMElement(element, context) {\n if (context === void 0) {\n context = document;\n }\n\n if (typeof element === 'string') {\n return context.querySelector(element);\n }\n\n if (isDOMElement(element)) {\n return element;\n }\n};","/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = function isDOMElement(obj) {\n return obj && typeof obj === 'object' && obj.nodeType === Node.ELEMENT_NODE;\n};","'use strict';\n\nvar _class, _temp;\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 _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\nvar AuthError = require('./AuthError');\n\nvar NetworkError = require('@uppy/utils/lib/NetworkError'); // Remove the trailing slash so we can always safely append /xyz.\n\n\nfunction stripSlash(url) {\n return url.replace(/\\/$/, '');\n}\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function () {\n function RequestClient(uppy, opts) {\n this.uppy = uppy;\n this.opts = opts;\n this.onReceiveResponse = this.onReceiveResponse.bind(this);\n this.allowedHeaders = ['accept', 'content-type', 'uppy-auth-token'];\n this.preflightDone = false;\n }\n\n var _proto = RequestClient.prototype;\n\n _proto.headers = function headers() {\n var userHeaders = this.opts.companionHeaders || this.opts.serverHeaders || {};\n return Promise.resolve(_extends({}, this.defaultHeaders, {}, userHeaders));\n };\n\n _proto._getPostResponseFunc = function _getPostResponseFunc(skip) {\n var _this = this;\n\n return function (response) {\n if (!skip) {\n return _this.onReceiveResponse(response);\n }\n\n return response;\n };\n };\n\n _proto.onReceiveResponse = function onReceiveResponse(response) {\n var state = this.uppy.getState();\n var companion = state.companion || {};\n var host = this.opts.companionUrl;\n var headers = response.headers; // Store the self-identified domain name for the Companion instance we just hit.\n\n if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n var _extends2;\n\n this.uppy.setState({\n companion: _extends({}, companion, (_extends2 = {}, _extends2[host] = headers.get('i-am'), _extends2))\n });\n }\n\n return response;\n };\n\n _proto._getUrl = function _getUrl(url) {\n if (/^(https?:|)\\/\\//.test(url)) {\n return url;\n }\n\n return this.hostname + \"/\" + url;\n };\n\n _proto._json = function _json(res) {\n if (res.status === 401) {\n throw new AuthError();\n }\n\n if (res.status < 200 || res.status > 300) {\n var errMsg = \"Failed request with status: \" + res.status + \". \" + res.statusText;\n return res.json().then(function (errData) {\n errMsg = errData.message ? errMsg + \" message: \" + errData.message : errMsg;\n errMsg = errData.requestId ? errMsg + \" request-Id: \" + errData.requestId : errMsg;\n throw new Error(errMsg);\n }).catch(function () {\n throw new Error(errMsg);\n });\n }\n\n return res.json();\n };\n\n _proto.preflight = function preflight(path) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n if (_this2.preflightDone) {\n return resolve(_this2.allowedHeaders.slice());\n }\n\n fetch(_this2._getUrl(path), {\n method: 'OPTIONS'\n }).then(function (response) {\n if (response.headers.has('access-control-allow-headers')) {\n _this2.allowedHeaders = response.headers.get('access-control-allow-headers').split(',').map(function (headerName) {\n return headerName.trim().toLowerCase();\n });\n }\n\n _this2.preflightDone = true;\n resolve(_this2.allowedHeaders.slice());\n }).catch(function (err) {\n _this2.uppy.log(\"[CompanionClient] unable to make preflight request \" + err, 'warning');\n\n _this2.preflightDone = true;\n resolve(_this2.allowedHeaders.slice());\n });\n });\n };\n\n _proto.preflightAndHeaders = function preflightAndHeaders(path) {\n var _this3 = this;\n\n return Promise.all([this.preflight(path), this.headers()]).then(function (_ref) {\n var allowedHeaders = _ref[0],\n headers = _ref[1];\n // filter to keep only allowed Headers\n Object.keys(headers).forEach(function (header) {\n if (allowedHeaders.indexOf(header.toLowerCase()) === -1) {\n _this3.uppy.log(\"[CompanionClient] excluding unallowed header \" + header);\n\n delete headers[header];\n }\n });\n return headers;\n });\n };\n\n _proto.get = function get(path, skipPostResponse) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n _this4.preflightAndHeaders(path).then(function (headers) {\n fetch(_this4._getUrl(path), {\n method: 'get',\n headers: headers,\n credentials: 'same-origin'\n }).catch(function (err) {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n }).then(_this4._getPostResponseFunc(skipPostResponse)).then(function (res) {\n return _this4._json(res).then(resolve);\n }).catch(function (err) {\n err = err.isAuthError ? err : new Error(\"Could not get \" + _this4._getUrl(path) + \". \" + err);\n reject(err);\n });\n }).catch(reject);\n });\n };\n\n _proto.post = function post(path, data, skipPostResponse) {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n _this5.preflightAndHeaders(path).then(function (headers) {\n fetch(_this5._getUrl(path), {\n method: 'post',\n headers: headers,\n credentials: 'same-origin',\n body: JSON.stringify(data)\n }).catch(function (err) {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n }).then(_this5._getPostResponseFunc(skipPostResponse)).then(function (res) {\n return _this5._json(res).then(resolve);\n }).catch(function (err) {\n err = err.isAuthError ? err : new Error(\"Could not post \" + _this5._getUrl(path) + \". \" + err);\n reject(err);\n });\n }).catch(reject);\n });\n };\n\n _proto.delete = function _delete(path, data, skipPostResponse) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n _this6.preflightAndHeaders(path).then(function (headers) {\n fetch(_this6.hostname + \"/\" + path, {\n method: 'delete',\n headers: headers,\n credentials: 'same-origin',\n body: data ? JSON.stringify(data) : null\n }).catch(function (err) {\n if (err.name === 'AbortError') {\n throw err;\n } else {\n throw new NetworkError(err);\n }\n }).then(_this6._getPostResponseFunc(skipPostResponse)).then(function (res) {\n return _this6._json(res).then(resolve);\n }).catch(function (err) {\n err = err.isAuthError ? err : new Error(\"Could not delete \" + _this6._getUrl(path) + \". \" + err);\n reject(err);\n });\n }).catch(reject);\n });\n };\n\n _createClass(RequestClient, [{\n key: \"hostname\",\n get: function get() {\n var _this$uppy$getState = this.uppy.getState(),\n companion = _this$uppy$getState.companion;\n\n var host = this.opts.companionUrl;\n return stripSlash(companion && companion[host] ? companion[host] : host);\n }\n }, {\n key: \"defaultHeaders\",\n get: function get() {\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Uppy-Versions': \"@uppy/companion-client=\" + RequestClient.VERSION\n };\n }\n }]);\n\n return RequestClient;\n}(), _class.VERSION = \"1.4.5\", _temp);","module.exports = function isPreviewSupported(fileType) {\n if (!fileType) return false;\n var fileTypeSpecific = fileType.split('/')[1]; // list of images that browsers can preview\n\n if (/^(jpe?g|gif|png|svg|svg\\+xml|bmp|webp)$/.test(fileTypeSpecific)) {\n return true;\n }\n\n return false;\n};","function _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 cuid = require('cuid'); // Redux action name.\n\n\nvar STATE_UPDATE = 'uppy/STATE_UPDATE'; // Pluck Uppy state from the Redux store in the default location.\n\nvar defaultSelector = function defaultSelector(id) {\n return function (state) {\n return state.uppy[id];\n };\n};\n/**\n * Redux store.\n *\n * @param {object} opts.store - The Redux store to use.\n * @param {string} opts.id - This store instance's ID. Defaults to a random string.\n * If you need to access Uppy state through Redux, eg. to render custom UI, set this to something constant.\n * @param {Function} opts.selector - Function, `(state) => uppyState`, to pluck state from the Redux store.\n * Defaults to retrieving `state.uppy[opts.id]`. Override if you placed Uppy state elsewhere in the Redux store.\n */\n\n\nvar ReduxStore =\n/*#__PURE__*/\nfunction () {\n function ReduxStore(opts) {\n this._store = opts.store;\n this._id = opts.id || cuid();\n this._selector = opts.selector || defaultSelector(this._id); // Initialise the `uppy[id]` state key.\n\n this.setState({});\n }\n\n var _proto = ReduxStore.prototype;\n\n _proto.setState = function setState(patch) {\n this._store.dispatch({\n type: STATE_UPDATE,\n id: this._id,\n payload: patch\n });\n };\n\n _proto.getState = function getState() {\n return this._selector(this._store.getState());\n };\n\n _proto.subscribe = function subscribe(cb) {\n var _this = this;\n\n var prevState = this.getState();\n return this._store.subscribe(function () {\n var nextState = _this.getState();\n\n if (prevState !== nextState) {\n var patch = getPatch(prevState, nextState);\n cb(prevState, nextState, patch);\n prevState = nextState;\n }\n });\n };\n\n return ReduxStore;\n}();\n\nReduxStore.VERSION = \"1.2.1\";\n\nfunction getPatch(prev, next) {\n var nextKeys = Object.keys(next);\n var patch = {};\n nextKeys.forEach(function (k) {\n if (prev[k] !== next[k]) patch[k] = next[k];\n });\n return patch;\n}\n\nfunction reducer(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (action.type === STATE_UPDATE) {\n var _extends2;\n\n var newState = _extends({}, state[action.id], action.payload);\n\n return _extends({}, state, (_extends2 = {}, _extends2[action.id] = newState, _extends2));\n }\n\n return state;\n}\n\nfunction middleware() {\n // Do nothing, at the moment.\n return function () {\n return function (next) {\n return function (action) {\n next(action);\n };\n };\n };\n}\n\nmodule.exports = function createReduxStore(opts) {\n return new ReduxStore(opts);\n};\n\nmodule.exports.STATE_UPDATE = STATE_UPDATE;\nmodule.exports.reducer = reducer;\nmodule.exports.middleware = middleware;","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar DashboardUI = require('./components/Dashboard');\n\nvar StatusBar = require('@uppy/status-bar');\n\nvar Informer = require('@uppy/informer');\n\nvar ThumbnailGenerator = require('@uppy/thumbnail-generator');\n\nvar findAllDOMElements = require('@uppy/utils/lib/findAllDOMElements');\n\nvar toArray = require('@uppy/utils/lib/toArray');\n\nvar getDroppedFiles = require('@uppy/utils/lib/getDroppedFiles');\n\nvar trapFocus = require('./utils/trapFocus');\n\nvar cuid = require('cuid');\n\nvar ResizeObserver = require('resize-observer-polyfill').default || require('resize-observer-polyfill');\n\nvar _require2 = require('./components/icons'),\n defaultPickerIcon = _require2.defaultPickerIcon;\n\nvar createSuperFocus = require('./utils/createSuperFocus');\n\nvar memoize = require('memoize-one').default || require('memoize-one');\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nfunction createPromise() {\n var o = {};\n o.promise = new Promise(function (resolve, reject) {\n o.resolve = resolve;\n o.reject = reject;\n });\n return o;\n}\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Dashboard, _Plugin);\n\n function Dashboard(uppy, _opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, _opts) || this;\n\n _this.setOptions = function (newOpts) {\n _Plugin.prototype.setOptions.call(_assertThisInitialized(_this), newOpts);\n\n _this.i18nInit();\n };\n\n _this.i18nInit = function () {\n _this.translator = new Translator([_this.defaultLocale, _this.uppy.locale, _this.opts.locale]);\n _this.i18n = _this.translator.translate.bind(_this.translator);\n _this.i18nArray = _this.translator.translateArray.bind(_this.translator);\n\n _this.setPluginState(); // so that UI re-renders and we see the updated locale\n\n };\n\n _this.removeTarget = function (plugin) {\n var pluginState = _this.getPluginState(); // filter out the one we want to remove\n\n\n var newTargets = pluginState.targets.filter(function (target) {\n return target.id !== plugin.id;\n });\n\n _this.setPluginState({\n targets: newTargets\n });\n };\n\n _this.addTarget = function (plugin) {\n var callerPluginId = plugin.id || plugin.constructor.name;\n var callerPluginName = plugin.title || callerPluginId;\n var callerPluginType = plugin.type;\n\n if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'presenter') {\n var msg = 'Dashboard: Modal can only be used by plugins of types: acquirer, progressindicator, presenter';\n\n _this.uppy.log(msg, 'error');\n\n return;\n }\n\n var target = {\n id: callerPluginId,\n name: callerPluginName,\n type: callerPluginType\n };\n\n var state = _this.getPluginState();\n\n var newTargets = state.targets.slice();\n newTargets.push(target);\n\n _this.setPluginState({\n targets: newTargets\n });\n\n return _this.el;\n };\n\n _this.hideAllPanels = function () {\n var update = {\n activePickerPanel: false,\n showAddFilesPanel: false,\n activeOverlayType: null\n };\n\n var current = _this.getPluginState();\n\n if (current.activePickerPanel === update.activePickerPanel && current.showAddFilesPanel === update.showAddFilesPanel && current.activeOverlayType === update.activeOverlayType) {\n // avoid doing a state update if nothing changed\n return;\n }\n\n _this.setPluginState(update);\n };\n\n _this.showPanel = function (id) {\n var _this$getPluginState = _this.getPluginState(),\n targets = _this$getPluginState.targets;\n\n var activePickerPanel = targets.filter(function (target) {\n return target.type === 'acquirer' && target.id === id;\n })[0];\n\n _this.setPluginState({\n activePickerPanel: activePickerPanel,\n activeOverlayType: 'PickerPanel'\n });\n };\n\n _this.openModal = function () {\n var _createPromise = createPromise(),\n promise = _createPromise.promise,\n resolve = _createPromise.resolve; // save scroll position\n\n\n _this.savedScrollPosition = window.pageYOffset; // save active element, so we can restore focus when modal is closed\n\n _this.savedActiveElement = document.activeElement;\n\n if (_this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.add('uppy-Dashboard-isFixed');\n }\n\n if (_this.opts.animateOpenClose && _this.getPluginState().isClosing) {\n var handler = function handler() {\n _this.setPluginState({\n isHidden: false\n });\n\n _this.el.removeEventListener('animationend', handler, false);\n\n resolve();\n };\n\n _this.el.addEventListener('animationend', handler, false);\n } else {\n _this.setPluginState({\n isHidden: false\n });\n\n resolve();\n }\n\n if (_this.opts.browserBackButtonClose) {\n _this.updateBrowserHistory();\n } // handle ESC and TAB keys in modal dialog\n\n\n document.addEventListener('keydown', _this.handleKeyDownInModal);\n\n _this.uppy.emit('dashboard:modal-open');\n\n return promise;\n };\n\n _this.closeModal = function (opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n var _opts2 = opts,\n _opts2$manualClose = _opts2.manualClose,\n manualClose = _opts2$manualClose === void 0 ? true : _opts2$manualClose;\n\n var _this$getPluginState2 = _this.getPluginState(),\n isHidden = _this$getPluginState2.isHidden,\n isClosing = _this$getPluginState2.isClosing;\n\n if (isHidden || isClosing) {\n // short-circuit if animation is ongoing\n return;\n }\n\n var _createPromise2 = createPromise(),\n promise = _createPromise2.promise,\n resolve = _createPromise2.resolve;\n\n if (_this.opts.disablePageScrollWhenModalOpen) {\n document.body.classList.remove('uppy-Dashboard-isFixed');\n }\n\n if (_this.opts.animateOpenClose) {\n _this.setPluginState({\n isClosing: true\n });\n\n var handler = function handler() {\n _this.setPluginState({\n isHidden: true,\n isClosing: false\n });\n\n _this.superFocus.cancel();\n\n _this.savedActiveElement.focus();\n\n _this.el.removeEventListener('animationend', handler, false);\n\n resolve();\n };\n\n _this.el.addEventListener('animationend', handler, false);\n } else {\n _this.setPluginState({\n isHidden: true\n });\n\n _this.superFocus.cancel();\n\n _this.savedActiveElement.focus();\n\n resolve();\n } // handle ESC and TAB keys in modal dialog\n\n\n document.removeEventListener('keydown', _this.handleKeyDownInModal);\n\n if (manualClose) {\n if (_this.opts.browserBackButtonClose) {\n // Make sure that the latest entry in the history state is our modal name\n if (history.state && history.state[_this.modalName]) {\n // Go back in history to clear out the entry we created (ultimately closing the modal)\n history.go(-1);\n }\n }\n }\n\n _this.uppy.emit('dashboard:modal-closed');\n\n return promise;\n };\n\n _this.isModalOpen = function () {\n return !_this.getPluginState().isHidden || false;\n };\n\n _this.requestCloseModal = function () {\n if (_this.opts.onRequestCloseModal) {\n return _this.opts.onRequestCloseModal();\n }\n\n return _this.closeModal();\n };\n\n _this.setDarkModeCapability = function (isDarkModeOn) {\n var _this$uppy$getState = _this.uppy.getState(),\n capabilities = _this$uppy$getState.capabilities;\n\n _this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n darkMode: isDarkModeOn\n })\n });\n };\n\n _this.handleSystemDarkModeChange = function (event) {\n var isDarkModeOnNow = event.matches;\n\n _this.uppy.log(\"[Dashboard] Dark mode is \" + (isDarkModeOnNow ? 'on' : 'off'));\n\n _this.setDarkModeCapability(isDarkModeOnNow);\n };\n\n _this.toggleFileCard = function (fileId) {\n if (fileId) {\n _this.uppy.emit('dashboard:file-edit-start');\n } else {\n _this.uppy.emit('dashboard:file-edit-complete');\n }\n\n _this.setPluginState({\n fileCardFor: fileId || null,\n activeOverlayType: fileId ? 'FileCard' : null\n });\n };\n\n _this.toggleAddFilesPanel = function (show) {\n _this.setPluginState({\n showAddFilesPanel: show,\n activeOverlayType: show ? 'AddFiles' : null\n });\n };\n\n _this.addFiles = function (files) {\n var descriptors = files.map(function (file) {\n return {\n source: _this.id,\n name: file.name,\n type: file.type,\n data: file,\n meta: {\n // path of the file relative to the ancestor directory the user selected.\n // e.g. 'docs/Old Prague/airbnb.pdf'\n relativePath: file.relativePath || null\n }\n };\n });\n\n try {\n _this.uppy.addFiles(descriptors);\n } catch (err) {\n _this.uppy.log(err);\n }\n };\n\n _this.startListeningToResize = function () {\n // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n // and update containerWidth/containerHeight in plugin state accordingly.\n // Emits first event on initialization.\n _this.resizeObserver = new ResizeObserver(function (entries, observer) {\n var uppyDashboardInnerEl = entries[0];\n var _uppyDashboardInnerEl = uppyDashboardInnerEl.contentRect,\n width = _uppyDashboardInnerEl.width,\n height = _uppyDashboardInnerEl.height;\n\n _this.uppy.log(\"[Dashboard] resized: \" + width + \" / \" + height, 'debug');\n\n _this.setPluginState({\n containerWidth: width,\n containerHeight: height,\n areInsidesReadyToBeVisible: true\n });\n });\n\n _this.resizeObserver.observe(_this.el.querySelector('.uppy-Dashboard-inner')); // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n\n\n _this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(function () {\n var pluginState = _this.getPluginState();\n\n var isModalAndClosed = !_this.opts.inline && pluginState.isHidden;\n\n if ( // if ResizeObserver hasn't yet fired,\n !pluginState.areInsidesReadyToBeVisible && // and it's not due to the modal being closed\n !isModalAndClosed) {\n _this.uppy.log(\"[Dashboard] resize event didn't fire on time: defaulted to mobile layout\", 'debug');\n\n _this.setPluginState({\n areInsidesReadyToBeVisible: true\n });\n }\n }, 1000);\n };\n\n _this.stopListeningToResize = function () {\n _this.resizeObserver.disconnect();\n\n clearTimeout(_this.makeDashboardInsidesVisibleAnywayTimeout);\n };\n\n _this.recordIfFocusedOnUppyRecently = function (event) {\n if (_this.el.contains(event.target)) {\n _this.ifFocusedOnUppyRecently = true;\n } else {\n _this.ifFocusedOnUppyRecently = false; // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n // Because superFocus is debounced, when we move from Uppy to some other element on the page,\n // previously run superFocus sometimes hits and moves focus back to Uppy.\n\n _this.superFocus.cancel();\n }\n };\n\n _this.updateBrowserHistory = function () {\n // Ensure history state does not already contain our modal name to avoid double-pushing\n if (!history.state || !history.state[_this.modalName]) {\n var _extends2;\n\n // Push to history so that the page is not lost on browser back button press\n history.pushState(_extends({}, history.state, (_extends2 = {}, _extends2[_this.modalName] = true, _extends2)), '');\n } // Listen for back button presses\n\n\n window.addEventListener('popstate', _this.handlePopState, false);\n };\n\n _this.handlePopState = function (event) {\n // Close the modal if the history state no longer contains our modal name\n if (_this.isModalOpen() && (!event.state || !event.state[_this.modalName])) {\n _this.closeModal({\n manualClose: false\n });\n } // When the browser back button is pressed and uppy is now the latest entry in the history but the modal is closed, fix the history by removing the uppy history entry\n // This occurs when another entry is added into the history state while the modal is open, and then the modal gets manually closed\n // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n\n\n if (!_this.isModalOpen() && event.state && event.state[_this.modalName]) {\n history.go(-1);\n }\n };\n\n _this.handleKeyDownInModal = function (event) {\n // close modal on esc key press\n if (event.keyCode === ESC_KEY) _this.requestCloseModal(event); // trap focus on tab key press\n\n if (event.keyCode === TAB_KEY) trapFocus.forModal(event, _this.getPluginState().activeOverlayType, _this.el);\n };\n\n _this.handleClickOutside = function () {\n if (_this.opts.closeModalOnClickOutside) _this.requestCloseModal();\n };\n\n _this.handlePaste = function (event) {\n // 1. Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n _this.uppy.iteratePlugins(function (plugin) {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootPaste(event)\n plugin.handleRootPaste && plugin.handleRootPaste(event);\n }\n }); // 2. Add all dropped files\n\n\n var files = toArray(event.clipboardData.files);\n\n _this.addFiles(files);\n };\n\n _this.handleInputChange = function (event) {\n event.preventDefault();\n var files = toArray(event.target.files);\n\n _this.addFiles(files);\n };\n\n _this.handleDragOver = function (event) {\n event.preventDefault();\n event.stopPropagation(); // 1. Add a small (+) icon on drop\n // (and prevent browsers from interpreting this as files being _moved_ into the browser, https://github.com/transloadit/uppy/issues/1978)\n\n event.dataTransfer.dropEffect = 'copy';\n clearTimeout(_this.removeDragOverClassTimeout);\n\n _this.setPluginState({\n isDraggingOver: true\n });\n };\n\n _this.handleDragLeave = function (event) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(_this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library. Solution with 'pointer-events: none' didn't work across browsers.\n\n _this.removeDragOverClassTimeout = setTimeout(function () {\n _this.setPluginState({\n isDraggingOver: false\n });\n }, 50);\n };\n\n _this.handleDrop = function (event, dropCategory) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(_this.removeDragOverClassTimeout); // 2. Remove dragover class\n\n _this.setPluginState({\n isDraggingOver: false\n }); // 3. Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n\n\n _this.uppy.iteratePlugins(function (plugin) {\n if (plugin.type === 'acquirer') {\n // Every Plugin with .type acquirer can define handleRootDrop(event)\n plugin.handleRootDrop && plugin.handleRootDrop(event);\n }\n }); // 4. Add all dropped files\n\n\n var executedDropErrorOnce = false;\n\n var logDropError = function logDropError(error) {\n _this.uppy.log(error, 'error'); // In practice all drop errors are most likely the same, so let's just show one to avoid overwhelming the user\n\n\n if (!executedDropErrorOnce) {\n _this.uppy.info(error.message, 'error');\n\n executedDropErrorOnce = true;\n }\n };\n\n getDroppedFiles(event.dataTransfer, {\n logDropError: logDropError\n }).then(function (files) {\n if (files.length > 0) {\n _this.uppy.log('[Dashboard] Files were dropped');\n\n _this.addFiles(files);\n }\n });\n };\n\n _this.handleRequestThumbnail = function (file) {\n if (!_this.opts.waitForThumbnailsBeforeUpload) {\n _this.uppy.emit('thumbnail:request', file);\n }\n };\n\n _this.handleCancelThumbnail = function (file) {\n if (!_this.opts.waitForThumbnailsBeforeUpload) {\n _this.uppy.emit('thumbnail:cancel', file);\n }\n };\n\n _this.handleKeyDownInInline = function (event) {\n // Trap focus on tab key press.\n if (event.keyCode === TAB_KEY) trapFocus.forInline(event, _this.getPluginState().activeOverlayType, _this.el);\n };\n\n _this.handlePasteOnBody = function (event) {\n var isFocusInOverlay = _this.el.contains(document.activeElement);\n\n if (isFocusInOverlay) {\n _this.handlePaste(event);\n }\n };\n\n _this.handleComplete = function (_ref) {\n var failed = _ref.failed,\n uploadID = _ref.uploadID;\n\n if (_this.opts.closeAfterFinish && failed.length === 0) {\n // All uploads are done\n _this.requestCloseModal();\n }\n };\n\n _this.initEvents = function () {\n // Modal open button\n if (_this.opts.trigger && !_this.opts.inline) {\n var showModalTrigger = findAllDOMElements(_this.opts.trigger);\n\n if (showModalTrigger) {\n showModalTrigger.forEach(function (trigger) {\n return trigger.addEventListener('click', _this.openModal);\n });\n } else {\n _this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n }\n }\n\n _this.startListeningToResize();\n\n document.addEventListener('paste', _this.handlePasteOnBody);\n\n _this.uppy.on('plugin-remove', _this.removeTarget);\n\n _this.uppy.on('file-added', _this.hideAllPanels);\n\n _this.uppy.on('dashboard:modal-closed', _this.hideAllPanels);\n\n _this.uppy.on('complete', _this.handleComplete); // ___Why fire on capture?\n // Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n\n\n document.addEventListener('focus', _this.recordIfFocusedOnUppyRecently, true);\n document.addEventListener('click', _this.recordIfFocusedOnUppyRecently, true);\n\n if (_this.opts.inline) {\n _this.el.addEventListener('keydown', _this.handleKeyDownInInline);\n }\n };\n\n _this.removeEvents = function () {\n var showModalTrigger = findAllDOMElements(_this.opts.trigger);\n\n if (!_this.opts.inline && showModalTrigger) {\n showModalTrigger.forEach(function (trigger) {\n return trigger.removeEventListener('click', _this.openModal);\n });\n }\n\n _this.stopListeningToResize();\n\n document.removeEventListener('paste', _this.handlePasteOnBody);\n window.removeEventListener('popstate', _this.handlePopState, false);\n\n _this.uppy.off('plugin-remove', _this.removeTarget);\n\n _this.uppy.off('file-added', _this.hideAllPanels);\n\n _this.uppy.off('dashboard:modal-closed', _this.hideAllPanels);\n\n _this.uppy.off('complete', _this.handleComplete);\n\n document.removeEventListener('focus', _this.recordIfFocusedOnUppyRecently);\n document.removeEventListener('click', _this.recordIfFocusedOnUppyRecently);\n\n if (_this.opts.inline) {\n _this.el.removeEventListener('keydown', _this.handleKeyDownInInline);\n }\n };\n\n _this.superFocusOnEachUpdate = function () {\n var isFocusInUppy = _this.el.contains(document.activeElement); // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n\n\n var isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n\n var isInformerHidden = _this.uppy.getState().info.isHidden;\n\n var isModal = !_this.opts.inline;\n\n if ( // If update is connected to showing the Informer - let the screen reader calmly read it.\n isInformerHidden && ( // If we are in a modal - always superfocus without concern for other elements on the page (user is unlikely to want to interact with the rest of the page)\n isModal || // If we are already inside of Uppy, or\n isFocusInUppy || // If we are not focused on anything BUT we have already, at least once, focused on uppy\n // 1. We focus when isFocusNowhere, because when the element we were focused on disappears (e.g. an overlay), - focus gets lost. If user is typing something somewhere else on the page, - focus won't be 'nowhere'.\n // 2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently, to avoid focus jumps if we do something else on the page.\n // [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode, when file is uploading, - navigate via tab to the checkbox, try to press space multiple times. Focus will jump to Uppy.\n isFocusNowhere && _this.ifFocusedOnUppyRecently)) {\n _this.superFocus(_this.el, _this.getPluginState().activeOverlayType);\n } else {\n _this.superFocus.cancel();\n }\n };\n\n _this.afterUpdate = function () {\n _this.superFocusOnEachUpdate();\n };\n\n _this.cancelUpload = function (fileID) {\n _this.uppy.removeFile(fileID);\n };\n\n _this.saveFileCard = function (meta, fileID) {\n _this.uppy.setFileMeta(fileID, meta);\n\n _this.toggleFileCard();\n };\n\n _this._attachRenderFunctionToTarget = function (target) {\n var plugin = _this.uppy.getPlugin(target.id);\n\n return _extends({}, target, {\n icon: plugin.icon || _this.opts.defaultPickerIcon,\n render: plugin.render\n });\n };\n\n _this._isTargetSupported = function (target) {\n var plugin = _this.uppy.getPlugin(target.id); // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n\n\n if (typeof plugin.isSupported !== 'function') {\n return true;\n }\n\n return plugin.isSupported();\n };\n\n _this._getAcquirers = memoize(function (targets) {\n return targets.filter(function (target) {\n return target.type === 'acquirer' && _this._isTargetSupported(target);\n }).map(_this._attachRenderFunctionToTarget);\n });\n _this._getProgressIndicators = memoize(function (targets) {\n return targets.filter(function (target) {\n return target.type === 'progressindicator';\n }).map(_this._attachRenderFunctionToTarget);\n });\n\n _this.render = function (state) {\n var pluginState = _this.getPluginState();\n\n var files = state.files,\n capabilities = state.capabilities,\n allowNewUpload = state.allowNewUpload; // TODO: move this to Core, to share between Status Bar and Dashboard\n // (and any other plugin that might need it, too)\n\n var newFiles = Object.keys(files).filter(function (file) {\n return !files[file].progress.uploadStarted;\n });\n var uploadStartedFiles = Object.keys(files).filter(function (file) {\n return files[file].progress.uploadStarted;\n });\n var pausedFiles = Object.keys(files).filter(function (file) {\n return files[file].isPaused;\n });\n var completeFiles = Object.keys(files).filter(function (file) {\n return files[file].progress.uploadComplete;\n });\n var erroredFiles = Object.keys(files).filter(function (file) {\n return files[file].error;\n });\n var inProgressFiles = Object.keys(files).filter(function (file) {\n return !files[file].progress.uploadComplete && files[file].progress.uploadStarted;\n });\n var inProgressNotPausedFiles = inProgressFiles.filter(function (file) {\n return !files[file].isPaused;\n });\n var processingFiles = Object.keys(files).filter(function (file) {\n return files[file].progress.preprocess || files[file].progress.postprocess;\n });\n var isUploadStarted = uploadStartedFiles.length > 0;\n var isAllComplete = state.totalProgress === 100 && completeFiles.length === Object.keys(files).length && processingFiles.length === 0;\n var isAllErrored = isUploadStarted && erroredFiles.length === uploadStartedFiles.length;\n var isAllPaused = inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length;\n\n var acquirers = _this._getAcquirers(pluginState.targets);\n\n var progressindicators = _this._getProgressIndicators(pluginState.targets);\n\n var theme;\n\n if (_this.opts.theme === 'auto') {\n theme = capabilities.darkMode ? 'dark' : 'light';\n } else {\n theme = _this.opts.theme;\n }\n\n return DashboardUI({\n state: state,\n isHidden: pluginState.isHidden,\n files: files,\n newFiles: newFiles,\n uploadStartedFiles: uploadStartedFiles,\n completeFiles: completeFiles,\n erroredFiles: erroredFiles,\n inProgressFiles: inProgressFiles,\n inProgressNotPausedFiles: inProgressNotPausedFiles,\n processingFiles: processingFiles,\n isUploadStarted: isUploadStarted,\n isAllComplete: isAllComplete,\n isAllErrored: isAllErrored,\n isAllPaused: isAllPaused,\n totalFileCount: Object.keys(files).length,\n totalProgress: state.totalProgress,\n allowNewUpload: allowNewUpload,\n acquirers: acquirers,\n theme: theme,\n activePickerPanel: pluginState.activePickerPanel,\n animateOpenClose: _this.opts.animateOpenClose,\n isClosing: pluginState.isClosing,\n getPlugin: _this.uppy.getPlugin,\n progressindicators: progressindicators,\n autoProceed: _this.uppy.opts.autoProceed,\n id: _this.id,\n closeModal: _this.requestCloseModal,\n handleClickOutside: _this.handleClickOutside,\n handleInputChange: _this.handleInputChange,\n handlePaste: _this.handlePaste,\n inline: _this.opts.inline,\n showPanel: _this.showPanel,\n hideAllPanels: _this.hideAllPanels,\n log: _this.uppy.log,\n i18n: _this.i18n,\n i18nArray: _this.i18nArray,\n removeFile: _this.uppy.removeFile,\n info: _this.uppy.info,\n note: _this.opts.note,\n metaFields: pluginState.metaFields,\n resumableUploads: capabilities.resumableUploads || false,\n individualCancellation: capabilities.individualCancellation,\n isMobileDevice: capabilities.isMobileDevice,\n pauseUpload: _this.uppy.pauseResume,\n retryUpload: _this.uppy.retryUpload,\n cancelUpload: _this.cancelUpload,\n cancelAll: _this.uppy.cancelAll,\n fileCardFor: pluginState.fileCardFor,\n toggleFileCard: _this.toggleFileCard,\n toggleAddFilesPanel: _this.toggleAddFilesPanel,\n showAddFilesPanel: pluginState.showAddFilesPanel,\n saveFileCard: _this.saveFileCard,\n width: _this.opts.width,\n height: _this.opts.height,\n showLinkToFileUploadResult: _this.opts.showLinkToFileUploadResult,\n proudlyDisplayPoweredByUppy: _this.opts.proudlyDisplayPoweredByUppy,\n hideCancelButton: _this.opts.hideCancelButton,\n showRemoveButtonAfterComplete: _this.opts.showRemoveButtonAfterComplete,\n containerWidth: pluginState.containerWidth,\n containerHeight: pluginState.containerHeight,\n areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n isTargetDOMEl: _this.isTargetDOMEl,\n parentElement: _this.el,\n allowedFileTypes: _this.uppy.opts.restrictions.allowedFileTypes,\n maxNumberOfFiles: _this.uppy.opts.restrictions.maxNumberOfFiles,\n showSelectedFiles: _this.opts.showSelectedFiles,\n handleRequestThumbnail: _this.handleRequestThumbnail,\n handleCancelThumbnail: _this.handleCancelThumbnail,\n // drag props\n isDraggingOver: pluginState.isDraggingOver,\n handleDragOver: _this.handleDragOver,\n handleDragLeave: _this.handleDragLeave,\n handleDrop: _this.handleDrop\n });\n };\n\n _this.discoverProviderPlugins = function () {\n _this.uppy.iteratePlugins(function (plugin) {\n if (plugin && !plugin.target && plugin.opts && plugin.opts.target === _this.constructor) {\n _this.addTarget(plugin);\n }\n });\n };\n\n _this.install = function () {\n // Set default state for Dashboard\n _this.setPluginState({\n isHidden: true,\n fileCardFor: null,\n activeOverlayType: null,\n showAddFilesPanel: false,\n activePickerPanel: false,\n metaFields: _this.opts.metaFields,\n targets: [],\n // We'll make them visible once .containerWidth is determined\n areInsidesReadyToBeVisible: false,\n isDraggingOver: false\n });\n\n var _this$opts = _this.opts,\n inline = _this$opts.inline,\n closeAfterFinish = _this$opts.closeAfterFinish;\n\n if (inline && closeAfterFinish) {\n throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n }\n\n var allowMultipleUploads = _this.uppy.opts.allowMultipleUploads;\n\n if (allowMultipleUploads && closeAfterFinish) {\n _this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploads` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n }\n\n var target = _this.opts.target;\n\n if (target) {\n _this.mount(target, _assertThisInitialized(_this));\n }\n\n var plugins = _this.opts.plugins || [];\n plugins.forEach(function (pluginID) {\n var plugin = _this.uppy.getPlugin(pluginID);\n\n if (plugin) {\n plugin.mount(_assertThisInitialized(_this), plugin);\n }\n });\n\n if (!_this.opts.disableStatusBar) {\n _this.uppy.use(StatusBar, {\n id: _this.id + \":StatusBar\",\n target: _assertThisInitialized(_this),\n hideUploadButton: _this.opts.hideUploadButton,\n hideRetryButton: _this.opts.hideRetryButton,\n hidePauseResumeButton: _this.opts.hidePauseResumeButton,\n hideCancelButton: _this.opts.hideCancelButton,\n showProgressDetails: _this.opts.showProgressDetails,\n hideAfterFinish: _this.opts.hideProgressAfterFinish,\n locale: _this.opts.locale\n });\n }\n\n if (!_this.opts.disableInformer) {\n _this.uppy.use(Informer, {\n id: _this.id + \":Informer\",\n target: _assertThisInitialized(_this)\n });\n }\n\n if (!_this.opts.disableThumbnailGenerator) {\n _this.uppy.use(ThumbnailGenerator, {\n id: _this.id + \":ThumbnailGenerator\",\n thumbnailWidth: _this.opts.thumbnailWidth,\n waitForThumbnailsBeforeUpload: _this.opts.waitForThumbnailsBeforeUpload,\n // If we don't block on thumbnails, we can lazily generate them\n lazy: !_this.opts.waitForThumbnailsBeforeUpload\n });\n } // Dark Mode / theme\n\n\n _this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n var isDarkModeOnFromTheStart = _this.darkModeMediaQuery ? _this.darkModeMediaQuery.matches : false;\n\n _this.uppy.log(\"[Dashboard] Dark mode is \" + (isDarkModeOnFromTheStart ? 'on' : 'off'));\n\n _this.setDarkModeCapability(isDarkModeOnFromTheStart);\n\n if (_this.opts.theme === 'auto') {\n _this.darkModeMediaQuery.addListener(_this.handleSystemDarkModeChange);\n }\n\n _this.discoverProviderPlugins();\n\n _this.initEvents();\n };\n\n _this.uninstall = function () {\n if (!_this.opts.disableInformer) {\n var informer = _this.uppy.getPlugin(_this.id + \":Informer\"); // Checking if this plugin exists, in case it was removed by uppy-core\n // before the Dashboard was.\n\n\n if (informer) _this.uppy.removePlugin(informer);\n }\n\n if (!_this.opts.disableStatusBar) {\n var statusBar = _this.uppy.getPlugin(_this.id + \":StatusBar\");\n\n if (statusBar) _this.uppy.removePlugin(statusBar);\n }\n\n if (!_this.opts.disableThumbnailGenerator) {\n var thumbnail = _this.uppy.getPlugin(_this.id + \":ThumbnailGenerator\");\n\n if (thumbnail) _this.uppy.removePlugin(thumbnail);\n }\n\n var plugins = _this.opts.plugins || [];\n plugins.forEach(function (pluginID) {\n var plugin = _this.uppy.getPlugin(pluginID);\n\n if (plugin) plugin.unmount();\n });\n\n if (_this.opts.theme === 'auto') {\n _this.darkModeMediaQuery.removeListener(_this.handleSystemDarkModeChange);\n }\n\n _this.unmount();\n\n _this.removeEvents();\n };\n\n _this.id = _this.opts.id || 'Dashboard';\n _this.title = 'Dashboard';\n _this.type = 'orchestrator';\n _this.modalName = \"uppy-Dashboard-\" + cuid();\n _this.defaultLocale = {\n strings: {\n closeModal: 'Close Modal',\n importFrom: 'Import from %{name}',\n addingMoreFiles: 'Adding more files',\n addMoreFiles: 'Add more files',\n dashboardWindowTitle: 'File Uploader Window (Press escape to close)',\n dashboardTitle: 'File Uploader',\n copyLinkToClipboardSuccess: 'Link copied to clipboard',\n copyLinkToClipboardFallback: 'Copy the URL below',\n copyLink: 'Copy link',\n fileSource: 'File source: %{name}',\n done: 'Done',\n back: 'Back',\n addMore: 'Add more',\n removeFile: 'Remove file',\n editFile: 'Edit file',\n editing: 'Editing %{file}',\n finishEditingFile: 'Finish editing file',\n saveChanges: 'Save changes',\n cancel: 'Cancel',\n myDevice: 'My Device',\n dropPaste: 'Drop files here, paste or %{browse}',\n dropPasteImport: 'Drop files here, paste, %{browse} or import from:',\n dropHint: 'Drop your files here',\n browse: 'browse',\n uploadComplete: 'Upload complete',\n uploadPaused: 'Upload paused',\n resumeUpload: 'Resume upload',\n pauseUpload: 'Pause upload',\n retryUpload: 'Retry upload',\n cancelUpload: 'Cancel upload',\n xFilesSelected: {\n 0: '%{smart_count} file selected',\n 1: '%{smart_count} files selected'\n },\n uploadingXFiles: {\n 0: 'Uploading %{smart_count} file',\n 1: 'Uploading %{smart_count} files'\n },\n processingXFiles: {\n 0: 'Processing %{smart_count} file',\n 1: 'Processing %{smart_count} files'\n },\n // The default `poweredBy2` string only combines the `poweredBy` string (%{backwardsCompat}) with the size.\n // Locales can override `poweredBy2` to specify a different word order. This is for backwards compat with\n // Uppy 1.9.x and below which did a naive concatenation of `poweredBy2 + size` instead of using a locale-specific\n // substitution.\n // TODO: In 2.0 `poweredBy2` should be removed in and `poweredBy` updated to use substitution.\n poweredBy2: '%{backwardsCompat} %{uppy}',\n poweredBy: 'Powered by'\n }\n }; // set default options\n\n var defaultOptions = {\n target: 'body',\n metaFields: [],\n trigger: '#uppy-select-files',\n inline: false,\n width: 750,\n height: 550,\n thumbnailWidth: 280,\n waitForThumbnailsBeforeUpload: false,\n defaultPickerIcon: defaultPickerIcon,\n showLinkToFileUploadResult: true,\n showProgressDetails: false,\n hideUploadButton: false,\n hideRetryButton: false,\n hidePauseResumeCancelButtons: false,\n hideProgressAfterFinish: false,\n note: null,\n closeModalOnClickOutside: false,\n closeAfterFinish: false,\n disableStatusBar: false,\n disableInformer: false,\n disableThumbnailGenerator: false,\n disablePageScrollWhenModalOpen: true,\n animateOpenClose: true,\n proudlyDisplayPoweredByUppy: true,\n onRequestCloseModal: function onRequestCloseModal() {\n return _this.closeModal();\n },\n showSelectedFiles: true,\n showRemoveButtonAfterComplete: false,\n browserBackButtonClose: false,\n theme: 'light'\n }; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, {}, _opts);\n\n _this.i18nInit();\n\n _this.superFocus = createSuperFocus();\n _this.ifFocusedOnUppyRecently = false; // Timeouts\n\n _this.makeDashboardInsidesVisibleAnywayTimeout = null;\n _this.removeDragOverClassTimeout = null;\n return _this;\n }\n\n return Dashboard;\n}(Plugin), _class.VERSION = \"1.9.0\", _temp);","var getFileTypeIcon = require('../utils/getFileTypeIcon');\n\nvar _require = require('preact'),\n h = _require.h;\n\nmodule.exports = function FilePreview(props) {\n var file = props.file;\n\n if (file.preview) {\n return h(\"img\", {\n class: \"uppy-DashboardItem-previewImg\",\n alt: file.name,\n src: file.preview\n });\n }\n\n var _getFileTypeIcon = getFileTypeIcon(file.type),\n color = _getFileTypeIcon.color,\n icon = _getFileTypeIcon.icon;\n\n return h(\"div\", {\n class: \"uppy-DashboardItem-previewIconWrap\"\n }, h(\"span\", {\n class: \"uppy-DashboardItem-previewIcon\",\n style: {\n color: color\n }\n }, icon), h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n class: \"uppy-DashboardItem-previewIconBg\",\n width: \"58\",\n height: \"76\",\n viewBox: \"0 0 58 76\"\n }, h(\"rect\", {\n fill: \"#FFF\",\n width: \"58\",\n height: \"76\",\n rx: \"3\",\n \"fill-rule\": \"evenodd\"\n })));\n};","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar _require = require('./icons'),\n iconMyDevice = _require.iconMyDevice;\n\nvar _require2 = require('preact'),\n h = _require2.h,\n Component = _require2.Component;\n\nvar AddFiles = /*#__PURE__*/function (_Component) {\n _inheritsLoose(AddFiles, _Component);\n\n function AddFiles() {\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\n _this.triggerFileInputClick = function () {\n _this.fileInput.click();\n };\n\n _this.onFileInputChange = function (event) {\n _this.props.handleInputChange(event); // We clear the input after a file is selected, because otherwise\n // change event is not fired in Chrome and Safari when a file\n // with the same name is selected.\n // ___Why not use value=\"\" on instead?\n // Because if we use that method of clearing the input,\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n\n event.target.value = null;\n };\n\n _this.renderCloudIcon = function () {\n return h(\"svg\", {\n class: \"uppy-Dashboard-dropFilesIcon\",\n \"aria-hidden\": \"true\",\n width: \"64\",\n height: \"45\",\n viewBox: \"0 0 64 45\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"path\", {\n d: \"M38 44.932V31h8L33 15 20 31h8v13.932H13.538C6.075 44.932 0 38.774 0 31.202c0-6.1 4.06-11.512 9.873-13.162l.005-.017c.345-5.8 5.248-10.534 10.922-10.534.502 0 1.164.017 1.868.16C25.9 2.85 31.225 0 36.923 0c9.5 0 17.23 7.838 17.23 17.473l-.011.565.012.002C60.039 19.685 64 24.975 64 31.203c0 7.57-6.075 13.729-13.538 13.729H38z\",\n fill: \"#E2E2E2\",\n \"fill-rule\": \"nonzero\"\n }));\n };\n\n _this.renderHiddenFileInput = function () {\n return h(\"input\", {\n class: \"uppy-Dashboard-input\",\n hidden: true,\n \"aria-hidden\": \"true\",\n tabindex: -1,\n type: \"file\",\n name: \"files[]\",\n multiple: _this.props.maxNumberOfFiles !== 1,\n onchange: _this.onFileInputChange,\n accept: _this.props.allowedFileTypes,\n ref: function ref(_ref) {\n _this.fileInput = _ref;\n }\n });\n };\n\n _this.renderMyDeviceAcquirer = function () {\n return h(\"div\", {\n class: \"uppy-DashboardTab\",\n role: \"presentation\"\n }, h(\"button\", {\n type: \"button\",\n class: \"uppy-DashboardTab-btn\",\n role: \"tab\",\n tabindex: 0,\n \"data-uppy-super-focusable\": true,\n onclick: _this.triggerFileInputClick\n }, iconMyDevice(), h(\"div\", {\n class: \"uppy-DashboardTab-name\"\n }, _this.props.i18n('myDevice'))));\n };\n\n _this.renderDropPasteBrowseTagline = function () {\n var numberOfAcquirers = _this.props.acquirers.length;\n var browse = h(\"button\", {\n type: \"button\",\n class: \"uppy-u-reset uppy-Dashboard-browse\",\n onclick: _this.triggerFileInputClick,\n \"data-uppy-super-focusable\": numberOfAcquirers === 0\n }, _this.props.i18n('browse'));\n return h(\"div\", {\n class: \"uppy-Dashboard-AddFiles-title\"\n }, numberOfAcquirers > 0 ? _this.props.i18nArray('dropPasteImport', {\n browse: browse\n }) : _this.props.i18nArray('dropPaste', {\n browse: browse\n }));\n };\n\n _this.renderAcquirer = function (acquirer) {\n return h(\"div\", {\n class: \"uppy-DashboardTab\",\n role: \"presentation\"\n }, h(\"button\", {\n type: \"button\",\n class: \"uppy-DashboardTab-btn\",\n role: \"tab\",\n tabindex: 0,\n \"aria-controls\": \"uppy-DashboardContent-panel--\" + acquirer.id,\n \"aria-selected\": _this.props.activePickerPanel.id === acquirer.id,\n \"data-uppy-super-focusable\": true,\n onclick: function onclick() {\n return _this.props.showPanel(acquirer.id);\n }\n }, acquirer.icon(), h(\"div\", {\n class: \"uppy-DashboardTab-name\"\n }, acquirer.name)));\n };\n\n _this.renderAcquirers = function (acquirers) {\n // Group last two buttons, so we don’t end up with\n // just one button on a new line\n var acquirersWithoutLastTwo = [].concat(acquirers);\n var lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n return h(\"div\", {\n class: \"uppy-Dashboard-AddFiles-list\",\n role: \"tablist\"\n }, _this.renderMyDeviceAcquirer(), acquirersWithoutLastTwo.map(function (acquirer) {\n return _this.renderAcquirer(acquirer);\n }), h(\"span\", {\n role: \"presentation\",\n style: \"white-space: nowrap;\"\n }, lastTwoAcquirers.map(function (acquirer) {\n return _this.renderAcquirer(acquirer);\n })));\n };\n\n return _this;\n }\n\n var _proto = AddFiles.prototype;\n\n _proto.renderPoweredByUppy = function renderPoweredByUppy() {\n var uppyBranding = h(\"span\", null, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n class: \"UppyIcon uppy-Dashboard-poweredByIcon\",\n width: \"11\",\n height: \"11\",\n viewBox: \"0 0 11 11\"\n }, h(\"path\", {\n d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n \"fill-rule\": \"evenodd\"\n })), h(\"span\", {\n class: \"uppy-Dashboard-poweredByUppy\"\n }, \"Uppy\")); // Support both the old word-order-insensitive string `poweredBy` and the new word-order-sensitive string `poweredBy2`\n\n var linkText = this.props.i18nArray('poweredBy2', {\n backwardsCompat: this.props.i18n('poweredBy'),\n uppy: uppyBranding\n });\n return h(\"a\", {\n tabindex: \"-1\",\n href: \"https://uppy.io\",\n rel: \"noreferrer noopener\",\n target: \"_blank\",\n class: \"uppy-Dashboard-poweredBy\"\n }, linkText);\n };\n\n _proto.render = function render() {\n return h(\"div\", {\n class: \"uppy-Dashboard-AddFiles\"\n }, this.renderHiddenFileInput(), this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && this.renderAcquirers(this.props.acquirers), h(\"div\", {\n class: \"uppy-Dashboard-AddFiles-info\"\n }, this.props.note && h(\"div\", {\n class: \"uppy-Dashboard-note\"\n }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n };\n\n return AddFiles;\n}(Component);\n\nmodule.exports = AddFiles;","// ignore drop/paste events if they are not in input or textarea —\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events —\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n var tagName = ev.target.tagName;\n\n if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n ev.stopPropagation();\n return;\n }\n\n ev.preventDefault();\n ev.stopPropagation();\n}\n\nmodule.exports = ignoreEvent;","/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n *\n * @returns {boolean}\n */\nmodule.exports = function isDragDropSupported() {\n var div = document.createElement('div');\n\n if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n return false;\n }\n\n if (!('FormData' in window)) {\n return false;\n }\n\n if (!('FileReader' in window)) {\n return false;\n }\n\n return true;\n};","module.exports = {\n STATE_ERROR: 'error',\n STATE_WAITING: 'waiting',\n STATE_PREPROCESSING: 'preprocessing',\n STATE_UPLOADING: 'uploading',\n STATE_POSTPROCESSING: 'postprocessing',\n STATE_COMPLETE: 'complete'\n};","module.exports = function dataURItoBlob(dataURI, opts, toFile) {\n // get the base64 data\n var data = dataURI.split(',')[1]; // user may provide mime type, if not get it from data URI\n\n var mimeType = opts.mimeType || dataURI.split(',')[0].split(':')[1].split(';')[0]; // default to plain/text if data URI has no mimeType\n\n if (mimeType == null) {\n mimeType = 'plain/text';\n }\n\n var binary = atob(data);\n var array = [];\n\n for (var i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n }\n\n var bytes;\n\n try {\n bytes = new Uint8Array(array); // eslint-disable-line compat/compat\n } catch (err) {\n return null;\n } // Convert to a File?\n\n\n if (toFile) {\n return new File([bytes], opts.name || '', {\n type: mimeType\n });\n }\n\n return new Blob([bytes], {\n type: mimeType\n });\n};","var webkitGetAsEntryApi = require('./utils/webkitGetAsEntryApi/index');\n\nvar fallbackApi = require('./utils/fallbackApi');\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is dropped, and browser supports folder parsing - promise resolves to the flat array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\") if browser supports it. Otherwise it's undefined.\n *\n * @param {DataTransfer} dataTransfer\n * @param {Function} logDropError - a function that's called every time some folder or some file error out (e.g. because of the folder name being too long on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array\n */\n\n\nmodule.exports = function getDroppedFiles(dataTransfer, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$logDropError = _ref.logDropError,\n logDropError = _ref$logDropError === void 0 ? function () {} : _ref$logDropError;\n\n // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n if (dataTransfer.items && dataTransfer.items[0] && 'webkitGetAsEntry' in dataTransfer.items[0]) {\n return webkitGetAsEntryApi(dataTransfer, logDropError); // Otherwise just return all first-order files\n } else {\n return fallbackApi(dataTransfer);\n }\n};","/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nmodule.exports = function getActiveOverlayEl(dashboardEl, activeOverlayType) {\n if (activeOverlayType) {\n var overlayEl = dashboardEl.querySelector(\"[data-uppy-paneltype=\\\"\" + activeOverlayType + \"\\\"]\"); // if an overlay is already mounted\n\n if (overlayEl) return overlayEl;\n }\n\n return dashboardEl;\n};","module.exports = ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\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","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar toArray = require('@uppy/utils/lib/toArray');\n\nvar isDragDropSupported = require('@uppy/utils/lib/isDragDropSupported');\n\nvar getDroppedFiles = require('@uppy/utils/lib/getDroppedFiles');\n\nvar _require2 = require('preact'),\n h = _require2.h;\n/**\n * Drag & Drop plugin\n *\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(DragDrop, _Plugin);\n\n function DragDrop(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'acquirer';\n _this.id = _this.opts.id || 'DragDrop';\n _this.title = 'Drag & Drop';\n _this.defaultLocale = {\n strings: {\n dropHereOr: 'Drop files here or %{browse}',\n browse: 'browse'\n }\n }; // Default options\n\n var defaultOpts = {\n target: null,\n inputName: 'files[]',\n width: '100%',\n height: '100%',\n note: null\n }; // Merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOpts, {}, opts); // Check for browser dragDrop support\n\n _this.isDragDropSupported = isDragDropSupported();\n _this.removeDragOverClassTimeout = null;\n\n _this.i18nInit(); // Bind `this` to class methods\n\n\n _this.onInputChange = _this.onInputChange.bind(_assertThisInitialized(_this));\n _this.handleDragOver = _this.handleDragOver.bind(_assertThisInitialized(_this));\n _this.handleDragLeave = _this.handleDragLeave.bind(_assertThisInitialized(_this));\n _this.handleDrop = _this.handleDrop.bind(_assertThisInitialized(_this));\n _this.addFiles = _this.addFiles.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = DragDrop.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.addFiles = function addFiles(files) {\n var _this2 = this;\n\n var descriptors = files.map(function (file) {\n return {\n source: _this2.id,\n name: file.name,\n type: file.type,\n data: file,\n meta: {\n // path of the file relative to the ancestor directory the user selected.\n // e.g. 'docs/Old Prague/airbnb.pdf'\n relativePath: file.relativePath || null\n }\n };\n });\n\n try {\n this.uppy.addFiles(descriptors);\n } catch (err) {\n this.uppy.log(err);\n }\n };\n\n _proto.onInputChange = function onInputChange(event) {\n this.uppy.log('[DragDrop] Files selected through input');\n var files = toArray(event.target.files);\n this.addFiles(files); // We clear the input after a file is selected, because otherwise\n // change event is not fired in Chrome and Safari when a file\n // with the same name is selected.\n // ___Why not use value=\"\" on instead?\n // Because if we use that method of clearing the input,\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n event.target.value = null;\n };\n\n _proto.handleDrop = function handleDrop(event, dropCategory) {\n var _this3 = this;\n\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this.removeDragOverClassTimeout); // 2. Remove dragover class\n\n this.setPluginState({\n isDraggingOver: false\n }); // 3. Add all dropped files\n\n this.uppy.log('[DragDrop] Files were dropped');\n\n var logDropError = function logDropError(error) {\n _this3.uppy.log(error, 'error');\n };\n\n getDroppedFiles(event.dataTransfer, {\n logDropError: logDropError\n }).then(function (files) {\n return _this3.addFiles(files);\n });\n };\n\n _proto.handleDragOver = function handleDragOver(event) {\n event.preventDefault();\n event.stopPropagation(); // 1. Add a small (+) icon on drop\n // (and prevent browsers from interpreting this as files being _moved_ into the browser, https://github.com/transloadit/uppy/issues/1978)\n\n event.dataTransfer.dropEffect = 'copy';\n clearTimeout(this.removeDragOverClassTimeout);\n this.setPluginState({\n isDraggingOver: true\n });\n };\n\n _proto.handleDragLeave = function handleDragLeave(event) {\n var _this4 = this;\n\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library. Solution with 'pointer-events: none' didn't work across browsers.\n\n this.removeDragOverClassTimeout = setTimeout(function () {\n _this4.setPluginState({\n isDraggingOver: false\n });\n }, 50);\n };\n\n _proto.renderHiddenFileInput = function renderHiddenFileInput() {\n var _this5 = this;\n\n var restrictions = this.uppy.opts.restrictions;\n return h(\"input\", {\n id: this.uppy.id + '-' + this.id,\n class: \"uppy-DragDrop-input\",\n type: \"file\",\n tabindex: -1,\n focusable: \"false\",\n ref: function ref(_ref) {\n _this5.fileInputRef = _ref;\n },\n name: this.opts.inputName,\n multiple: restrictions.maxNumberOfFiles !== 1,\n accept: restrictions.allowedFileTypes,\n onchange: this.onInputChange\n });\n };\n\n _proto.renderArrowSvg = function renderArrowSvg() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n class: \"UppyIcon uppy-DragDrop-arrow\",\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\"\n }, h(\"path\", {\n d: \"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\",\n \"fill-rule\": \"evenodd\"\n }));\n };\n\n _proto.renderLabel = function renderLabel() {\n return h(\"label\", {\n class: \"uppy-DragDrop-label\",\n for: this.uppy.id + '-' + this.id\n }, this.i18nArray('dropHereOr', {\n browse: h(\"span\", {\n class: \"uppy-DragDrop-browse\"\n }, this.i18n('browse'))\n }));\n };\n\n _proto.renderNote = function renderNote() {\n return h(\"span\", {\n class: \"uppy-DragDrop-note\"\n }, this.opts.note);\n };\n\n _proto.render = function render(state) {\n var _this6 = this;\n\n var dragDropClass = \"\\n uppy-Root\\n uppy-u-reset\\n uppy-DragDrop-container\\n \" + (this.isDragDropSupported ? 'uppy-DragDrop--is-dragdrop-supported' : '') + \"\\n \" + (this.getPluginState().isDraggingOver ? 'uppy-DragDrop--isDraggingOver' : '') + \"\\n \";\n var dragDropStyle = {\n width: this.opts.width,\n height: this.opts.height\n };\n return h(\"button\", {\n type: \"button\",\n class: dragDropClass,\n style: dragDropStyle,\n onClick: function onClick() {\n return _this6.fileInputRef.click();\n },\n onDragOver: this.handleDragOver,\n onDragLeave: this.handleDragLeave,\n onDrop: this.handleDrop\n }, this.renderHiddenFileInput(), h(\"div\", {\n class: \"uppy-DragDrop-inner\"\n }, this.renderArrowSvg(), this.renderLabel(), this.renderNote()));\n };\n\n _proto.install = function install() {\n this.setPluginState({\n isDraggingOver: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.unmount();\n };\n\n return DragDrop;\n}(Plugin), _class.VERSION = \"1.4.13\", _temp);","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar toArray = require('@uppy/utils/lib/toArray');\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar _require2 = require('preact'),\n h = _require2.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(FileInput, _Plugin);\n\n function FileInput(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'FileInput';\n _this.title = 'File Input';\n _this.type = 'acquirer';\n _this.defaultLocale = {\n strings: {\n // The same key is used for the same purpose by @uppy/robodog's `form()` API, but our\n // locale pack scripts can't access it in Robodog. If it is updated here, it should\n // also be updated there!\n chooseFiles: 'Choose files'\n }\n }; // Default options\n\n var defaultOptions = {\n target: null,\n pretty: true,\n inputName: 'files[]'\n }; // Merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n _this.handleInputChange = _this.handleInputChange.bind(_assertThisInitialized(_this));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = FileInput.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.addFiles = function addFiles(files) {\n var _this2 = this;\n\n var descriptors = files.map(function (file) {\n return {\n source: _this2.id,\n name: file.name,\n type: file.type,\n data: file\n };\n });\n\n try {\n this.uppy.addFiles(descriptors);\n } catch (err) {\n this.uppy.log(err);\n }\n };\n\n _proto.handleInputChange = function handleInputChange(event) {\n this.uppy.log('[FileInput] Something selected through input...');\n var files = toArray(event.target.files);\n this.addFiles(files); // We clear the input after a file is selected, because otherwise\n // change event is not fired in Chrome and Safari when a file\n // with the same name is selected.\n // ___Why not use value=\"\" on instead?\n // Because if we use that method of clearing the input,\n // Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n event.target.value = null;\n };\n\n _proto.handleClick = function handleClick(ev) {\n this.input.click();\n };\n\n _proto.render = function render(state) {\n var _this3 = this;\n\n /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n var hiddenInputStyle = {\n width: '0.1px',\n height: '0.1px',\n opacity: 0,\n overflow: 'hidden',\n position: 'absolute',\n zIndex: -1\n };\n var restrictions = this.uppy.opts.restrictions;\n var accept = restrictions.allowedFileTypes ? restrictions.allowedFileTypes.join(',') : null;\n return h(\"div\", {\n class: \"uppy-Root uppy-FileInput-container\"\n }, h(\"input\", {\n class: \"uppy-FileInput-input\",\n style: this.opts.pretty && hiddenInputStyle,\n type: \"file\",\n name: this.opts.inputName,\n onchange: this.handleInputChange,\n multiple: restrictions.maxNumberOfFiles !== 1,\n accept: accept,\n ref: function ref(input) {\n _this3.input = input;\n }\n }), this.opts.pretty && h(\"button\", {\n class: \"uppy-FileInput-btn\",\n type: \"button\",\n onclick: this.handleClick\n }, this.i18n('chooseFiles')));\n };\n\n _proto.install = function install() {\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.unmount();\n };\n\n return FileInput;\n}(Plugin), _class.VERSION = \"1.4.12\", _temp);","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('preact'),\n h = _require2.h;\n/**\n * Progress bar\n *\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(ProgressBar, _Plugin);\n\n function ProgressBar(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'ProgressBar';\n _this.title = 'Progress Bar';\n _this.type = 'progressindicator'; // set default options\n\n var defaultOptions = {\n target: 'body',\n replaceTargetContent: false,\n fixed: false,\n hideAfterFinish: true\n }; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, opts);\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ProgressBar.prototype;\n\n _proto.render = function render(state) {\n var progress = state.totalProgress || 0; // before starting and after finish should be hidden if specified in the options\n\n var isHidden = (progress === 0 || progress === 100) && this.opts.hideAfterFinish;\n return h(\"div\", {\n class: \"uppy uppy-ProgressBar\",\n style: {\n position: this.opts.fixed ? 'fixed' : 'initial'\n },\n \"aria-hidden\": isHidden\n }, h(\"div\", {\n class: \"uppy-ProgressBar-inner\",\n style: {\n width: progress + '%'\n }\n }), h(\"div\", {\n class: \"uppy-ProgressBar-percentage\"\n }, progress));\n };\n\n _proto.install = function install() {\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.unmount();\n };\n\n return ProgressBar;\n}(Plugin), _class.VERSION = \"1.3.14\", _temp);","var _class, _temp;\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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider;\n\nvar ProviderViews = require('@uppy/provider-views');\n\nvar _require3 = require('preact'),\n h = _require3.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Dropbox, _Plugin);\n\n function Dropbox(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'Dropbox';\n Provider.initPlugin(_assertThisInitialized(_this), opts);\n _this.title = _this.opts.title || 'Dropbox';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n fill: \"#0D2481\",\n width: \"32\",\n height: \"32\",\n rx: \"16\"\n }), h(\"path\", {\n d: \"M11 8l5 3.185-5 3.186-5-3.186L11 8zm10 0l5 3.185-5 3.186-5-3.186L21 8zM6 17.556l5-3.185 5 3.185-5 3.186-5-3.186zm15-3.185l5 3.185-5 3.186-5-3.186 5-3.185zm-10 7.432l5-3.185 5 3.185-5 3.186-5-3.186z\",\n fill: \"#FFF\",\n \"fill-rule\": \"nonzero\"\n })));\n };\n\n _this.provider = new Provider(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders,\n provider: 'dropbox',\n pluginId: _this.id\n });\n _this.onFirstRender = _this.onFirstRender.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Dropbox.prototype;\n\n _proto.install = function install() {\n this.view = new ProviderViews(this, {\n provider: this.provider\n }); // Set default state for Dropbox\n\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.view.tearDown();\n this.unmount();\n };\n\n _proto.onFirstRender = function onFirstRender() {\n return this.view.getFolder();\n };\n\n _proto.render = function render(state) {\n return this.view.render(state);\n };\n\n return Dropbox;\n}(Plugin), _class.VERSION = \"1.4.6\", _temp);","var _class, _temp;\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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider;\n\nvar DriveProviderViews = require('./DriveProviderViews');\n\nvar _require3 = require('preact'),\n h = _require3.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(GoogleDrive, _Plugin);\n\n function GoogleDrive(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'GoogleDrive';\n _this.title = _this.opts.title || 'Google Drive';\n Provider.initPlugin(_assertThisInitialized(_this), opts);\n _this.title = _this.opts.title || 'Google Drive';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n fill: \"#4285F4\",\n width: \"32\",\n height: \"32\",\n rx: \"16\"\n }), h(\"path\", {\n d: \"M10.324 23.3l3-5.1H25l-3 5.1H10.324zM13 18.2l-3 5.1-3-5.1 5.839-9.924 2.999 5.1L13 18.2zm11.838-.276h-6L13 8h6l5.84 9.924h-.002z\",\n fill: \"#FFF\"\n })));\n };\n\n _this.provider = new Provider(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders,\n provider: 'drive',\n authProvider: 'google',\n pluginId: _this.id\n });\n _this.onFirstRender = _this.onFirstRender.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = GoogleDrive.prototype;\n\n _proto.install = function install() {\n this.view = new DriveProviderViews(this, {\n provider: this.provider\n }); // Set default state for Google Drive\n\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false,\n hasTeamDrives: false,\n teamDrives: [],\n teamDriveId: ''\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.view.tearDown();\n this.unmount();\n };\n\n _proto.onFirstRender = function onFirstRender() {\n return this.view.getFolder('root', '/');\n };\n\n _proto.render = function render(state) {\n return this.view.render(state);\n };\n\n return GoogleDrive;\n}(Plugin), _class.VERSION = \"1.5.6\", _temp);","var _class, _temp;\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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider;\n\nvar ProviderViews = require('@uppy/provider-views');\n\nvar _require3 = require('preact'),\n h = _require3.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Instagram, _Plugin);\n\n function Instagram(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'Instagram';\n Provider.initPlugin(_assertThisInitialized(_this), opts);\n _this.title = _this.opts.title || 'Instagram';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n fill: \"#E1306C\",\n width: \"32\",\n height: \"32\",\n rx: \"16\"\n }), h(\"path\", {\n d: \"M16 8.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.67.31.392.144.745.374 1.036.673.299.29.529.644.673 1.035.123.317.27.794.31 1.671.043.95.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.671a2.98 2.98 0 0 1-1.708 1.708c-.317.123-.794.27-1.671.31-.95.043-1.234.053-3.637.053s-2.688-.01-3.637-.053c-.877-.04-1.354-.187-1.671-.31a2.788 2.788 0 0 1-1.035-.673 2.788 2.788 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.949-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.67.144-.392.374-.745.673-1.036.29-.299.644-.529 1.035-.673.317-.123.794-.27 1.671-.31.95-.043 1.234-.052 3.637-.052zM16 7c-2.444 0-2.75.01-3.71.054-.959.044-1.613.196-2.185.419-.6.225-1.145.58-1.594 1.038-.458.45-.813.993-1.039 1.594-.222.572-.374 1.226-.418 2.184C7.01 13.25 7 13.556 7 16s.01 2.75.054 3.71c.044.959.196 1.613.419 2.185.226.6.58 1.145 1.038 1.594.45.458.993.813 1.594 1.038.572.223 1.227.375 2.184.419.96.044 1.267.054 3.711.054s2.75-.01 3.71-.054c.959-.044 1.613-.196 2.185-.419a4.602 4.602 0 0 0 2.632-2.632c.223-.572.375-1.226.419-2.184.044-.96.054-1.267.054-3.711s-.01-2.75-.054-3.71c-.044-.959-.196-1.613-.419-2.185A4.412 4.412 0 0 0 23.49 8.51a4.412 4.412 0 0 0-1.594-1.039c-.572-.222-1.226-.374-2.184-.418C18.75 7.01 18.444 7 16 7zm0 4.5a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9zm0 7.421a2.921 2.921 0 1 1 0-5.842 2.921 2.921 0 0 1 0 5.842zm4.875-6.671a1.125 1.125 0 1 1 0-2.25 1.125 1.125 0 0 1 0 2.25z\",\n fill: \"#FFF\"\n })));\n };\n\n _this.provider = new Provider(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders,\n provider: 'instagram',\n authProvider: 'instagram',\n pluginId: _this.id\n });\n _this.onFirstRender = _this.onFirstRender.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Instagram.prototype;\n\n _proto.install = function install() {\n this.view = new ProviderViews(this, {\n provider: this.provider,\n viewType: 'grid',\n showTitles: false,\n showFilter: false,\n showBreadcrumbs: false\n }); // Set default state for Instagram\n\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.view.tearDown();\n this.unmount();\n };\n\n _proto.onFirstRender = function onFirstRender() {\n this.view.getFolder('recent');\n };\n\n _proto.render = function render(state) {\n return this.view.render(state);\n };\n\n return Instagram;\n}(Plugin), _class.VERSION = \"1.4.6\", _temp);","var _class, _temp;\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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider;\n\nvar ProviderViews = require('@uppy/provider-views');\n\nvar _require3 = require('preact'),\n h = _require3.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(OneDrive, _Plugin);\n\n function OneDrive(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'OneDrive';\n Provider.initPlugin(_assertThisInitialized(_this), opts);\n _this.title = _this.opts.title || 'OneDrive';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n width: \"32\",\n height: \"32\",\n rx: \"16\",\n fill: \"#0262C0\"\n }), h(\"g\", {\n fill: \"#FFF\",\n \"fill-rule\": \"nonzero\"\n }, h(\"path\", {\n d: \"M24.157 22s1.492-.205 1.79-1.655a2.624 2.624 0 0 0 .03-.878c-.22-1.64-1.988-2.01-1.988-2.01s.307-1.765-1.312-2.69c-1.62-.925-3.1 0-3.1 0S18.711 13 16.366 13c-3.016 0-3.519 3.448-3.519 3.448S10 16.618 10 19.14c0 2.523 2.597 2.86 2.597 2.86h11.56z\"\n }), h(\"path\", {\n d: \"M9.421 19.246c0-2.197 1.606-3.159 2.871-3.472.44-1.477 1.654-3.439 4.135-3.439H16.445c1.721 0 2.79.823 3.368 1.476a3.99 3.99 0 0 1 1.147-.171h.01l.03.002C21.017 13.5 20.691 10 16.757 10c-2.69 0-3.639 2.345-3.639 2.345s-1.95-1.482-3.955.567c-1.028 1.052-.79 2.669-.79 2.669S6 15.824 6 18.412C6 20.757 8.452 21 8.452 21h1.372a3.77 3.77 0 0 1-.403-1.754z\"\n }))));\n };\n\n _this.provider = new Provider(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders,\n provider: 'onedrive',\n pluginId: _this.id\n });\n _this.onFirstRender = _this.onFirstRender.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = OneDrive.prototype;\n\n _proto.install = function install() {\n this.view = new ProviderViews(this, {\n provider: this.provider\n }); // Set default state for Dropbox\n\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.view.tearDown();\n this.unmount();\n };\n\n _proto.onFirstRender = function onFirstRender() {\n return this.view.getFolder();\n };\n\n _proto.render = function render(state) {\n return this.view.render(state);\n };\n\n return OneDrive;\n}(Plugin), _class.VERSION = \"1.1.6\", _temp);","var _class, _temp;\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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider;\n\nvar ProviderViews = require('@uppy/provider-views');\n\nvar _require3 = require('preact'),\n h = _require3.h;\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Facebook, _Plugin);\n\n function Facebook(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'Facebook';\n Provider.initPlugin(_assertThisInitialized(_this), opts);\n _this.title = _this.opts.title || 'Facebook';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n width: \"32\",\n height: \"32\",\n rx: \"16\",\n fill: \"#3C5A99\"\n }), h(\"path\", {\n d: \"M17.842 26v-8.667h2.653l.398-3.377h-3.051v-2.157c0-.978.248-1.644 1.527-1.644H21V7.132A19.914 19.914 0 0 0 18.623 7c-2.352 0-3.963 1.574-3.963 4.465v2.49H12v3.378h2.66V26h3.182z\",\n fill: \"#FFF\",\n \"fill-rule\": \"nonzero\"\n })));\n };\n\n _this.provider = new Provider(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders,\n provider: 'facebook',\n pluginId: _this.id\n });\n _this.onFirstRender = _this.onFirstRender.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Facebook.prototype;\n\n _proto.install = function install() {\n this.view = new ProviderViews(this, {\n provider: this.provider\n }); // Set default state for Dropbox\n\n this.setPluginState({\n authenticated: false,\n files: [],\n folders: [],\n directories: [],\n activeRow: -1,\n filterInput: '',\n isSearchVisible: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.view.tearDown();\n this.unmount();\n };\n\n _proto.onFirstRender = function onFirstRender() {\n return this.view.getFolder();\n };\n\n _proto.render = function render(state) {\n var viewOptions = {};\n\n if (this.getPluginState().files.length && !this.getPluginState().folders.length) {\n viewOptions.viewType = 'grid';\n viewOptions.showFilter = false;\n viewOptions.showTitles = false;\n }\n\n return this.view.render(state, viewOptions);\n };\n\n return Facebook;\n}(Plugin), _class.VERSION = \"1.1.6\", _temp);","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar _require2 = require('preact'),\n h = _require2.h;\n\nvar _require3 = require('@uppy/companion-client'),\n RequestClient = _require3.RequestClient;\n\nvar UrlUI = require('./UrlUI.js');\n\nvar forEachDroppedOrPastedUrl = require('./utils/forEachDroppedOrPastedUrl');\n\nfunction UrlIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n fill: \"#FF753E\",\n width: \"32\",\n height: \"32\",\n rx: \"16\"\n }), h(\"path\", {\n d: \"M22.788 15.389l-2.199 2.19a3.184 3.184 0 0 1-.513.437c-.806.584-1.686.876-2.638.876a4.378 4.378 0 0 1-3.519-1.752c-.22-.292-.146-.802.147-1.021.293-.22.806-.146 1.026.146.953 1.313 2.785 1.532 4.105.583a.571.571 0 0 0 .293-.292l2.199-2.189c1.1-1.167 1.1-2.992-.073-4.086a2.976 2.976 0 0 0-4.105 0l-1.246 1.24a.71.71 0 0 1-1.026 0 .703.703 0 0 1 0-1.022l1.246-1.24a4.305 4.305 0 0 1 6.083 0c1.833 1.605 1.906 4.451.22 6.13zm-7.183 5.035l-1.246 1.24a2.976 2.976 0 0 1-4.105 0c-1.172-1.094-1.172-2.991-.073-4.086l2.2-2.19.292-.291c.66-.438 1.393-.657 2.2-.584.805.146 1.465.51 1.905 1.168.22.292.733.365 1.026.146.293-.22.367-.73.147-1.022-.733-.949-1.76-1.532-2.859-1.678-1.1-.22-2.272.073-3.225.802l-.44.438-2.199 2.19c-1.686 1.75-1.612 4.524.074 6.202.88.803 1.979 1.241 3.078 1.241 1.1 0 2.199-.438 3.079-1.24l1.246-1.241a.703.703 0 0 0 0-1.022c-.294-.292-.807-.365-1.1-.073z\",\n fill: \"#FFF\",\n \"fill-rule\": \"nonzero\"\n })));\n}\n/**\n * Url\n *\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Url, _Plugin);\n\n function Url(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.id = _this.opts.id || 'Url';\n _this.title = _this.opts.title || 'Link';\n _this.type = 'acquirer';\n\n _this.icon = function () {\n return h(UrlIcon, null);\n }; // Set default options and locale\n\n\n _this.defaultLocale = {\n strings: {\n import: 'Import',\n enterUrlToImport: 'Enter URL to import a file',\n failedToFetch: 'Companion failed to fetch this URL, please make sure it’s correct',\n enterCorrectUrl: 'Incorrect URL: Please make sure you are entering a direct link to a file'\n }\n };\n var defaultOptions = {};\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this.hostname = _this.opts.companionUrl;\n\n if (!_this.hostname) {\n throw new Error('Companion hostname is required, please consult https://uppy.io/docs/companion');\n } // Bind all event handlers for referencability\n\n\n _this.getMeta = _this.getMeta.bind(_assertThisInitialized(_this));\n _this.addFile = _this.addFile.bind(_assertThisInitialized(_this));\n _this.handleRootDrop = _this.handleRootDrop.bind(_assertThisInitialized(_this));\n _this.handleRootPaste = _this.handleRootPaste.bind(_assertThisInitialized(_this));\n _this.client = new RequestClient(uppy, {\n companionUrl: _this.opts.companionUrl,\n companionHeaders: _this.opts.companionHeaders || _this.opts.serverHeaders\n });\n return _this;\n }\n\n var _proto = Url.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.getFileNameFromUrl = function getFileNameFromUrl(url) {\n return url.substring(url.lastIndexOf('/') + 1);\n };\n\n _proto.checkIfCorrectURL = function checkIfCorrectURL(url) {\n if (!url) return false;\n var protocol = url.match(/^([a-z0-9]+):\\/\\//)[1];\n\n if (protocol !== 'http' && protocol !== 'https') {\n return false;\n }\n\n return true;\n };\n\n _proto.addProtocolToURL = function addProtocolToURL(url) {\n var protocolRegex = /^[a-z0-9]+:\\/\\//;\n var defaultProtocol = 'http://';\n\n if (protocolRegex.test(url)) {\n return url;\n }\n\n return defaultProtocol + url;\n };\n\n _proto.getMeta = function getMeta(url) {\n var _this2 = this;\n\n return this.client.post('url/meta', {\n url: url\n }).then(function (res) {\n if (res.error) {\n _this2.uppy.log('[URL] Error:');\n\n _this2.uppy.log(res.error);\n\n throw new Error('Failed to fetch the file');\n }\n\n return res;\n });\n };\n\n _proto.addFile = function addFile(url) {\n var _this3 = this;\n\n url = this.addProtocolToURL(url);\n\n if (!this.checkIfCorrectURL(url)) {\n this.uppy.log(\"[URL] Incorrect URL entered: \" + url);\n this.uppy.info(this.i18n('enterCorrectUrl'), 'error', 4000);\n return;\n }\n\n return this.getMeta(url).then(function (meta) {\n var tagFile = {\n source: _this3.id,\n name: _this3.getFileNameFromUrl(url),\n type: meta.type,\n data: {\n size: meta.size\n },\n isRemote: true,\n body: {\n url: url\n },\n remote: {\n companionUrl: _this3.opts.companionUrl,\n url: _this3.hostname + \"/url/get\",\n body: {\n fileId: url,\n url: url\n },\n providerOptions: _this3.client.opts\n }\n };\n return tagFile;\n }).then(function (tagFile) {\n _this3.uppy.log('[Url] Adding remote file');\n\n try {\n _this3.uppy.addFile(tagFile);\n } catch (err) {\n if (!err.isRestriction) {\n _this3.uppy.log(err);\n }\n }\n }).catch(function (err) {\n _this3.uppy.log(err);\n\n _this3.uppy.info({\n message: _this3.i18n('failedToFetch'),\n details: err\n }, 'error', 4000);\n });\n };\n\n _proto.handleRootDrop = function handleRootDrop(e) {\n var _this4 = this;\n\n forEachDroppedOrPastedUrl(e.dataTransfer, 'drop', function (url) {\n _this4.uppy.log(\"[URL] Adding file from dropped url: \" + url);\n\n _this4.addFile(url);\n });\n };\n\n _proto.handleRootPaste = function handleRootPaste(e) {\n var _this5 = this;\n\n forEachDroppedOrPastedUrl(e.clipboardData, 'paste', function (url) {\n _this5.uppy.log(\"[URL] Adding file from pasted url: \" + url);\n\n _this5.addFile(url);\n });\n };\n\n _proto.render = function render(state) {\n return h(UrlUI, {\n i18n: this.i18n,\n addFile: this.addFile\n });\n };\n\n _proto.install = function install() {\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n this.unmount();\n };\n\n return Url;\n}(Plugin), _class.VERSION = \"1.5.6\", _temp);","var _class, _temp;\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 _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\nvar _require = require('preact'),\n h = _require.h;\n\nvar _require2 = require('@uppy/core'),\n Plugin = _require2.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar getFileTypeExtension = require('@uppy/utils/lib/getFileTypeExtension');\n\nvar mimeTypes = require('@uppy/utils/lib/mimeTypes');\n\nvar canvasToBlob = require('@uppy/utils/lib/canvasToBlob');\n\nvar supportsMediaRecorder = require('./supportsMediaRecorder');\n\nvar CameraIcon = require('./CameraIcon');\n\nvar CameraScreen = require('./CameraScreen');\n\nvar PermissionsScreen = require('./PermissionsScreen');\n/**\n * Normalize a MIME type or file extension into a MIME type.\n *\n * @param {string} fileType - MIME type or a file extension prefixed with `.`.\n * @returns {string|undefined} The MIME type or `undefined` if the fileType is an extension and is not known.\n */\n\n\nfunction toMimeType(fileType) {\n if (fileType[0] === '.') {\n return mimeTypes[fileType.slice(1)];\n }\n\n return fileType;\n}\n/**\n * Is this MIME type a video?\n *\n * @param {string} mimeType - MIME type.\n * @returns {boolean}\n */\n\n\nfunction isVideoMimeType(mimeType) {\n return /^video\\/[^*]+$/.test(mimeType);\n}\n/**\n * Is this MIME type an image?\n *\n * @param {string} mimeType - MIME type.\n * @returns {boolean}\n */\n\n\nfunction isImageMimeType(mimeType) {\n return /^image\\/[^*]+$/.test(mimeType);\n}\n/**\n * Setup getUserMedia, with polyfill for older browsers\n * Adapted from: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n */\n\n\nfunction getMediaDevices() {\n // eslint-disable-next-line compat/compat\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n // eslint-disable-next-line compat/compat\n return navigator.mediaDevices;\n }\n\n var _getUserMedia = navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n\n if (!_getUserMedia) {\n return null;\n }\n\n return {\n getUserMedia: function getUserMedia(opts) {\n return new Promise(function (resolve, reject) {\n _getUserMedia.call(navigator, opts, resolve, reject);\n });\n }\n };\n}\n/**\n * Webcam\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Webcam, _Plugin);\n\n function Webcam(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.mediaDevices = getMediaDevices();\n _this.supportsUserMedia = !!_this.mediaDevices;\n _this.protocol = location.protocol.match(/https/i) ? 'https' : 'http';\n _this.id = _this.opts.id || 'Webcam';\n _this.title = _this.opts.title || 'Camera';\n _this.type = 'acquirer';\n\n _this.icon = function () {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n width: \"32\",\n height: \"32\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"rect\", {\n fill: \"#03BFEF\",\n width: \"32\",\n height: \"32\",\n rx: \"16\"\n }), h(\"path\", {\n d: \"M22 11c1.133 0 2 .867 2 2v7.333c0 1.134-.867 2-2 2H10c-1.133 0-2-.866-2-2V13c0-1.133.867-2 2-2h2.333l1.134-1.733C13.6 9.133 13.8 9 14 9h4c.2 0 .4.133.533.267L19.667 11H22zm-6 1.533a3.764 3.764 0 0 0-3.8 3.8c0 2.129 1.672 3.801 3.8 3.801s3.8-1.672 3.8-3.8c0-2.13-1.672-3.801-3.8-3.801zm0 6.261c-1.395 0-2.46-1.066-2.46-2.46 0-1.395 1.065-2.461 2.46-2.461s2.46 1.066 2.46 2.46c0 1.395-1.065 2.461-2.46 2.461z\",\n fill: \"#FFF\",\n \"fill-rule\": \"nonzero\"\n })));\n };\n\n _this.defaultLocale = {\n strings: {\n smile: 'Smile!',\n takePicture: 'Take a picture',\n startRecording: 'Begin video recording',\n stopRecording: 'Stop video recording',\n allowAccessTitle: 'Please allow access to your camera',\n allowAccessDescription: 'In order to take pictures or record video with your camera, please allow camera access for this site.',\n noCameraTitle: 'Camera Not Available',\n noCameraDescription: 'In order to take pictures or record video, please connect a camera device',\n recordingStoppedMaxSize: 'Recording stopped because the file size is about to exceed the limit',\n recordingLength: 'Recording length %{recording_length}'\n }\n }; // set default options\n\n var defaultOptions = {\n onBeforeSnapshot: function onBeforeSnapshot() {\n return Promise.resolve();\n },\n countdown: false,\n modes: ['video-audio', 'video-only', 'audio-only', 'picture'],\n mirror: true,\n facingMode: 'user',\n preferredImageMimeType: null,\n preferredVideoMimeType: null,\n showRecordingLength: false\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this.install = _this.install.bind(_assertThisInitialized(_this));\n _this.setPluginState = _this.setPluginState.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this)); // Camera controls\n\n _this._start = _this._start.bind(_assertThisInitialized(_this));\n _this._stop = _this._stop.bind(_assertThisInitialized(_this));\n _this._takeSnapshot = _this._takeSnapshot.bind(_assertThisInitialized(_this));\n _this._startRecording = _this._startRecording.bind(_assertThisInitialized(_this));\n _this._stopRecording = _this._stopRecording.bind(_assertThisInitialized(_this));\n _this._oneTwoThreeSmile = _this._oneTwoThreeSmile.bind(_assertThisInitialized(_this));\n _this._focus = _this._focus.bind(_assertThisInitialized(_this));\n _this.webcamActive = false;\n\n if (_this.opts.countdown) {\n _this.opts.onBeforeSnapshot = _this._oneTwoThreeSmile;\n }\n\n return _this;\n }\n\n var _proto = Webcam.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.hasCameraCheck = function hasCameraCheck() {\n if (!this.mediaDevices) {\n return Promise.resolve(false);\n }\n\n return this.mediaDevices.enumerateDevices().then(function (devices) {\n return devices.some(function (device) {\n return device.kind === 'videoinput';\n });\n });\n };\n\n _proto.getConstraints = function getConstraints() {\n var acceptsAudio = this.opts.modes.indexOf('video-audio') !== -1 || this.opts.modes.indexOf('audio-only') !== -1;\n var acceptsVideo = this.opts.modes.indexOf('video-audio') !== -1 || this.opts.modes.indexOf('video-only') !== -1 || this.opts.modes.indexOf('picture') !== -1;\n return {\n audio: acceptsAudio,\n video: acceptsVideo ? {\n facingMode: this.opts.facingMode\n } : false\n };\n };\n\n _proto._start = function _start() {\n var _this2 = this;\n\n if (!this.supportsUserMedia) {\n return Promise.reject(new Error('Webcam access not supported'));\n }\n\n this.webcamActive = true;\n var constraints = this.getConstraints();\n this.hasCameraCheck().then(function (hasCamera) {\n _this2.setPluginState({\n hasCamera: hasCamera\n }); // ask user for access to their camera\n\n\n return _this2.mediaDevices.getUserMedia(constraints).then(function (stream) {\n _this2.stream = stream;\n\n _this2.setPluginState({\n cameraReady: true\n });\n }).catch(function (err) {\n _this2.setPluginState({\n cameraError: err\n });\n });\n });\n }\n /**\n * @returns {object}\n */\n ;\n\n _proto._getMediaRecorderOptions = function _getMediaRecorderOptions() {\n var options = {}; // Try to use the `opts.preferredVideoMimeType` or one of the `allowedFileTypes` for the recording.\n // If the browser doesn't support it, we'll fall back to the browser default instead.\n // Safari doesn't have the `isTypeSupported` API.\n\n if (MediaRecorder.isTypeSupported) {\n var restrictions = this.uppy.opts.restrictions;\n var preferredVideoMimeTypes = [];\n\n if (this.opts.preferredVideoMimeType) {\n preferredVideoMimeTypes = [this.opts.preferredVideoMimeType];\n } else if (restrictions.allowedFileTypes) {\n preferredVideoMimeTypes = restrictions.allowedFileTypes.map(toMimeType).filter(isVideoMimeType);\n }\n\n var acceptableMimeTypes = preferredVideoMimeTypes.filter(function (candidateType) {\n return MediaRecorder.isTypeSupported(candidateType) && getFileTypeExtension(candidateType);\n });\n\n if (acceptableMimeTypes.length > 0) {\n options.mimeType = acceptableMimeTypes[0];\n }\n }\n\n return options;\n };\n\n _proto._startRecording = function _startRecording() {\n var _this3 = this;\n\n this.recorder = new MediaRecorder(this.stream, this._getMediaRecorderOptions());\n this.recordingChunks = [];\n var stoppingBecauseOfMaxSize = false;\n this.recorder.addEventListener('dataavailable', function (event) {\n _this3.recordingChunks.push(event.data);\n\n var restrictions = _this3.uppy.opts.restrictions;\n\n if (_this3.recordingChunks.length > 1 && restrictions.maxFileSize != null && !stoppingBecauseOfMaxSize) {\n var totalSize = _this3.recordingChunks.reduce(function (acc, chunk) {\n return acc + chunk.size;\n }, 0); // Exclude the initial chunk from the average size calculation because it is likely to be a very small outlier\n\n\n var averageChunkSize = (totalSize - _this3.recordingChunks[0].size) / (_this3.recordingChunks.length - 1);\n var expectedEndChunkSize = averageChunkSize * 3;\n var maxSize = Math.max(0, restrictions.maxFileSize - expectedEndChunkSize);\n\n if (totalSize > maxSize) {\n stoppingBecauseOfMaxSize = true;\n\n _this3.uppy.info(_this3.i18n('recordingStoppedMaxSize'), 'warning', 4000);\n\n _this3._stopRecording();\n }\n }\n }); // use a \"time slice\" of 500ms: ondataavailable will be called each 500ms\n // smaller time slices mean we can more accurately check the max file size restriction\n\n this.recorder.start(500);\n\n if (this.opts.showRecordingLength) {\n // Start the recordingLengthTimer if we are showing the recording length.\n this.recordingLengthTimer = setInterval(function () {\n var currentRecordingLength = _this3.getPluginState().recordingLengthSeconds;\n\n _this3.setPluginState({\n recordingLengthSeconds: currentRecordingLength + 1\n });\n }, 1000);\n }\n\n this.setPluginState({\n isRecording: true\n });\n };\n\n _proto._stopRecording = function _stopRecording() {\n var _this4 = this;\n\n var stopped = new Promise(function (resolve, reject) {\n _this4.recorder.addEventListener('stop', function () {\n resolve();\n });\n\n _this4.recorder.stop();\n\n if (_this4.opts.showRecordingLength) {\n // Stop the recordingLengthTimer if we are showing the recording length.\n clearInterval(_this4.recordingLengthTimer);\n\n _this4.setPluginState({\n recordingLengthSeconds: 0\n });\n }\n });\n return stopped.then(function () {\n _this4.setPluginState({\n isRecording: false\n });\n\n return _this4.getVideo();\n }).then(function (file) {\n try {\n _this4.uppy.addFile(file);\n } catch (err) {\n // Logging the error, exept restrictions, which is handled in Core\n if (!err.isRestriction) {\n _this4.uppy.log(err);\n }\n }\n }).then(function () {\n _this4.recordingChunks = null;\n _this4.recorder = null;\n }, function (error) {\n _this4.recordingChunks = null;\n _this4.recorder = null;\n throw error;\n });\n };\n\n _proto._stop = function _stop() {\n this.stream.getAudioTracks().forEach(function (track) {\n track.stop();\n });\n this.stream.getVideoTracks().forEach(function (track) {\n track.stop();\n });\n this.webcamActive = false;\n this.stream = null;\n };\n\n _proto._getVideoElement = function _getVideoElement() {\n return this.el.querySelector('.uppy-Webcam-video');\n };\n\n _proto._oneTwoThreeSmile = function _oneTwoThreeSmile() {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n var count = _this5.opts.countdown;\n var countDown = setInterval(function () {\n if (!_this5.webcamActive) {\n clearInterval(countDown);\n _this5.captureInProgress = false;\n return reject(new Error('Webcam is not active'));\n }\n\n if (count > 0) {\n _this5.uppy.info(count + \"...\", 'warning', 800);\n\n count--;\n } else {\n clearInterval(countDown);\n\n _this5.uppy.info(_this5.i18n('smile'), 'success', 1500);\n\n setTimeout(function () {\n return resolve();\n }, 1500);\n }\n }, 1000);\n });\n };\n\n _proto._takeSnapshot = function _takeSnapshot() {\n var _this6 = this;\n\n if (this.captureInProgress) return;\n this.captureInProgress = true;\n this.opts.onBeforeSnapshot().catch(function (err) {\n var message = typeof err === 'object' ? err.message : err;\n\n _this6.uppy.info(message, 'error', 5000);\n\n return Promise.reject(new Error(\"onBeforeSnapshot: \" + message));\n }).then(function () {\n return _this6._getImage();\n }).then(function (tagFile) {\n _this6.captureInProgress = false;\n\n try {\n _this6.uppy.addFile(tagFile);\n } catch (err) {\n // Logging the error, except restrictions, which is handled in Core\n if (!err.isRestriction) {\n _this6.uppy.log(err);\n }\n }\n }, function (error) {\n _this6.captureInProgress = false;\n throw error;\n });\n };\n\n _proto._getImage = function _getImage() {\n var _this7 = this;\n\n var video = this._getVideoElement();\n\n if (!video) {\n return Promise.reject(new Error('No video element found, likely due to the Webcam tab being closed.'));\n }\n\n var width = video.videoWidth;\n var height = video.videoHeight;\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext('2d');\n ctx.drawImage(video, 0, 0);\n var restrictions = this.uppy.opts.restrictions;\n var preferredImageMimeTypes = [];\n\n if (this.opts.preferredImageMimeType) {\n preferredImageMimeTypes = [this.opts.preferredImageMimeType];\n } else if (restrictions.allowedFileTypes) {\n preferredImageMimeTypes = restrictions.allowedFileTypes.map(toMimeType).filter(isImageMimeType);\n }\n\n var mimeType = preferredImageMimeTypes[0] || 'image/jpeg';\n var ext = getFileTypeExtension(mimeType) || 'jpg';\n var name = \"cam-\" + Date.now() + \".\" + ext;\n return canvasToBlob(canvas, mimeType).then(function (blob) {\n return {\n source: _this7.id,\n name: name,\n data: new Blob([blob], {\n type: mimeType\n }),\n type: mimeType\n };\n });\n };\n\n _proto.getVideo = function getVideo() {\n var mimeType = this.recordingChunks[0].type;\n var fileExtension = getFileTypeExtension(mimeType);\n\n if (!fileExtension) {\n return Promise.reject(new Error(\"Could not retrieve recording: Unsupported media type \\\"\" + mimeType + \"\\\"\"));\n }\n\n var name = \"webcam-\" + Date.now() + \".\" + fileExtension;\n var blob = new Blob(this.recordingChunks, {\n type: mimeType\n });\n var file = {\n source: this.id,\n name: name,\n data: new Blob([blob], {\n type: mimeType\n }),\n type: mimeType\n };\n return Promise.resolve(file);\n };\n\n _proto._focus = function _focus() {\n var _this8 = this;\n\n if (!this.opts.countdown) return;\n setTimeout(function () {\n _this8.uppy.info(_this8.i18n('smile'), 'success', 1500);\n }, 1000);\n };\n\n _proto.render = function render() {\n if (!this.webcamActive) {\n this._start();\n }\n\n var webcamState = this.getPluginState();\n\n if (!webcamState.cameraReady || !webcamState.hasCamera) {\n return h(PermissionsScreen, {\n icon: CameraIcon,\n i18n: this.i18n,\n hasCamera: webcamState.hasCamera\n });\n }\n\n return h(CameraScreen, _extends({}, webcamState, {\n onSnapshot: this._takeSnapshot,\n onStartRecording: this._startRecording,\n onStopRecording: this._stopRecording,\n onFocus: this._focus,\n onStop: this._stop,\n i18n: this.i18n,\n modes: this.opts.modes,\n showRecordingLength: this.opts.showRecordingLength,\n supportsRecording: supportsMediaRecorder(),\n recording: webcamState.isRecording,\n mirror: this.opts.mirror,\n src: this.stream\n }));\n };\n\n _proto.install = function install() {\n this.setPluginState({\n cameraReady: false,\n recordingLengthSeconds: 0\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n if (this.stream) {\n this._stop();\n }\n\n this.unmount();\n };\n\n return Webcam;\n}(Plugin), _class.VERSION = \"1.6.6\", _temp);","// TODO Check which types are actually supported in browsers. Chrome likes webm\n// from my testing, but we may need more.\n// We could use a library but they tend to contain dozens of KBs of mappings,\n// most of which will go unused, so not sure if that's worth it.\nvar mimeToExtensions = {\n 'audio/mp3': 'mp3',\n 'audio/ogg': 'ogg',\n 'audio/webm': 'webm',\n 'image/gif': 'gif',\n 'image/heic': 'heic',\n 'image/heif': 'heif',\n 'image/jpeg': 'jpg',\n 'image/png': 'png',\n 'image/svg+xml': 'svg',\n 'video/mp4': 'mp4',\n 'video/ogg': 'ogv',\n 'video/quicktime': 'mov',\n 'video/webm': 'webm',\n 'video/x-matroska': 'mkv',\n 'video/x-msvideo': 'avi'\n};\n\nmodule.exports = function getFileTypeExtension(mimeType) {\n // Remove the ; bit in 'video/x-matroska;codecs=avc1'\n mimeType = mimeType.replace(/;.*$/, '');\n return mimeToExtensions[mimeType] || null;\n};","var _require = require('preact'),\n h = _require.h;\n\nmodule.exports = function (props) {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n fill: \"#0097DC\",\n width: \"66\",\n height: \"55\",\n viewBox: \"0 0 66 55\"\n }, h(\"path\", {\n d: \"M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z\",\n \"fill-rule\": \"evenodd\"\n }));\n};","var _class, _temp;\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 _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\nvar _require = require('preact'),\n h = _require.h;\n\nvar _require2 = require('@uppy/core'),\n Plugin = _require2.Plugin;\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar getFileTypeExtension = require('@uppy/utils/lib/getFileTypeExtension');\n\nvar ScreenRecIcon = require('./ScreenRecIcon');\n\nvar CaptureScreen = require('./CaptureScreen'); // Adapted from: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia\n\n\nfunction getMediaDevices() {\n // check if screen capturing is supported\n\n /* eslint-disable */\n if (navigator && navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia && window && window.MediaRecorder) {\n return navigator.mediaDevices;\n }\n /* eslint-enable */\n\n\n return null;\n}\n/**\n * Screen capture\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(ScreenCapture, _Plugin);\n\n function ScreenCapture(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.mediaDevices = getMediaDevices();\n _this.protocol = location.protocol.match(/https/i) ? 'https' : 'http';\n _this.id = _this.opts.id || 'ScreenCapture';\n _this.title = _this.opts.title || 'Screencast';\n _this.type = 'acquirer';\n _this.icon = ScreenRecIcon;\n _this.defaultLocale = {\n strings: {\n startCapturing: 'Begin screen capturing',\n stopCapturing: 'Stop screen capturing',\n submitRecordedFile: 'Submit captured video',\n streamActive: 'Stream active',\n streamPassive: 'Stream passive',\n micDisabled: 'Microphone access denied by user',\n recording: 'Recording'\n }\n }; // set default options\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints\n\n var defaultOptions = {\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints#Properties_of_shared_screen_tracks\n displayMediaConstraints: {\n video: {\n width: 1280,\n height: 720,\n frameRate: {\n ideal: 3,\n max: 5\n },\n cursor: 'motion',\n displaySurface: 'monitor'\n }\n },\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints/audio\n userMediaConstraints: {\n audio: true\n },\n preferredVideoMimeType: 'video/webm'\n }; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, {}, opts); // i18n\n\n _this.translator = new Translator([_this.defaultLocale, _this.uppy.locale, _this.opts.locale]);\n _this.i18n = _this.translator.translate.bind(_this.translator);\n _this.i18nArray = _this.translator.translateArray.bind(_this.translator); // uppy plugin class related\n\n _this.install = _this.install.bind(_assertThisInitialized(_this));\n _this.setPluginState = _this.setPluginState.bind(_assertThisInitialized(_this));\n _this.render = _this.render.bind(_assertThisInitialized(_this)); // screen capturer related\n\n _this.start = _this.start.bind(_assertThisInitialized(_this));\n _this.stop = _this.stop.bind(_assertThisInitialized(_this));\n _this.startRecording = _this.startRecording.bind(_assertThisInitialized(_this));\n _this.stopRecording = _this.stopRecording.bind(_assertThisInitialized(_this));\n _this.submit = _this.submit.bind(_assertThisInitialized(_this));\n _this.streamInterrupted = _this.streamInactivated.bind(_assertThisInitialized(_this)); // initialize\n\n _this.captureActive = false;\n _this.capturedMediaFile = null;\n return _this;\n }\n\n var _proto = ScreenCapture.prototype;\n\n _proto.install = function install() {\n // Return if browser doesn’t support getDisplayMedia and\n if (!this.mediaDevices) {\n this.uppy.log('Screen recorder access is not supported', 'error');\n return null;\n }\n\n this.setPluginState({\n streamActive: false,\n audioStreamActive: false\n });\n var target = this.opts.target;\n\n if (target) {\n this.mount(target, this);\n }\n };\n\n _proto.uninstall = function uninstall() {\n if (this.videoStream) {\n this.stop();\n }\n\n this.unmount();\n };\n\n _proto.start = function start() {\n var _this2 = this;\n\n if (!this.mediaDevices) {\n return Promise.reject(new Error('Screen recorder access not supported'));\n }\n\n this.captureActive = true;\n this.selectAudioStreamSource();\n this.selectVideoStreamSource().then(function (res) {\n // something happened in start -> return\n if (res === false) {\n // Close the Dashboard panel if plugin is installed\n // into Dashboard (could be other parent UI plugin)\n if (_this2.parent && _this2.parent.hideAllPanels) {\n _this2.parent.hideAllPanels();\n\n _this2.captureActive = false;\n }\n }\n });\n };\n\n _proto.selectVideoStreamSource = function selectVideoStreamSource() {\n var _this3 = this;\n\n // if active stream available, return it\n if (this.videoStream) {\n return new Promise(function (resolve) {\n return resolve(_this3.videoStream);\n });\n } // ask user to select source to record and get mediastream from that\n // eslint-disable-next-line compat/compat\n\n\n return this.mediaDevices.getDisplayMedia(this.opts.displayMediaConstraints).then(function (videoStream) {\n _this3.videoStream = videoStream; // add event listener to stop recording if stream is interrupted\n\n _this3.videoStream.addEventListener('inactive', function (event) {\n _this3.streamInactivated();\n });\n\n _this3.setPluginState({\n streamActive: true\n });\n\n return videoStream;\n }).catch(function (err) {\n _this3.setPluginState({\n screenRecError: err\n });\n\n _this3.userDenied = true;\n setTimeout(function () {\n _this3.userDenied = false;\n }, 1000);\n return false;\n });\n };\n\n _proto.selectAudioStreamSource = function selectAudioStreamSource() {\n var _this4 = this;\n\n // if active stream available, return it\n if (this.audioStream) {\n return new Promise(function (resolve) {\n return resolve(_this4.audioStream);\n });\n } // ask user to select source to record and get mediastream from that\n // eslint-disable-next-line compat/compat\n\n\n return this.mediaDevices.getUserMedia(this.opts.userMediaConstraints).then(function (audioStream) {\n _this4.audioStream = audioStream;\n\n _this4.setPluginState({\n audioStreamActive: true\n });\n\n return audioStream;\n }).catch(function (err) {\n if (err.name === 'NotAllowedError') {\n _this4.uppy.info(_this4.i18n('micDisabled'), 'error', 5000);\n }\n\n return false;\n });\n };\n\n _proto.startRecording = function startRecording() {\n var _this5 = this;\n\n var options = {};\n this.capturedMediaFile = null;\n this.recordingChunks = [];\n var preferredVideoMimeType = this.opts.preferredVideoMimeType;\n this.selectVideoStreamSource().then(function (videoStream) {\n // Attempt to use the passed preferredVideoMimeType (if any) during recording.\n // If the browser doesn't support it, we'll fall back to the browser default instead\n if (preferredVideoMimeType && MediaRecorder.isTypeSupported(preferredVideoMimeType) && getFileTypeExtension(preferredVideoMimeType)) {\n options.mimeType = preferredVideoMimeType;\n } // prepare tracks\n\n\n var tracks = [videoStream.getVideoTracks()[0]]; // merge audio if exits\n\n if (_this5.audioStream) {\n tracks.push(_this5.audioStream.getAudioTracks()[0]);\n } // create new stream from video and audio\n // eslint-disable-next-line compat/compat\n\n\n _this5.outputStream = new MediaStream(tracks); // initialize mediarecorder\n\n _this5.recorder = new MediaRecorder(_this5.outputStream, options); // push data to buffer when data available\n\n _this5.recorder.addEventListener('dataavailable', function (event) {\n _this5.recordingChunks.push(event.data);\n }); // start recording\n\n\n _this5.recorder.start(); // set plugin state to recording\n\n\n _this5.setPluginState({\n recording: true\n });\n }).catch(function (err) {\n _this5.uppy.log(err, 'error');\n });\n };\n\n _proto.streamInactivated = function streamInactivated() {\n // get screen recorder state\n var _this$getPluginState = _extends({}, this.getPluginState()),\n recordedVideo = _this$getPluginState.recordedVideo,\n recording = _this$getPluginState.recording;\n\n if (!recordedVideo && !recording) {\n // Close the Dashboard panel if plugin is installed\n // into Dashboard (could be other parent UI plugin)\n if (this.parent && this.parent.hideAllPanels) {\n this.parent.hideAllPanels();\n }\n } else if (recording) {\n // stop recorder if it is active\n this.uppy.log('Capture stream inactive — stop recording');\n this.stopRecording();\n }\n\n this.videoStream = null;\n this.audioStream = null;\n this.setPluginState({\n streamActive: false,\n audioStreamActive: false\n });\n };\n\n _proto.stopRecording = function stopRecording() {\n var _this6 = this;\n\n var stopped = new Promise(function (resolve, reject) {\n _this6.recorder.addEventListener('stop', function () {\n resolve();\n });\n\n _this6.recorder.stop();\n });\n return stopped.then(function () {\n // recording stopped\n _this6.setPluginState({\n recording: false\n }); // get video file after recorder stopped\n\n\n return _this6.getVideo();\n }).then(function (file) {\n // store media file\n _this6.capturedMediaFile = file; // create object url for capture result preview\n\n _this6.setPluginState({\n recordedVideo: URL.createObjectURL(file.data)\n });\n }).then(function () {\n _this6.recordingChunks = null;\n _this6.recorder = null;\n }, function (error) {\n _this6.recordingChunks = null;\n _this6.recorder = null;\n throw error;\n });\n };\n\n _proto.submit = function submit() {\n try {\n // add recorded file to uppy\n if (this.capturedMediaFile) {\n this.uppy.addFile(this.capturedMediaFile);\n }\n } catch (err) {\n // Logging the error, exept restrictions, which is handled in Core\n if (!err.isRestriction) {\n this.uppy.log(err, 'error');\n }\n }\n };\n\n _proto.stop = function stop() {\n // flush video stream\n if (this.videoStream) {\n this.videoStream.getVideoTracks().forEach(function (track) {\n track.stop();\n });\n this.videoStream.getAudioTracks().forEach(function (track) {\n track.stop();\n });\n this.videoStream = null;\n } // flush audio stream\n\n\n if (this.audioStream) {\n this.audioStream.getAudioTracks().forEach(function (track) {\n track.stop();\n });\n this.audioStream.getVideoTracks().forEach(function (track) {\n track.stop();\n });\n this.audioStream = null;\n } // flush output stream\n\n\n if (this.outputStream) {\n this.outputStream.getAudioTracks().forEach(function (track) {\n track.stop();\n });\n this.outputStream.getVideoTracks().forEach(function (track) {\n track.stop();\n });\n this.outputStream = null;\n } // remove preview video\n\n\n this.setPluginState({\n recordedVideo: null\n });\n this.captureActive = false;\n };\n\n _proto.getVideo = function getVideo() {\n var mimeType = this.recordingChunks[0].type;\n var fileExtension = getFileTypeExtension(mimeType);\n\n if (!fileExtension) {\n return Promise.reject(new Error(\"Could not retrieve recording: Unsupported media type \\\"\" + mimeType + \"\\\"\"));\n }\n\n var name = \"screencap-\" + Date.now() + \".\" + fileExtension;\n var blob = new Blob(this.recordingChunks, {\n type: mimeType\n });\n var file = {\n source: this.id,\n name: name,\n data: new Blob([blob], {\n type: mimeType\n }),\n type: mimeType\n };\n return Promise.resolve(file);\n };\n\n _proto.render = function render(state) {\n // get screen recorder state\n var recorderState = this.getPluginState();\n\n if (!recorderState.streamActive && !this.captureActive && !this.userDenied) {\n this.start();\n }\n\n return h(CaptureScreen, _extends({}, recorderState, {\n onStartRecording: this.startRecording,\n onStopRecording: this.stopRecording,\n onStop: this.stop,\n onSubmit: this.submit,\n i18n: this.i18n,\n stream: this.videoStream\n }));\n };\n\n return ScreenCapture;\n}(Plugin), _class.VERSION = \"1.0.2\", _temp);","var _class, _temp;\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 _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\n/**\n * This plugin is currently a A Big Hack™! The core reason for that is how this plugin\n * interacts with Uppy's current pipeline design. The pipeline can handle files in steps,\n * including preprocessing, uploading, and postprocessing steps. This plugin initially\n * was designed to do its work in a preprocessing step, and let XHRUpload deal with the\n * actual file upload as an uploading step. However, Uppy runs steps on all files at once,\n * sequentially: first, all files go through a preprocessing step, then, once they are all\n * done, they go through the uploading step.\n *\n * For S3, this causes severely broken behaviour when users upload many files. The\n * preprocessing step will request S3 upload URLs that are valid for a short time only,\n * but it has to do this for _all_ files, which can take a long time if there are hundreds\n * or even thousands of files. By the time the uploader step starts, the first URLs may\n * already have expired. If not, the uploading might take such a long time that later URLs\n * will expire before some files can be uploaded.\n *\n * The long-term solution to this problem is to change the upload pipeline so that files\n * can be sent to the next step individually. That requires a breakig change, so it is\n * planned for Uppy v2.\n *\n * In the mean time, this plugin is stuck with a hackier approach: the necessary parts\n * of the XHRUpload implementation were copied into this plugin, as the MiniXHRUpload\n * class, and this plugin calls into it immediately once it receives an upload URL.\n * This isn't as nicely modular as we'd like and requires us to maintain two copies of\n * the XHRUpload code, but at least it's not horrifically broken :)\n */\n// If global `URL` constructor is available, use it\nvar URL_ = typeof URL === 'function' ? URL : require('url-parse');\n\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\n\nvar settle = require('@uppy/utils/lib/settle');\n\nvar hasProperty = require('@uppy/utils/lib/hasProperty');\n\nvar _require2 = require('@uppy/companion-client'),\n RequestClient = _require2.RequestClient;\n\nvar qsStringify = require('qs-stringify');\n\nvar MiniXHRUpload = require('./MiniXHRUpload');\n\nfunction resolveUrl(origin, link) {\n return origin ? new URL_(link, origin).toString() : new URL_(link).toString();\n}\n\nfunction isXml(content, xhr) {\n var rawContentType = xhr.headers ? xhr.headers['content-type'] : xhr.getResponseHeader('Content-Type');\n\n if (rawContentType === null) {\n return false;\n } // Get rid of mime parameters like charset=utf-8\n\n\n var contentType = rawContentType.replace(/;.*$/, '').toLowerCase();\n\n if (typeof contentType === 'string') {\n if (contentType === 'application/xml' || contentType === 'text/xml') {\n return true;\n } // GCS uses text/html for some reason\n // https://github.com/transloadit/uppy/issues/896\n\n\n if (contentType === 'text/html' && /^<\\?xml /.test(content)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getXmlValue(source, key) {\n var start = source.indexOf(\"<\" + key + \">\");\n var end = source.indexOf(\"\", start);\n return start !== -1 && end !== -1 ? source.slice(start + key.length + 2, end) : '';\n}\n\nfunction assertServerError(res) {\n if (res && res.error) {\n var error = new Error(res.message);\n\n _extends(error, res.error);\n\n throw error;\n }\n\n return res;\n} // warning deduplication flag: see `getResponseData()` XHRUpload option definition\n\n\nvar warnedSuccessActionStatus = false;\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(AwsS3, _Plugin);\n\n function AwsS3(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'uploader';\n _this.id = _this.opts.id || 'AwsS3';\n _this.title = 'AWS S3';\n var defaultOptions = {\n timeout: 30 * 1000,\n limit: 0,\n metaFields: [],\n // have to opt in\n getUploadParameters: _this.getUploadParameters.bind(_assertThisInitialized(_this))\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n _this.client = new RequestClient(uppy, opts);\n _this.handleUpload = _this.handleUpload.bind(_assertThisInitialized(_this));\n _this.requests = new RateLimitedQueue(_this.opts.limit);\n return _this;\n }\n\n var _proto = AwsS3.prototype;\n\n _proto.getUploadParameters = function getUploadParameters(file) {\n if (!this.opts.companionUrl) {\n throw new Error('Expected a `companionUrl` option containing a Companion address.');\n }\n\n var filename = file.meta.name;\n var type = file.meta.type;\n var metadata = {};\n this.opts.metaFields.forEach(function (key) {\n if (file.meta[key] != null) {\n metadata[key] = file.meta[key].toString();\n }\n });\n var query = qsStringify({\n filename: filename,\n type: type,\n metadata: metadata\n });\n return this.client.get(\"s3/params?\" + query).then(assertServerError);\n };\n\n _proto.validateParameters = function validateParameters(file, params) {\n var valid = typeof params === 'object' && params && typeof params.url === 'string' && (typeof params.fields === 'object' || params.fields == null) && (params.method == null || /^(put|post)$/i.test(params.method));\n\n if (!valid) {\n var err = new TypeError(\"AwsS3: got incorrect result from 'getUploadParameters()' for file '\" + file.name + \"', expected an object '{ url, method, fields, headers }'.\\nSee https://uppy.io/docs/aws-s3/#getUploadParameters-file for more on the expected format.\");\n console.error(err);\n throw err;\n }\n };\n\n _proto.handleUpload = function handleUpload(fileIDs) {\n var _this2 = this;\n\n /**\n * keep track of `getUploadParameters()` responses\n * so we can cancel the calls individually using just a file ID\n *\n * @type {object.}\n */\n var paramsPromises = Object.create(null);\n\n function onremove(file) {\n var id = file.id;\n\n if (hasProperty(paramsPromises, id)) {\n paramsPromises[id].abort();\n }\n }\n\n this.uppy.on('file-removed', onremove);\n fileIDs.forEach(function (id) {\n var file = _this2.uppy.getFile(id);\n\n _this2.uppy.emit('upload-started', file);\n });\n var getUploadParameters = this.requests.wrapPromiseFunction(function (file) {\n return _this2.opts.getUploadParameters(file);\n });\n var numberOfFiles = fileIDs.length;\n return settle(fileIDs.map(function (id, index) {\n paramsPromises[id] = getUploadParameters(_this2.uppy.getFile(id));\n return paramsPromises[id].then(function (params) {\n delete paramsPromises[id];\n\n var file = _this2.uppy.getFile(id);\n\n _this2.validateParameters(file, params);\n\n var _params$method = params.method,\n method = _params$method === void 0 ? 'post' : _params$method,\n url = params.url,\n fields = params.fields,\n headers = params.headers;\n var xhrOpts = {\n method: method,\n formData: method.toLowerCase() === 'post',\n endpoint: url,\n metaFields: fields ? Object.keys(fields) : []\n };\n\n if (headers) {\n xhrOpts.headers = headers;\n }\n\n _this2.uppy.setFileState(file.id, {\n meta: _extends({}, file.meta, {}, fields),\n xhrUpload: xhrOpts\n });\n\n return _this2._uploader.uploadFile(file.id, index, numberOfFiles);\n }).catch(function (error) {\n delete paramsPromises[id];\n\n var file = _this2.uppy.getFile(id);\n\n _this2.uppy.emit('upload-error', file, error);\n });\n })).then(function (settled) {\n // cleanup.\n _this2.uppy.off('file-removed', onremove);\n\n return settled;\n });\n };\n\n _proto.install = function install() {\n var uppy = this.uppy;\n this.uppy.addUploader(this.handleUpload); // Get the response data from a successful XMLHttpRequest instance.\n // `content` is the S3 response as a string.\n // `xhr` is the XMLHttpRequest instance.\n\n function defaultGetResponseData(content, xhr) {\n var opts = this; // If no response, we've hopefully done a PUT request to the file\n // in the bucket on its full URL.\n\n if (!isXml(content, xhr)) {\n if (opts.method.toUpperCase() === 'POST') {\n if (!warnedSuccessActionStatus) {\n uppy.log('[AwsS3] No response data found, make sure to set the success_action_status AWS SDK option to 201. See https://uppy.io/docs/aws-s3/#POST-Uploads', 'warning');\n warnedSuccessActionStatus = true;\n } // The responseURL won't contain the object key. Give up.\n\n\n return {\n location: null\n };\n } // responseURL is not available in older browsers.\n\n\n if (!xhr.responseURL) {\n return {\n location: null\n };\n } // Trim the query string because it's going to be a bunch of presign\n // parameters for a PUT request—doing a GET request with those will\n // always result in an error\n\n\n return {\n location: xhr.responseURL.replace(/\\?.*$/, '')\n };\n }\n\n return {\n // Some S3 alternatives do not reply with an absolute URL.\n // Eg DigitalOcean Spaces uses /$bucketName/xyz\n location: resolveUrl(xhr.responseURL, getXmlValue(content, 'Location')),\n bucket: getXmlValue(content, 'Bucket'),\n key: getXmlValue(content, 'Key'),\n etag: getXmlValue(content, 'ETag')\n };\n } // Get the error data from a failed XMLHttpRequest instance.\n // `content` is the S3 response as a string.\n // `xhr` is the XMLHttpRequest instance.\n\n\n function defaultGetResponseError(content, xhr) {\n // If no response, we don't have a specific error message, use the default.\n if (!isXml(content, xhr)) {\n return;\n }\n\n var error = getXmlValue(content, 'Message');\n return new Error(error);\n }\n\n var xhrOptions = {\n fieldName: 'file',\n responseUrlFieldName: 'location',\n timeout: this.opts.timeout,\n // Share the rate limiting queue with XHRUpload.\n __queue: this.requests,\n responseType: 'text',\n getResponseData: this.opts.getResponseData || defaultGetResponseData,\n getResponseError: defaultGetResponseError\n }; // Revert to `this.uppy.use(XHRUpload)` once the big comment block at the top of\n // this file is solved\n\n this._uploader = new MiniXHRUpload(this.uppy, xhrOptions);\n this._uploader.i18n = this.uppy.i18n;\n };\n\n _proto.uninstall = function uninstall() {\n this.uppy.removePreProcessor(this.handleUpload);\n };\n\n return AwsS3;\n}(Plugin), _class.VERSION = \"1.6.5\", _temp);","'use strict';\n\nvar required = require('requires-port')\n , qs = require('querystringify')\n , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i\n , whitespace = '[\\\\x09\\\\x0A\\\\x0B\\\\x0C\\\\x0D\\\\x20\\\\xA0\\\\u1680\\\\u180E\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200A\\\\u202F\\\\u205F\\\\u3000\\\\u2028\\\\u2029\\\\uFEFF]'\n , left = new RegExp('^'+ whitespace +'+');\n\n/**\n * Trim a given string.\n *\n * @param {String} str String to trim.\n * @public\n */\nfunction trimLeft(str) {\n return (str ? str : '').toString().replace(left, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n * indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n * the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n ['#', 'hash'], // Extract from the back.\n ['?', 'query'], // Extract from the back.\n function sanitize(address) { // Sanitize what is left of the address\n return address.replace('\\\\', '/');\n },\n ['/', 'pathname'], // Extract from the back.\n ['@', 'auth', 1], // Extract from the front.\n [NaN, 'host', undefined, 1, 1], // Set left over value.\n [/:(\\d+)$/, 'port', undefined, 1], // RegExp the back.\n [NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n var globalVar;\n\n if (typeof window !== 'undefined') globalVar = window;\n else if (typeof global !== 'undefined') globalVar = global;\n else if (typeof self !== 'undefined') globalVar = self;\n else globalVar = {};\n\n var location = globalVar.location || {};\n loc = loc || location;\n\n var finaldestination = {}\n , type = typeof loc\n , key;\n\n if ('blob:' === loc.protocol) {\n finaldestination = new Url(unescape(loc.pathname), {});\n } else if ('string' === type) {\n finaldestination = new Url(loc, {});\n for (key in ignore) delete finaldestination[key];\n } else if ('object' === type) {\n for (key in loc) {\n if (key in ignore) continue;\n finaldestination[key] = loc[key];\n }\n\n if (finaldestination.slashes === undefined) {\n finaldestination.slashes = slashes.test(loc.href);\n }\n }\n\n return finaldestination;\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address) {\n address = trimLeft(address);\n var match = protocolre.exec(address);\n\n return {\n protocol: match[1] ? match[1].toLowerCase() : '',\n slashes: !!match[2],\n rest: match[3]\n };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n if (relative === '') return base;\n\n var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n , i = path.length\n , last = path[i - 1]\n , unshift = false\n , up = 0;\n\n while (i--) {\n if (path[i] === '.') {\n path.splice(i, 1);\n } else if (path[i] === '..') {\n path.splice(i, 1);\n up++;\n } else if (up) {\n if (i === 0) unshift = true;\n path.splice(i, 1);\n up--;\n }\n }\n\n if (unshift) path.unshift('');\n if (last === '.' || last === '..') path.push('');\n\n return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n address = trimLeft(address);\n\n if (!(this instanceof Url)) {\n return new Url(address, location, parser);\n }\n\n var relative, extracted, parse, instruction, index, key\n , instructions = rules.slice()\n , type = typeof location\n , url = this\n , i = 0;\n\n //\n // The following if statements allows this module two have compatibility with\n // 2 different API:\n //\n // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n // where the boolean indicates that the query string should also be parsed.\n //\n // 2. The `URL` interface of the browser which accepts a URL, object as\n // arguments. The supplied object will be used as default values / fall-back\n // for relative paths.\n //\n if ('object' !== type && 'string' !== type) {\n parser = location;\n location = null;\n }\n\n if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n location = lolcation(location);\n\n //\n // Extract protocol information before running the instructions.\n //\n extracted = extractProtocol(address || '');\n relative = !extracted.protocol && !extracted.slashes;\n url.slashes = extracted.slashes || relative && location.slashes;\n url.protocol = extracted.protocol || location.protocol || '';\n address = extracted.rest;\n\n //\n // When the authority component is absent the URL starts with a path\n // component.\n //\n if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];\n\n for (; i < instructions.length; i++) {\n instruction = instructions[i];\n\n if (typeof instruction === 'function') {\n address = instruction(address);\n continue;\n }\n\n parse = instruction[0];\n key = instruction[1];\n\n if (parse !== parse) {\n url[key] = address;\n } else if ('string' === typeof parse) {\n if (~(index = address.indexOf(parse))) {\n if ('number' === typeof instruction[2]) {\n url[key] = address.slice(0, index);\n address = address.slice(index + instruction[2]);\n } else {\n url[key] = address.slice(index);\n address = address.slice(0, index);\n }\n }\n } else if ((index = parse.exec(address))) {\n url[key] = index[1];\n address = address.slice(0, index.index);\n }\n\n url[key] = url[key] || (\n relative && instruction[3] ? location[key] || '' : ''\n );\n\n //\n // Hostname, host and protocol should be lowercased so they can be used to\n // create a proper `origin`.\n //\n if (instruction[4]) url[key] = url[key].toLowerCase();\n }\n\n //\n // Also parse the supplied query string in to an object. If we're supplied\n // with a custom parser as function use that instead of the default build-in\n // parser.\n //\n if (parser) url.query = parser(url.query);\n\n //\n // If the URL is relative, resolve the pathname against the base URL.\n //\n if (\n relative\n && location.slashes\n && url.pathname.charAt(0) !== '/'\n && (url.pathname !== '' || location.pathname !== '')\n ) {\n url.pathname = resolve(url.pathname, location.pathname);\n }\n\n //\n // We should not add port numbers if they are already the default port number\n // for a given protocol. As the host also contains the port number we're going\n // override it with the hostname which contains no port number.\n //\n if (!required(url.port, url.protocol)) {\n url.host = url.hostname;\n url.port = '';\n }\n\n //\n // Parse down the `auth` for the username and password.\n //\n url.username = url.password = '';\n if (url.auth) {\n instruction = url.auth.split(':');\n url.username = instruction[0] || '';\n url.password = instruction[1] || '';\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n //\n // The href is just the compiled result.\n //\n url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part Property we need to adjust.\n * @param {Mixed} value The newly assigned value.\n * @param {Boolean|Function} fn When setting the query, it will be the function\n * used to parse the query.\n * When setting the protocol, double slash will be\n * removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n var url = this;\n\n switch (part) {\n case 'query':\n if ('string' === typeof value && value.length) {\n value = (fn || qs.parse)(value);\n }\n\n url[part] = value;\n break;\n\n case 'port':\n url[part] = value;\n\n if (!required(value, url.protocol)) {\n url.host = url.hostname;\n url[part] = '';\n } else if (value) {\n url.host = url.hostname +':'+ value;\n }\n\n break;\n\n case 'hostname':\n url[part] = value;\n\n if (url.port) value += ':'+ url.port;\n url.host = value;\n break;\n\n case 'host':\n url[part] = value;\n\n if (/:\\d+$/.test(value)) {\n value = value.split(':');\n url.port = value.pop();\n url.hostname = value.join(':');\n } else {\n url.hostname = value;\n url.port = '';\n }\n\n break;\n\n case 'protocol':\n url.protocol = value.toLowerCase();\n url.slashes = !fn;\n break;\n\n case 'pathname':\n case 'hash':\n if (value) {\n var char = part === 'pathname' ? '/' : '#';\n url[part] = value.charAt(0) !== char ? char + value : value;\n } else {\n url[part] = value;\n }\n break;\n\n default:\n url[part] = value;\n }\n\n for (var i = 0; i < rules.length; i++) {\n var ins = rules[i];\n\n if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n }\n\n url.origin = url.protocol && url.host && url.protocol !== 'file:'\n ? url.protocol +'//'+ url.host\n : 'null';\n\n url.href = url.toString();\n\n return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n var query\n , url = this\n , protocol = url.protocol;\n\n if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n var result = protocol + (url.slashes ? '//' : '');\n\n if (url.username) {\n result += url.username;\n if (url.password) result += ':'+ url.password;\n result += '@';\n }\n\n result += url.host + url.pathname;\n\n query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n if (url.hash) result += url.hash;\n\n return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/**\n * Helper to abort upload requests if there has not been any progress for `timeout` ms.\n * Create an instance using `timer = new ProgressTimeout(10000, onTimeout)`\n * Call `timer.progress()` to signal that there has been progress of any kind.\n * Call `timer.done()` when the upload has completed.\n */\nvar ProgressTimeout = /*#__PURE__*/function () {\n function ProgressTimeout(timeout, timeoutHandler) {\n this._timeout = timeout;\n this._onTimedOut = timeoutHandler;\n this._isDone = false;\n this._aliveTimer = null;\n this._onTimedOut = this._onTimedOut.bind(this);\n }\n\n var _proto = ProgressTimeout.prototype;\n\n _proto.progress = function progress() {\n // Some browsers fire another progress event when the upload is\n // cancelled, so we have to ignore progress after the timer was\n // told to stop.\n if (this._isDone) return;\n\n if (this._timeout > 0) {\n if (this._aliveTimer) clearTimeout(this._aliveTimer);\n this._aliveTimer = setTimeout(this._onTimedOut, this._timeout);\n }\n };\n\n _proto.done = function done() {\n if (this._aliveTimer) {\n clearTimeout(this._aliveTimer);\n this._aliveTimer = null;\n }\n\n this._isDone = true;\n };\n\n return ProgressTimeout;\n}();\n\nmodule.exports = ProgressTimeout;","var _class, _temp;\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 _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 _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar _require2 = require('@uppy/companion-client'),\n Socket = _require2.Socket,\n Provider = _require2.Provider,\n RequestClient = _require2.RequestClient;\n\nvar EventTracker = require('@uppy/utils/lib/EventTracker');\n\nvar emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n\nvar getSocketHost = require('@uppy/utils/lib/getSocketHost');\n\nvar RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\n\nvar Uploader = require('./MultipartUploader');\n\nfunction assertServerError(res) {\n if (res && res.error) {\n var error = new Error(res.message);\n\n _extends(error, res.error);\n\n throw error;\n }\n\n return res;\n}\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(AwsS3Multipart, _Plugin);\n\n function AwsS3Multipart(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'uploader';\n _this.id = _this.opts.id || 'AwsS3Multipart';\n _this.title = 'AWS S3 Multipart';\n _this.client = new RequestClient(uppy, opts);\n var defaultOptions = {\n timeout: 30 * 1000,\n limit: 0,\n createMultipartUpload: _this.createMultipartUpload.bind(_assertThisInitialized(_this)),\n listParts: _this.listParts.bind(_assertThisInitialized(_this)),\n prepareUploadPart: _this.prepareUploadPart.bind(_assertThisInitialized(_this)),\n abortMultipartUpload: _this.abortMultipartUpload.bind(_assertThisInitialized(_this)),\n completeMultipartUpload: _this.completeMultipartUpload.bind(_assertThisInitialized(_this))\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n _this.upload = _this.upload.bind(_assertThisInitialized(_this));\n _this.requests = new RateLimitedQueue(_this.opts.limit);\n _this.uploaders = Object.create(null);\n _this.uploaderEvents = Object.create(null);\n _this.uploaderSockets = Object.create(null);\n return _this;\n }\n /**\n * Clean up all references for a file's upload: the MultipartUploader instance,\n * any events related to the file, and the Companion WebSocket connection.\n *\n * Set `opts.abort` to tell S3 that the multipart upload is cancelled and must be removed.\n * This should be done when the user cancels the upload, not when the upload is completed or errored.\n */\n\n\n var _proto = AwsS3Multipart.prototype;\n\n _proto.resetUploaderReferences = function resetUploaderReferences(fileID, opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n if (this.uploaders[fileID]) {\n this.uploaders[fileID].abort({\n really: opts.abort || false\n });\n this.uploaders[fileID] = null;\n }\n\n if (this.uploaderEvents[fileID]) {\n this.uploaderEvents[fileID].remove();\n this.uploaderEvents[fileID] = null;\n }\n\n if (this.uploaderSockets[fileID]) {\n this.uploaderSockets[fileID].close();\n this.uploaderSockets[fileID] = null;\n }\n };\n\n _proto.assertHost = function assertHost() {\n if (!this.opts.companionUrl) {\n throw new Error('Expected a `companionUrl` option containing a Companion address.');\n }\n };\n\n _proto.createMultipartUpload = function createMultipartUpload(file) {\n this.assertHost();\n var metadata = {};\n Object.keys(file.meta).map(function (key) {\n if (file.meta[key] != null) {\n metadata[key] = file.meta[key].toString();\n }\n });\n return this.client.post('s3/multipart', {\n filename: file.name,\n type: file.type,\n metadata: metadata\n }).then(assertServerError);\n };\n\n _proto.listParts = function listParts(file, _ref) {\n var key = _ref.key,\n uploadId = _ref.uploadId;\n this.assertHost();\n var filename = encodeURIComponent(key);\n return this.client.get(\"s3/multipart/\" + uploadId + \"?key=\" + filename).then(assertServerError);\n };\n\n _proto.prepareUploadPart = function prepareUploadPart(file, _ref2) {\n var key = _ref2.key,\n uploadId = _ref2.uploadId,\n number = _ref2.number;\n this.assertHost();\n var filename = encodeURIComponent(key);\n return this.client.get(\"s3/multipart/\" + uploadId + \"/\" + number + \"?key=\" + filename).then(assertServerError);\n };\n\n _proto.completeMultipartUpload = function completeMultipartUpload(file, _ref3) {\n var key = _ref3.key,\n uploadId = _ref3.uploadId,\n parts = _ref3.parts;\n this.assertHost();\n var filename = encodeURIComponent(key);\n var uploadIdEnc = encodeURIComponent(uploadId);\n return this.client.post(\"s3/multipart/\" + uploadIdEnc + \"/complete?key=\" + filename, {\n parts: parts\n }).then(assertServerError);\n };\n\n _proto.abortMultipartUpload = function abortMultipartUpload(file, _ref4) {\n var key = _ref4.key,\n uploadId = _ref4.uploadId;\n this.assertHost();\n var filename = encodeURIComponent(key);\n var uploadIdEnc = encodeURIComponent(uploadId);\n return this.client.delete(\"s3/multipart/\" + uploadIdEnc + \"?key=\" + filename).then(assertServerError);\n };\n\n _proto.uploadFile = function uploadFile(file) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n var onStart = function onStart(data) {\n var cFile = _this2.uppy.getFile(file.id);\n\n _this2.uppy.setFileState(file.id, {\n s3Multipart: _extends({}, cFile.s3Multipart, {\n key: data.key,\n uploadId: data.uploadId,\n parts: []\n })\n });\n };\n\n var onProgress = function onProgress(bytesUploaded, bytesTotal) {\n _this2.uppy.emit('upload-progress', file, {\n uploader: _this2,\n bytesUploaded: bytesUploaded,\n bytesTotal: bytesTotal\n });\n };\n\n var onError = function onError(err) {\n _this2.uppy.log(err);\n\n _this2.uppy.emit('upload-error', file, err);\n\n queuedRequest.done();\n\n _this2.resetUploaderReferences(file.id);\n\n reject(err);\n };\n\n var onSuccess = function onSuccess(result) {\n var uploadResp = {\n uploadURL: result.location\n };\n queuedRequest.done();\n\n _this2.resetUploaderReferences(file.id);\n\n _this2.uppy.emit('upload-success', file, uploadResp);\n\n if (result.location) {\n _this2.uppy.log('Download ' + upload.file.name + ' from ' + result.location);\n }\n\n resolve(upload);\n };\n\n var onPartComplete = function onPartComplete(part) {\n // Store completed parts in state.\n var cFile = _this2.uppy.getFile(file.id);\n\n if (!cFile) {\n return;\n }\n\n _this2.uppy.setFileState(file.id, {\n s3Multipart: _extends({}, cFile.s3Multipart, {\n parts: [].concat(cFile.s3Multipart.parts, [part])\n })\n });\n\n _this2.uppy.emit('s3-multipart:part-uploaded', cFile, part);\n };\n\n var upload = new Uploader(file.data, _extends({\n // .bind to pass the file object to each handler.\n createMultipartUpload: _this2.opts.createMultipartUpload.bind(_this2, file),\n listParts: _this2.opts.listParts.bind(_this2, file),\n prepareUploadPart: _this2.opts.prepareUploadPart.bind(_this2, file),\n completeMultipartUpload: _this2.opts.completeMultipartUpload.bind(_this2, file),\n abortMultipartUpload: _this2.opts.abortMultipartUpload.bind(_this2, file),\n getChunkSize: _this2.opts.getChunkSize ? _this2.opts.getChunkSize.bind(_this2) : null,\n onStart: onStart,\n onProgress: onProgress,\n onError: onError,\n onSuccess: onSuccess,\n onPartComplete: onPartComplete,\n limit: _this2.opts.limit || 5\n }, file.s3Multipart));\n _this2.uploaders[file.id] = upload;\n _this2.uploaderEvents[file.id] = new EventTracker(_this2.uppy);\n\n var queuedRequest = _this2.requests.run(function () {\n if (!file.isPaused) {\n upload.start();\n } // Don't do anything here, the caller will take care of cancelling the upload itself\n // using resetUploaderReferences(). This is because resetUploaderReferences() has to be\n // called when this request is still in the queue, and has not been started yet, too. At\n // that point this cancellation function is not going to be called.\n\n\n return function () {};\n });\n\n _this2.onFileRemove(file.id, function (removed) {\n queuedRequest.abort();\n\n _this2.resetUploaderReferences(file.id, {\n abort: true\n });\n\n resolve(\"upload \" + removed.id + \" was removed\");\n });\n\n _this2.onCancelAll(file.id, function () {\n queuedRequest.abort();\n\n _this2.resetUploaderReferences(file.id, {\n abort: true\n });\n\n resolve(\"upload \" + file.id + \" was canceled\");\n });\n\n _this2.onFilePause(file.id, function (isPaused) {\n if (isPaused) {\n // Remove this file from the queue so another file can start in its place.\n queuedRequest.abort();\n upload.pause();\n } else {\n // Resuming an upload should be queued, else you could pause and then resume a queued upload to make it skip the queue.\n queuedRequest.abort();\n queuedRequest = _this2.requests.run(function () {\n upload.start();\n return function () {};\n });\n }\n });\n\n _this2.onPauseAll(file.id, function () {\n queuedRequest.abort();\n upload.pause();\n });\n\n _this2.onResumeAll(file.id, function () {\n queuedRequest.abort();\n\n if (file.error) {\n upload.abort();\n }\n\n queuedRequest = _this2.requests.run(function () {\n upload.start();\n return function () {};\n });\n });\n\n if (!file.isRestored) {\n _this2.uppy.emit('upload-started', file, upload);\n }\n });\n };\n\n _proto.uploadRemote = function uploadRemote(file) {\n var _this3 = this;\n\n this.resetUploaderReferences(file.id);\n this.uppy.emit('upload-started', file);\n\n if (file.serverToken) {\n return this.connectToServerSocket(file);\n }\n\n return new Promise(function (resolve, reject) {\n var Client = file.remote.providerOptions.provider ? Provider : RequestClient;\n var client = new Client(_this3.uppy, file.remote.providerOptions);\n client.post(file.remote.url, _extends({}, file.remote.body, {\n protocol: 's3-multipart',\n size: file.data.size,\n metadata: file.meta\n })).then(function (res) {\n _this3.uppy.setFileState(file.id, {\n serverToken: res.token\n });\n\n file = _this3.uppy.getFile(file.id);\n return file;\n }).then(function (file) {\n return _this3.connectToServerSocket(file);\n }).then(function () {\n resolve();\n }).catch(function (err) {\n _this3.uppy.emit('upload-error', file, err);\n\n reject(err);\n });\n });\n };\n\n _proto.connectToServerSocket = function connectToServerSocket(file) {\n var _this4 = this;\n\n return new Promise(function (resolve, reject) {\n var token = file.serverToken;\n var host = getSocketHost(file.remote.companionUrl);\n var socket = new Socket({\n target: host + \"/api/\" + token,\n autoOpen: false\n });\n _this4.uploaderSockets[file.id] = socket;\n _this4.uploaderEvents[file.id] = new EventTracker(_this4.uppy);\n\n _this4.onFileRemove(file.id, function (removed) {\n queuedRequest.abort();\n socket.send('pause', {});\n\n _this4.resetUploaderReferences(file.id, {\n abort: true\n });\n\n resolve(\"upload \" + file.id + \" was removed\");\n });\n\n _this4.onFilePause(file.id, function (isPaused) {\n if (isPaused) {\n // Remove this file from the queue so another file can start in its place.\n queuedRequest.abort();\n socket.send('pause', {});\n } else {\n // Resuming an upload should be queued, else you could pause and then resume a queued upload to make it skip the queue.\n queuedRequest.abort();\n queuedRequest = _this4.requests.run(function () {\n socket.send('resume', {});\n return function () {};\n });\n }\n });\n\n _this4.onPauseAll(file.id, function () {\n queuedRequest.abort();\n socket.send('pause', {});\n });\n\n _this4.onCancelAll(file.id, function () {\n queuedRequest.abort();\n socket.send('pause', {});\n\n _this4.resetUploaderReferences(file.id);\n\n resolve(\"upload \" + file.id + \" was canceled\");\n });\n\n _this4.onResumeAll(file.id, function () {\n queuedRequest.abort();\n\n if (file.error) {\n socket.send('pause', {});\n }\n\n queuedRequest = _this4.requests.run(function () {\n socket.send('resume', {});\n });\n });\n\n _this4.onRetry(file.id, function () {\n // Only do the retry if the upload is actually in progress;\n // else we could try to send these messages when the upload is still queued.\n // We may need a better check for this since the socket may also be closed\n // for other reasons, like network failures.\n if (socket.isOpen) {\n socket.send('pause', {});\n socket.send('resume', {});\n }\n });\n\n _this4.onRetryAll(file.id, function () {\n if (socket.isOpen) {\n socket.send('pause', {});\n socket.send('resume', {});\n }\n });\n\n socket.on('progress', function (progressData) {\n return emitSocketProgress(_this4, progressData, file);\n });\n socket.on('error', function (errData) {\n _this4.uppy.emit('upload-error', file, new Error(errData.error));\n\n _this4.resetUploaderReferences(file.id);\n\n queuedRequest.done();\n reject(new Error(errData.error));\n });\n socket.on('success', function (data) {\n var uploadResp = {\n uploadURL: data.url\n };\n\n _this4.uppy.emit('upload-success', file, uploadResp);\n\n _this4.resetUploaderReferences(file.id);\n\n queuedRequest.done();\n resolve();\n });\n\n var queuedRequest = _this4.requests.run(function () {\n socket.open();\n\n if (file.isPaused) {\n socket.send('pause', {});\n }\n\n return function () {};\n });\n });\n };\n\n _proto.upload = function upload(fileIDs) {\n var _this5 = this;\n\n if (fileIDs.length === 0) return Promise.resolve();\n var promises = fileIDs.map(function (id) {\n var file = _this5.uppy.getFile(id);\n\n if (file.isRemote) {\n return _this5.uploadRemote(file);\n }\n\n return _this5.uploadFile(file);\n });\n return Promise.all(promises);\n };\n\n _proto.onFileRemove = function onFileRemove(fileID, cb) {\n this.uploaderEvents[fileID].on('file-removed', function (file) {\n if (fileID === file.id) cb(file.id);\n });\n };\n\n _proto.onFilePause = function onFilePause(fileID, cb) {\n this.uploaderEvents[fileID].on('upload-pause', function (targetFileID, isPaused) {\n if (fileID === targetFileID) {\n // const isPaused = this.uppy.pauseResume(fileID)\n cb(isPaused);\n }\n });\n };\n\n _proto.onRetry = function onRetry(fileID, cb) {\n this.uploaderEvents[fileID].on('upload-retry', function (targetFileID) {\n if (fileID === targetFileID) {\n cb();\n }\n });\n };\n\n _proto.onRetryAll = function onRetryAll(fileID, cb) {\n var _this6 = this;\n\n this.uploaderEvents[fileID].on('retry-all', function (filesToRetry) {\n if (!_this6.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.onPauseAll = function onPauseAll(fileID, cb) {\n var _this7 = this;\n\n this.uploaderEvents[fileID].on('pause-all', function () {\n if (!_this7.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.onCancelAll = function onCancelAll(fileID, cb) {\n var _this8 = this;\n\n this.uploaderEvents[fileID].on('cancel-all', function () {\n if (!_this8.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.onResumeAll = function onResumeAll(fileID, cb) {\n var _this9 = this;\n\n this.uploaderEvents[fileID].on('resume-all', function () {\n if (!_this9.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.install = function install() {\n var _this$uppy$getState = this.uppy.getState(),\n capabilities = _this$uppy$getState.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n resumableUploads: true\n })\n });\n this.uppy.addUploader(this.upload);\n };\n\n _proto.uninstall = function uninstall() {\n var _this$uppy$getState2 = this.uppy.getState(),\n capabilities = _this$uppy$getState2.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n resumableUploads: false\n })\n });\n this.uppy.removeUploader(this.upload);\n };\n\n return AwsS3Multipart;\n}(Plugin), _class.VERSION = \"1.7.0\", _temp);","var _class, _temp;\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 _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\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar hasProperty = require('@uppy/utils/lib/hasProperty');\n\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar Tus = require('@uppy/tus');\n\nvar Assembly = require('./Assembly');\n\nvar Client = require('./Client');\n\nvar AssemblyOptions = require('./AssemblyOptions');\n\nvar AssemblyWatcher = require('./AssemblyWatcher');\n\nfunction defaultGetAssemblyOptions(file, options) {\n return {\n params: options.params,\n signature: options.signature,\n fields: options.fields\n };\n}\n\nvar COMPANION = 'https://api2.transloadit.com/companion'; // Regex matching acceptable postMessage() origins for authentication feedback from companion.\n\nvar ALLOWED_COMPANION_PATTERN = /\\.transloadit\\.com$/; // Regex used to check if a Companion address is run by Transloadit.\n\nvar TL_COMPANION = /https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/companion/;\nvar TL_UPPY_SERVER = /https?:\\/\\/api2(?:-\\w+)?\\.transloadit\\.com\\/uppy-server/;\n/**\n * Upload files to Transloadit using Tus.\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Transloadit, _Plugin);\n\n function Transloadit(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'uploader';\n _this.id = _this.opts.id || 'Transloadit';\n _this.title = 'Transloadit';\n _this.defaultLocale = {\n strings: {\n creatingAssembly: 'Preparing upload...',\n creatingAssemblyFailed: 'Transloadit: Could not create Assembly',\n encoding: 'Encoding...'\n }\n };\n var defaultOptions = {\n service: 'https://api2.transloadit.com',\n errorReporting: true,\n waitForEncoding: false,\n waitForMetadata: false,\n alwaysRunAssembly: false,\n importFromUploadURLs: false,\n signature: null,\n params: null,\n fields: {},\n getAssemblyOptions: defaultGetAssemblyOptions,\n limit: 0\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this._prepareUpload = _this._prepareUpload.bind(_assertThisInitialized(_this));\n _this._afterUpload = _this._afterUpload.bind(_assertThisInitialized(_this));\n _this._onError = _this._onError.bind(_assertThisInitialized(_this));\n _this._onTusError = _this._onTusError.bind(_assertThisInitialized(_this));\n _this._onCancelAll = _this._onCancelAll.bind(_assertThisInitialized(_this));\n _this._onFileUploadURLAvailable = _this._onFileUploadURLAvailable.bind(_assertThisInitialized(_this));\n _this._onRestored = _this._onRestored.bind(_assertThisInitialized(_this));\n _this._getPersistentData = _this._getPersistentData.bind(_assertThisInitialized(_this));\n var hasCustomAssemblyOptions = _this.opts.getAssemblyOptions !== defaultOptions.getAssemblyOptions;\n\n if (_this.opts.params) {\n AssemblyOptions.validateParams(_this.opts.params);\n } else if (!hasCustomAssemblyOptions) {\n // Throw the same error that we'd throw if the `params` returned from a\n // `getAssemblyOptions()` function is null.\n AssemblyOptions.validateParams(null);\n }\n\n _this.client = new Client({\n service: _this.opts.service,\n client: _this._getClientVersion(),\n errorReporting: _this.opts.errorReporting\n }); // Contains Assembly instances for in-progress Assemblies.\n\n _this.activeAssemblies = {}; // Contains a mapping of uploadID to AssemblyWatcher\n\n _this.assemblyWatchers = {}; // Contains a file IDs that have completed postprocessing before the upload they belong to has entered the postprocess stage.\n\n _this.completedFiles = Object.create(null);\n return _this;\n }\n\n var _proto = Transloadit.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.i18nArray = this.translator.translateArray.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto._getClientVersion = function _getClientVersion() {\n var _this2 = this;\n\n var list = [\"uppy-core:\" + this.uppy.constructor.VERSION, \"uppy-transloadit:\" + this.constructor.VERSION, \"uppy-tus:\" + Tus.VERSION];\n\n var addPluginVersion = function addPluginVersion(pluginName, versionName) {\n var plugin = _this2.uppy.getPlugin(pluginName);\n\n if (plugin) {\n list.push(versionName + \":\" + plugin.constructor.VERSION);\n }\n };\n\n if (this.opts.importFromUploadURLs) {\n addPluginVersion('XHRUpload', 'uppy-xhr-upload');\n addPluginVersion('AwsS3', 'uppy-aws-s3');\n addPluginVersion('AwsS3Multipart', 'uppy-aws-s3-multipart');\n }\n\n addPluginVersion('Dropbox', 'uppy-dropbox');\n addPluginVersion('Facebook', 'uppy-facebook');\n addPluginVersion('GoogleDrive', 'uppy-google-drive');\n addPluginVersion('Instagram', 'uppy-instagram');\n addPluginVersion('OneDrive', 'uppy-onedrive');\n addPluginVersion('Url', 'uppy-url');\n return list.join(',');\n }\n /**\n * Attach metadata to files to configure the Tus plugin to upload to Transloadit.\n * Also use Transloadit's Companion\n *\n * See: https://github.com/tus/tusd/wiki/Uploading-to-Transloadit-using-tus#uploading-using-tus\n *\n * @param {object} file\n * @param {object} status\n */\n ;\n\n _proto._attachAssemblyMetadata = function _attachAssemblyMetadata(file, status) {\n // Add the metadata parameters Transloadit needs.\n var meta = _extends({}, file.meta, {\n assembly_url: status.assembly_url,\n filename: file.name,\n fieldname: 'file'\n }); // Add Assembly-specific Tus endpoint.\n\n\n var tus = _extends({}, file.tus, {\n endpoint: status.tus_url\n }); // Set Companion location. We only add this, if 'file' has the attribute\n // remote, because this is the criteria to identify remote files.\n // We only replace the hostname for Transloadit's companions, so that\n // people can also self-host them while still using Transloadit for encoding.\n\n\n var remote = file.remote;\n\n if (file.remote && TL_UPPY_SERVER.test(file.remote.companionUrl)) {\n var err = new Error('The https://api2.transloadit.com/uppy-server endpoint was renamed to ' + 'https://api2.transloadit.com/companion, please update your `companionUrl` ' + 'options accordingly.'); // Explicitly log this error here because it is caught by the `createAssembly`\n // Promise further along.\n // That's fine, but createAssembly only shows the informer, we need something a\n // little more noisy.\n\n this.uppy.log(err);\n throw err;\n }\n\n if (file.remote && TL_COMPANION.test(file.remote.companionUrl)) {\n var newHost = status.companion_url.replace(/\\/$/, '');\n var path = file.remote.url.replace(file.remote.companionUrl, '').replace(/^\\//, '');\n remote = _extends({}, file.remote, {\n companionUrl: newHost,\n url: newHost + \"/\" + path\n });\n } // Store the Assembly ID this file is in on the file under the `transloadit` key.\n\n\n var newFile = _extends({}, file, {\n transloadit: {\n assembly: status.assembly_id\n }\n }); // Only configure the Tus plugin if we are uploading straight to Transloadit (the default).\n\n\n if (!this.opts.importFromUploadURLs) {\n _extends(newFile, {\n meta: meta,\n tus: tus,\n remote: remote\n });\n }\n\n return newFile;\n };\n\n _proto._createAssembly = function _createAssembly(fileIDs, uploadID, options) {\n var _this3 = this;\n\n this.uppy.log('[Transloadit] Create Assembly');\n return this.client.createAssembly({\n params: options.params,\n fields: options.fields,\n expectedFiles: fileIDs.length,\n signature: options.signature\n }).then(function (newAssembly) {\n var _extends2, _extends3;\n\n var assembly = new Assembly(newAssembly);\n var status = assembly.status;\n var assemblyID = status.assembly_id;\n\n var _this3$getPluginState = _this3.getPluginState(),\n assemblies = _this3$getPluginState.assemblies,\n uploadsAssemblies = _this3$getPluginState.uploadsAssemblies;\n\n _this3.setPluginState({\n // Store the Assembly status.\n assemblies: _extends({}, assemblies, (_extends2 = {}, _extends2[assemblyID] = status, _extends2)),\n // Store the list of Assemblies related to this upload.\n uploadsAssemblies: _extends({}, uploadsAssemblies, (_extends3 = {}, _extends3[uploadID] = [].concat(uploadsAssemblies[uploadID], [assemblyID]), _extends3))\n });\n\n var _this3$uppy$getState = _this3.uppy.getState(),\n files = _this3$uppy$getState.files;\n\n var updatedFiles = {};\n fileIDs.forEach(function (id) {\n updatedFiles[id] = _this3._attachAssemblyMetadata(_this3.uppy.getFile(id), status);\n });\n\n _this3.uppy.setState({\n files: _extends({}, files, {}, updatedFiles)\n });\n\n _this3.uppy.emit('transloadit:assembly-created', status, fileIDs);\n\n _this3.uppy.log(\"[Transloadit] Created Assembly \" + assemblyID);\n\n return assembly;\n }).catch(function (err) {\n err.message = _this3.i18n('creatingAssemblyFailed') + \": \" + err.message; // Reject the promise.\n\n throw err;\n });\n };\n\n _proto._createAssemblyWatcher = function _createAssemblyWatcher(assemblyID, fileIDs, uploadID) {\n var _this4 = this;\n\n // AssemblyWatcher tracks completion states of all Assemblies in this upload.\n var watcher = new AssemblyWatcher(this.uppy, assemblyID);\n watcher.on('assembly-complete', function (id) {\n var files = _this4.getAssemblyFiles(id);\n\n files.forEach(function (file) {\n _this4.completedFiles[file.id] = true;\n\n _this4.uppy.emit('postprocess-complete', file);\n });\n });\n watcher.on('assembly-error', function (id, error) {\n // Clear postprocessing state for all our files.\n var files = _this4.getAssemblyFiles(id);\n\n files.forEach(function (file) {\n // TODO Maybe make a postprocess-error event here?\n _this4.uppy.emit('upload-error', file, error);\n\n _this4.uppy.emit('postprocess-complete', file);\n });\n });\n this.assemblyWatchers[uploadID] = watcher;\n };\n\n _proto._shouldWaitAfterUpload = function _shouldWaitAfterUpload() {\n return this.opts.waitForEncoding || this.opts.waitForMetadata;\n }\n /**\n * Used when `importFromUploadURLs` is enabled: reserves all files in\n * the Assembly.\n */\n ;\n\n _proto._reserveFiles = function _reserveFiles(assembly, fileIDs) {\n var _this5 = this;\n\n return Promise.all(fileIDs.map(function (fileID) {\n var file = _this5.uppy.getFile(fileID);\n\n return _this5.client.reserveFile(assembly, file);\n }));\n }\n /**\n * Used when `importFromUploadURLs` is enabled: adds files to the Assembly\n * once they have been fully uploaded.\n */\n ;\n\n _proto._onFileUploadURLAvailable = function _onFileUploadURLAvailable(file) {\n var _this6 = this;\n\n if (!file || !file.transloadit || !file.transloadit.assembly) {\n return;\n }\n\n var _this$getPluginState = this.getPluginState(),\n assemblies = _this$getPluginState.assemblies;\n\n var assembly = assemblies[file.transloadit.assembly];\n this.client.addFile(assembly, file).catch(function (err) {\n _this6.uppy.log(err);\n\n _this6.uppy.emit('transloadit:import-error', assembly, file.id, err);\n });\n };\n\n _proto._findFile = function _findFile(uploadedFile) {\n var files = this.uppy.getFiles();\n\n for (var i = 0; i < files.length; i++) {\n var file = files[i]; // Completed file upload.\n\n if (file.uploadURL === uploadedFile.tus_upload_url) {\n return file;\n } // In-progress file upload.\n\n\n if (file.tus && file.tus.uploadUrl === uploadedFile.tus_upload_url) {\n return file;\n }\n\n if (!uploadedFile.is_tus_file) {\n // Fingers-crossed check for non-tus uploads, eg imported from S3.\n if (file.name === uploadedFile.name && file.size === uploadedFile.size) {\n return file;\n }\n }\n }\n };\n\n _proto._onFileUploadComplete = function _onFileUploadComplete(assemblyId, uploadedFile) {\n var _extends4;\n\n var state = this.getPluginState();\n\n var file = this._findFile(uploadedFile);\n\n if (!file) {\n this.uppy.log('[Transloadit] Couldn’t file the file, it was likely removed in the process');\n return;\n }\n\n this.setPluginState({\n files: _extends({}, state.files, (_extends4 = {}, _extends4[uploadedFile.id] = {\n assembly: assemblyId,\n id: file.id,\n uploadedFile: uploadedFile\n }, _extends4))\n });\n this.uppy.emit('transloadit:upload', uploadedFile, this.getAssembly(assemblyId));\n }\n /**\n * Callback when a new Assembly result comes in.\n *\n * @param {string} assemblyId\n * @param {string} stepName\n * @param {object} result\n */\n ;\n\n _proto._onResult = function _onResult(assemblyId, stepName, result) {\n var state = this.getPluginState();\n var file = state.files[result.original_id]; // The `file` may not exist if an import robot was used instead of a file upload.\n\n result.localId = file ? file.id : null;\n var entry = {\n result: result,\n stepName: stepName,\n id: result.id,\n assembly: assemblyId\n };\n this.setPluginState({\n results: [].concat(state.results, [entry])\n });\n this.uppy.emit('transloadit:result', stepName, result, this.getAssembly(assemblyId));\n }\n /**\n * When an Assembly has finished processing, get the final state\n * and emit it.\n *\n * @param {object} status\n */\n ;\n\n _proto._onAssemblyFinished = function _onAssemblyFinished(status) {\n var _this7 = this;\n\n var url = status.assembly_ssl_url;\n this.client.getAssemblyStatus(url).then(function (finalStatus) {\n var _extends5;\n\n var assemblyId = finalStatus.assembly_id;\n\n var state = _this7.getPluginState();\n\n _this7.setPluginState({\n assemblies: _extends({}, state.assemblies, (_extends5 = {}, _extends5[assemblyId] = finalStatus, _extends5))\n });\n\n _this7.uppy.emit('transloadit:complete', finalStatus);\n });\n };\n\n _proto._cancelAssembly = function _cancelAssembly(assembly) {\n var _this8 = this;\n\n return this.client.cancelAssembly(assembly).then(function () {\n // TODO bubble this through AssemblyWatcher so its event handlers can clean up correctly\n _this8.uppy.emit('transloadit:assembly-cancelled', assembly);\n });\n }\n /**\n * When all files are removed, cancel in-progress Assemblies.\n */\n ;\n\n _proto._onCancelAll = function _onCancelAll() {\n var _this9 = this;\n\n var _this$getPluginState2 = this.getPluginState(),\n uploadsAssemblies = _this$getPluginState2.uploadsAssemblies;\n\n var assemblyIDs = Object.keys(uploadsAssemblies).reduce(function (acc, uploadID) {\n acc.push.apply(acc, uploadsAssemblies[uploadID]);\n return acc;\n }, []);\n var cancelPromises = assemblyIDs.map(function (assemblyID) {\n var assembly = _this9.getAssembly(assemblyID);\n\n return _this9._cancelAssembly(assembly);\n });\n Promise.all(cancelPromises).catch(function (err) {\n _this9.uppy.log(err);\n });\n }\n /**\n * Custom state serialization for the Golden Retriever plugin.\n * It will pass this back to the `_onRestored` function.\n *\n * @param {Function} setData\n */\n ;\n\n _proto._getPersistentData = function _getPersistentData(setData) {\n var _setData;\n\n var state = this.getPluginState();\n var assemblies = state.assemblies;\n var uploadsAssemblies = state.uploadsAssemblies;\n setData((_setData = {}, _setData[this.id] = {\n assemblies: assemblies,\n uploadsAssemblies: uploadsAssemblies\n }, _setData));\n };\n\n _proto._onRestored = function _onRestored(pluginData) {\n var _this10 = this;\n\n var savedState = pluginData && pluginData[this.id] ? pluginData[this.id] : {};\n var previousAssemblies = savedState.assemblies || {};\n var uploadsAssemblies = savedState.uploadsAssemblies || {};\n\n if (Object.keys(uploadsAssemblies).length === 0) {\n // Nothing to restore.\n return;\n } // Convert loaded Assembly statuses to a Transloadit plugin state object.\n\n\n var restoreState = function restoreState(assemblies) {\n var files = {};\n var results = [];\n Object.keys(assemblies).forEach(function (id) {\n var status = assemblies[id];\n status.uploads.forEach(function (uploadedFile) {\n var file = _this10._findFile(uploadedFile);\n\n files[uploadedFile.id] = {\n id: file.id,\n assembly: id,\n uploadedFile: uploadedFile\n };\n });\n\n var state = _this10.getPluginState();\n\n Object.keys(status.results).forEach(function (stepName) {\n status.results[stepName].forEach(function (result) {\n var file = state.files[result.original_id];\n result.localId = file ? file.id : null;\n results.push({\n id: result.id,\n result: result,\n stepName: stepName,\n assembly: id\n });\n });\n });\n });\n\n _this10.setPluginState({\n assemblies: assemblies,\n files: files,\n results: results,\n uploadsAssemblies: uploadsAssemblies\n });\n }; // Set up the Assembly instances and AssemblyWatchers for existing Assemblies.\n\n\n var restoreAssemblies = function restoreAssemblies() {\n var _this10$getPluginStat = _this10.getPluginState(),\n assemblies = _this10$getPluginStat.assemblies,\n uploadsAssemblies = _this10$getPluginStat.uploadsAssemblies; // Set up the assembly watchers again for all the ongoing uploads.\n\n\n Object.keys(uploadsAssemblies).forEach(function (uploadID) {\n var assemblyIDs = uploadsAssemblies[uploadID];\n var fileIDsInUpload = assemblyIDs.reduce(function (acc, assemblyID) {\n var fileIDsInAssembly = _this10.getAssemblyFiles(assemblyID).map(function (file) {\n return file.id;\n });\n\n acc.push.apply(acc, fileIDsInAssembly);\n return acc;\n }, []);\n\n _this10._createAssemblyWatcher(assemblyIDs, fileIDsInUpload, uploadID);\n });\n var allAssemblyIDs = Object.keys(assemblies);\n allAssemblyIDs.forEach(function (id) {\n var assembly = new Assembly(assemblies[id]);\n\n _this10._connectAssembly(assembly);\n });\n }; // Force-update all Assemblies to check for missed events.\n\n\n var updateAssemblies = function updateAssemblies() {\n var _this10$getPluginStat2 = _this10.getPluginState(),\n assemblies = _this10$getPluginStat2.assemblies;\n\n return Promise.all(Object.keys(assemblies).map(function (id) {\n return _this10.activeAssemblies[id].update();\n }));\n }; // Restore all Assembly state.\n\n\n this.restored = Promise.resolve().then(function () {\n restoreState(previousAssemblies);\n restoreAssemblies();\n return updateAssemblies();\n });\n this.restored.then(function () {\n _this10.restored = null;\n });\n };\n\n _proto._connectAssembly = function _connectAssembly(assembly) {\n var _this11 = this;\n\n var status = assembly.status;\n var id = status.assembly_id;\n this.activeAssemblies[id] = assembly; // Sync local `assemblies` state\n\n assembly.on('status', function (newStatus) {\n var _extends6;\n\n var _this11$getPluginStat = _this11.getPluginState(),\n assemblies = _this11$getPluginStat.assemblies;\n\n _this11.setPluginState({\n assemblies: _extends({}, assemblies, (_extends6 = {}, _extends6[id] = newStatus, _extends6))\n });\n });\n assembly.on('upload', function (file) {\n _this11._onFileUploadComplete(id, file);\n });\n assembly.on('error', function (error) {\n error.assembly = assembly.status;\n\n _this11.uppy.emit('transloadit:assembly-error', assembly.status, error);\n });\n assembly.on('executing', function () {\n _this11.uppy.emit('transloadit:assembly-executing', assembly.status);\n });\n\n if (this.opts.waitForEncoding) {\n assembly.on('result', function (stepName, result) {\n _this11._onResult(id, stepName, result);\n });\n }\n\n if (this.opts.waitForEncoding) {\n assembly.on('finished', function () {\n _this11._onAssemblyFinished(assembly.status);\n });\n } else if (this.opts.waitForMetadata) {\n assembly.on('metadata', function () {\n _this11._onAssemblyFinished(assembly.status);\n });\n } // No need to connect to the socket if the Assembly has completed by now.\n\n\n if (assembly.ok === 'ASSEMBLY_COMPLETE') {\n return assembly;\n } // TODO Do we still need this for anything…?\n // eslint-disable-next-line no-unused-vars\n\n\n var connected = new Promise(function (resolve, reject) {\n assembly.once('connect', resolve);\n assembly.once('status', resolve);\n assembly.once('error', reject);\n }).then(function () {\n _this11.uppy.log('[Transloadit] Socket is ready');\n });\n assembly.connect();\n return assembly;\n };\n\n _proto._prepareUpload = function _prepareUpload(fileIDs, uploadID) {\n var _this12 = this,\n _extends7;\n\n // Only use files without errors\n fileIDs = fileIDs.filter(function (file) {\n return !file.error;\n });\n fileIDs.forEach(function (fileID) {\n var file = _this12.uppy.getFile(fileID);\n\n _this12.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: _this12.i18n('creatingAssembly')\n });\n });\n\n var createAssembly = function createAssembly(_ref) {\n var fileIDs = _ref.fileIDs,\n options = _ref.options;\n var createdAssembly;\n return _this12._createAssembly(fileIDs, uploadID, options).then(function (assembly) {\n createdAssembly = assembly;\n\n if (_this12.opts.importFromUploadURLs) {\n return _this12._reserveFiles(assembly, fileIDs);\n }\n }).then(function () {\n fileIDs.forEach(function (fileID) {\n var file = _this12.uppy.getFile(fileID);\n\n _this12.uppy.emit('preprocess-complete', file);\n });\n return createdAssembly;\n }).catch(function (err) {\n fileIDs.forEach(function (fileID) {\n var file = _this12.uppy.getFile(fileID); // Clear preprocessing state when the Assembly could not be created,\n // otherwise the UI gets confused about the lingering progress keys\n\n\n _this12.uppy.emit('preprocess-complete', file);\n\n _this12.uppy.emit('upload-error', file, err);\n });\n throw err;\n });\n };\n\n var _this$getPluginState3 = this.getPluginState(),\n uploadsAssemblies = _this$getPluginState3.uploadsAssemblies;\n\n this.setPluginState({\n uploadsAssemblies: _extends({}, uploadsAssemblies, (_extends7 = {}, _extends7[uploadID] = [], _extends7))\n });\n var files = fileIDs.map(function (id) {\n return _this12.uppy.getFile(id);\n });\n var assemblyOptions = new AssemblyOptions(files, this.opts);\n return assemblyOptions.build().then(function (assemblies) {\n return Promise.all(assemblies.map(createAssembly)).then(function (createdAssemblies) {\n var assemblyIDs = createdAssemblies.map(function (assembly) {\n return assembly.status.assembly_id;\n });\n\n _this12._createAssemblyWatcher(assemblyIDs, fileIDs, uploadID);\n\n createdAssemblies.map(function (assembly) {\n return _this12._connectAssembly(assembly);\n });\n });\n }, // If something went wrong before any Assemblies could be created,\n // clear all processing state.\n function (err) {\n fileIDs.forEach(function (fileID) {\n var file = _this12.uppy.getFile(fileID);\n\n _this12.uppy.emit('preprocess-complete', file);\n\n _this12.uppy.emit('upload-error', file, err);\n });\n throw err;\n });\n };\n\n _proto._afterUpload = function _afterUpload(fileIDs, uploadID) {\n var _this13 = this;\n\n var files = fileIDs.map(function (fileID) {\n return _this13.uppy.getFile(fileID);\n }); // Only use files without errors\n\n fileIDs = files.filter(function (file) {\n return !file.error;\n }).map(function (file) {\n return file.id;\n });\n var state = this.getPluginState(); // If we're still restoring state, wait for that to be done.\n\n if (this.restored) {\n return this.restored.then(function () {\n return _this13._afterUpload(fileIDs, uploadID);\n });\n }\n\n var assemblyIDs = state.uploadsAssemblies[uploadID]; // If we don't have to wait for encoding metadata or results, we can close\n // the socket immediately and finish the upload.\n\n if (!this._shouldWaitAfterUpload()) {\n assemblyIDs.forEach(function (assemblyID) {\n var assembly = _this13.activeAssemblies[assemblyID];\n assembly.close();\n delete _this13.activeAssemblies[assemblyID];\n });\n var assemblies = assemblyIDs.map(function (id) {\n return _this13.getAssembly(id);\n });\n this.uppy.addResultData(uploadID, {\n transloadit: assemblies\n });\n return Promise.resolve();\n } // If no Assemblies were created for this upload, we also do not have to wait.\n // There's also no sockets or anything to close, so just return immediately.\n\n\n if (assemblyIDs.length === 0) {\n this.uppy.addResultData(uploadID, {\n transloadit: []\n });\n return Promise.resolve();\n }\n\n var incompleteFiles = files.filter(function (file) {\n return !hasProperty(_this13.completedFiles, file.id);\n });\n incompleteFiles.forEach(function (file) {\n _this13.uppy.emit('postprocess-progress', file, {\n mode: 'indeterminate',\n message: _this13.i18n('encoding')\n });\n });\n var watcher = this.assemblyWatchers[uploadID];\n return watcher.promise.then(function () {\n var assemblies = assemblyIDs.map(function (id) {\n return _this13.getAssembly(id);\n }); // Remove the Assembly ID list for this upload,\n // it's no longer going to be used anywhere.\n\n var state = _this13.getPluginState();\n\n var uploadsAssemblies = _extends({}, state.uploadsAssemblies);\n\n delete uploadsAssemblies[uploadID];\n\n _this13.setPluginState({\n uploadsAssemblies: uploadsAssemblies\n });\n\n _this13.uppy.addResultData(uploadID, {\n transloadit: assemblies\n });\n });\n };\n\n _proto._onError = function _onError(err, uploadID) {\n var _this14 = this;\n\n if (err === void 0) {\n err = null;\n }\n\n var state = this.getPluginState();\n var assemblyIDs = state.uploadsAssemblies[uploadID];\n assemblyIDs.forEach(function (assemblyID) {\n if (_this14.activeAssemblies[assemblyID]) {\n _this14.activeAssemblies[assemblyID].close();\n }\n });\n };\n\n _proto._onTusError = function _onTusError(err) {\n if (err && /^tus: /.test(err.message)) {\n var url = err.originalRequest && err.originalRequest.responseURL ? err.originalRequest.responseURL : null;\n this.client.submitError(err, {\n url: url,\n type: 'TUS_ERROR'\n }).then(function (_) {// if we can't report the error that sucks\n });\n }\n };\n\n _proto.install = function install() {\n this.uppy.addPreProcessor(this._prepareUpload);\n this.uppy.addPostProcessor(this._afterUpload); // We may need to close socket.io connections on error.\n\n this.uppy.on('error', this._onError); // Handle cancellation.\n\n this.uppy.on('cancel-all', this._onCancelAll); // For error reporting.\n\n this.uppy.on('upload-error', this._onTusError);\n\n if (this.opts.importFromUploadURLs) {\n // No uploader needed when importing; instead we take the upload URL from an existing uploader.\n this.uppy.on('upload-success', this._onFileUploadURLAvailable);\n } else {\n this.uppy.use(Tus, {\n // Disable tus-js-client fingerprinting, otherwise uploading the same file at different times\n // will upload to an outdated Assembly, and we won't get socket events for it.\n //\n // To resume a Transloadit upload, we need to reconnect to the websocket, and the state that's\n // required to do that is not saved by tus-js-client's fingerprinting. We need the tus URL,\n // the Assembly URL, and the WebSocket URL, at least. We also need to know _all_ the files that\n // were added to the Assembly, so we can properly complete it. All that state is handled by\n // Golden Retriever. So, Golden Retriever is required to do resumability with the Transloadit plugin,\n // and we disable Tus's default resume implementation to prevent bad behaviours.\n resume: false,\n // Disable Companion's retry optimisation; we need to change the endpoint on retry\n // so it can't just reuse the same tus.Upload instance server-side.\n useFastRemoteRetry: false,\n // Only send Assembly metadata to the tus endpoint.\n metaFields: ['assembly_url', 'filename', 'fieldname'],\n // Pass the limit option to @uppy/tus\n limit: this.opts.limit\n });\n }\n\n this.uppy.on('restore:get-data', this._getPersistentData);\n this.uppy.on('restored', this._onRestored);\n this.setPluginState({\n // Contains Assembly status objects, indexed by their ID.\n assemblies: {},\n // Contains arrays of Assembly IDs, indexed by the upload ID that they belong to.\n uploadsAssemblies: {},\n // Contains file data from Transloadit, indexed by their Transloadit-assigned ID.\n files: {},\n // Contains result data from Transloadit.\n results: []\n }); // We cannot cancel individual files because Assemblies tend to contain many files.\n\n var _this$uppy$getState = this.uppy.getState(),\n capabilities = _this$uppy$getState.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n individualCancellation: false\n })\n });\n };\n\n _proto.uninstall = function uninstall() {\n this.uppy.removePreProcessor(this._prepareUpload);\n this.uppy.removePostProcessor(this._afterUpload);\n this.uppy.off('error', this._onError);\n\n if (this.opts.importFromUploadURLs) {\n this.uppy.off('upload-success', this._onFileUploadURLAvailable);\n }\n\n var _this$uppy$getState2 = this.uppy.getState(),\n capabilities = _this$uppy$getState2.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n individualCancellation: true\n })\n });\n };\n\n _proto.getAssembly = function getAssembly(id) {\n var _this$getPluginState4 = this.getPluginState(),\n assemblies = _this$getPluginState4.assemblies;\n\n return assemblies[id];\n };\n\n _proto.getAssemblyFiles = function getAssemblyFiles(assemblyID) {\n return this.uppy.getFiles().filter(function (file) {\n return file && file.transloadit && file.transloadit.assembly === assemblyID;\n });\n };\n\n return Transloadit;\n}(Plugin), _class.VERSION = \"1.5.11\", _temp);\nmodule.exports.COMPANION = COMPANION;\nmodule.exports.UPPY_SERVER = COMPANION;\nmodule.exports.COMPANION_PATTERN = ALLOWED_COMPANION_PATTERN;","\"use strict\";\n\nvar _upload = require(\"./upload\");\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _storage = require(\"./node/storage\");\n\nvar storage = _interopRequireWildcard(_storage);\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)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* global window */\nvar defaultOptions = _upload2.default.defaultOptions;\n\n\nvar moduleExport = {\n Upload: _upload2.default,\n canStoreURLs: storage.canStoreURLs,\n defaultOptions: defaultOptions\n};\n\nif (typeof window !== \"undefined\") {\n // Browser environment using XMLHttpRequest\n var _window = window,\n XMLHttpRequest = _window.XMLHttpRequest,\n Blob = _window.Blob;\n\n\n moduleExport.isSupported = XMLHttpRequest && Blob && typeof Blob.prototype.slice === \"function\";\n} else {\n // Node.js environment using http module\n moduleExport.isSupported = true;\n // make FileStorage module available as it will not be set by default.\n moduleExport.FileStorage = storage.FileStorage;\n}\n\n// The usage of the commonjs exporting syntax instead of the new ECMAScript\n// one is actually inteded and prevents weird behaviour if we are trying to\n// import this module in another module using Babel.\nmodule.exports = moduleExport;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar isReactNative = function isReactNative() {\n return typeof navigator !== \"undefined\" && typeof navigator.product === \"string\" && navigator.product.toLowerCase() === \"reactnative\";\n};\n\nexports.default = isReactNative;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.getStorage = getStorage;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/* global window, localStorage */\n\nvar hasStorage = false;\ntry {\n hasStorage = \"localStorage\" in window;\n\n // Attempt to store and read entries from the local storage to detect Private\n // Mode on Safari on iOS (see #49)\n var key = \"tusSupport\";\n localStorage.setItem(key, localStorage.getItem(key));\n} catch (e) {\n // If we try to access localStorage inside a sandboxed iframe, a SecurityError\n // is thrown. When in private mode on iOS Safari, a QuotaExceededError is\n // thrown (see #49)\n if (e.code === e.SECURITY_ERR || e.code === e.QUOTA_EXCEEDED_ERR) {\n hasStorage = false;\n } else {\n throw e;\n }\n}\n\nvar canStoreURLs = exports.canStoreURLs = hasStorage;\n\nvar LocalStorage = function () {\n function LocalStorage() {\n _classCallCheck(this, LocalStorage);\n }\n\n _createClass(LocalStorage, [{\n key: \"setItem\",\n value: function setItem(key, value, cb) {\n cb(null, localStorage.setItem(key, value));\n }\n }, {\n key: \"getItem\",\n value: function getItem(key, cb) {\n cb(null, localStorage.getItem(key));\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(key, cb) {\n cb(null, localStorage.removeItem(key));\n }\n }]);\n\n return LocalStorage;\n}();\n\nfunction getStorage() {\n return hasStorage ? new LocalStorage() : null;\n}","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof Buffer === 'function' && typeof Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof ArrayBuffer === 'function';\n\nvar isView = function (obj) {\n return typeof ArrayBuffer.isView === 'function' ? ArrayBuffer.isView(obj) : (obj.buffer instanceof ArrayBuffer);\n};\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (withNativeBuffer && Buffer.isBuffer(obj)) ||\n (withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj)));\n}\n","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (typeof location !== 'undefined') {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n this.flags = {};\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = {\n type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n data: args\n };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n this.flags = {};\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n var sameNamespace = packet.nsp === this.nsp;\n var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n if (!sameNamespace && !rootNamespaceError) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags.compress = compress;\n return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n this.flags.binary = binary;\n return this;\n};\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n","var _class, _temp;\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 _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 _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar cuid = require('cuid');\n\nvar Translator = require('@uppy/utils/lib/Translator');\n\nvar _require2 = require('@uppy/companion-client'),\n Provider = _require2.Provider,\n RequestClient = _require2.RequestClient,\n Socket = _require2.Socket;\n\nvar emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n\nvar getSocketHost = require('@uppy/utils/lib/getSocketHost');\n\nvar settle = require('@uppy/utils/lib/settle');\n\nvar EventTracker = require('@uppy/utils/lib/EventTracker');\n\nvar ProgressTimeout = require('@uppy/utils/lib/ProgressTimeout');\n\nvar RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\n\nvar NetworkError = require('@uppy/utils/lib/NetworkError');\n\nvar isNetworkError = require('@uppy/utils/lib/isNetworkError');\n\nfunction buildResponseError(xhr, error) {\n // No error message\n if (!error) error = new Error('Upload error'); // Got an error message string\n\n if (typeof error === 'string') error = new Error(error); // Got something else\n\n if (!(error instanceof Error)) {\n error = _extends(new Error('Upload error'), {\n data: error\n });\n }\n\n if (isNetworkError(xhr)) {\n error = new NetworkError(error, xhr);\n return error;\n }\n\n error.request = xhr;\n return error;\n}\n/**\n * Set `data.type` in the blob to `file.meta.type`,\n * because we might have detected a more accurate file type in Uppy\n * https://stackoverflow.com/a/50875615\n *\n * @param {object} file File object with `data`, `size` and `meta` properties\n * @returns {object} blob updated with the new `type` set from `file.meta.type`\n */\n\n\nfunction setTypeInBlob(file) {\n var dataWithUpdatedType = file.data.slice(0, file.data.size, file.meta.type);\n return dataWithUpdatedType;\n}\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(XHRUpload, _Plugin);\n\n function XHRUpload(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'uploader';\n _this.id = _this.opts.id || 'XHRUpload';\n _this.title = 'XHRUpload';\n _this.defaultLocale = {\n strings: {\n timedOut: 'Upload stalled for %{seconds} seconds, aborting.'\n }\n }; // Default options\n\n var defaultOptions = {\n formData: true,\n fieldName: 'files[]',\n method: 'post',\n metaFields: null,\n responseUrlFieldName: 'url',\n bundle: false,\n headers: {},\n timeout: 30 * 1000,\n limit: 0,\n withCredentials: false,\n responseType: '',\n\n /**\n * @typedef respObj\n * @property {string} responseText\n * @property {number} status\n * @property {string} statusText\n * @property {object.} headers\n *\n * @param {string} responseText the response body string\n * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n */\n getResponseData: function getResponseData(responseText, response) {\n var parsedResponse = {};\n\n try {\n parsedResponse = JSON.parse(responseText);\n } catch (err) {\n console.log(err);\n }\n\n return parsedResponse;\n },\n\n /**\n *\n * @param {string} responseText the response body string\n * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n */\n getResponseError: function getResponseError(responseText, response) {\n var error = new Error('Upload error');\n\n if (isNetworkError(response)) {\n error = new NetworkError(error, response);\n }\n\n return error;\n },\n\n /**\n * Check if the response from the upload endpoint indicates that the upload was successful.\n *\n * @param {number} status the response status code\n * @param {string} responseText the response body string\n * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n */\n validateStatus: function validateStatus(status, responseText, response) {\n return status >= 200 && status < 300;\n }\n };\n _this.opts = _extends({}, defaultOptions, {}, opts);\n\n _this.i18nInit();\n\n _this.handleUpload = _this.handleUpload.bind(_assertThisInitialized(_this)); // Simultaneous upload limiting is shared across all uploads with this plugin.\n // __queue is for internal Uppy use only!\n\n if (_this.opts.__queue instanceof RateLimitedQueue) {\n _this.requests = _this.opts.__queue;\n } else {\n _this.requests = new RateLimitedQueue(_this.opts.limit);\n }\n\n if (_this.opts.bundle && !_this.opts.formData) {\n throw new Error('`opts.formData` must be true when `opts.bundle` is enabled.');\n }\n\n _this.uploaderEvents = Object.create(null);\n return _this;\n }\n\n var _proto = XHRUpload.prototype;\n\n _proto.setOptions = function setOptions(newOpts) {\n _Plugin.prototype.setOptions.call(this, newOpts);\n\n this.i18nInit();\n };\n\n _proto.i18nInit = function i18nInit() {\n this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n this.i18n = this.translator.translate.bind(this.translator);\n this.setPluginState(); // so that UI re-renders and we see the updated locale\n };\n\n _proto.getOptions = function getOptions(file) {\n var overrides = this.uppy.getState().xhrUpload;\n\n var opts = _extends({}, this.opts, {}, overrides || {}, {}, file.xhrUpload || {}, {\n headers: {}\n });\n\n _extends(opts.headers, this.opts.headers);\n\n if (overrides) {\n _extends(opts.headers, overrides.headers);\n }\n\n if (file.xhrUpload) {\n _extends(opts.headers, file.xhrUpload.headers);\n }\n\n return opts;\n };\n\n _proto.addMetadata = function addMetadata(formData, meta, opts) {\n var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields // Send along all fields by default.\n : Object.keys(meta);\n metaFields.forEach(function (item) {\n formData.append(item, meta[item]);\n });\n };\n\n _proto.createFormDataUpload = function createFormDataUpload(file, opts) {\n var formPost = new FormData();\n this.addMetadata(formPost, file.meta, opts);\n var dataWithUpdatedType = setTypeInBlob(file);\n\n if (file.name) {\n formPost.append(opts.fieldName, dataWithUpdatedType, file.meta.name);\n } else {\n formPost.append(opts.fieldName, dataWithUpdatedType);\n }\n\n return formPost;\n };\n\n _proto.createBundledUpload = function createBundledUpload(files, opts) {\n var _this2 = this;\n\n var formPost = new FormData();\n\n var _this$uppy$getState = this.uppy.getState(),\n meta = _this$uppy$getState.meta;\n\n this.addMetadata(formPost, meta, opts);\n files.forEach(function (file) {\n var opts = _this2.getOptions(file);\n\n var dataWithUpdatedType = setTypeInBlob(file);\n\n if (file.name) {\n formPost.append(opts.fieldName, dataWithUpdatedType, file.name);\n } else {\n formPost.append(opts.fieldName, dataWithUpdatedType);\n }\n });\n return formPost;\n };\n\n _proto.createBareUpload = function createBareUpload(file, opts) {\n return file.data;\n };\n\n _proto.upload = function upload(file, current, total) {\n var _this3 = this;\n\n var opts = this.getOptions(file);\n this.uppy.log(\"uploading \" + current + \" of \" + total);\n return new Promise(function (resolve, reject) {\n _this3.uppy.emit('upload-started', file);\n\n var data = opts.formData ? _this3.createFormDataUpload(file, opts) : _this3.createBareUpload(file, opts);\n var xhr = new XMLHttpRequest();\n _this3.uploaderEvents[file.id] = new EventTracker(_this3.uppy);\n var timer = new ProgressTimeout(opts.timeout, function () {\n xhr.abort();\n queuedRequest.done();\n var error = new Error(_this3.i18n('timedOut', {\n seconds: Math.ceil(opts.timeout / 1000)\n }));\n\n _this3.uppy.emit('upload-error', file, error);\n\n reject(error);\n });\n var id = cuid();\n xhr.upload.addEventListener('loadstart', function (ev) {\n _this3.uppy.log(\"[XHRUpload] \" + id + \" started\");\n });\n xhr.upload.addEventListener('progress', function (ev) {\n _this3.uppy.log(\"[XHRUpload] \" + id + \" progress: \" + ev.loaded + \" / \" + ev.total); // Begin checking for timeouts when progress starts, instead of loading,\n // to avoid timing out requests on browser concurrency queue\n\n\n timer.progress();\n\n if (ev.lengthComputable) {\n _this3.uppy.emit('upload-progress', file, {\n uploader: _this3,\n bytesUploaded: ev.loaded,\n bytesTotal: ev.total\n });\n }\n });\n xhr.addEventListener('load', function (ev) {\n _this3.uppy.log(\"[XHRUpload] \" + id + \" finished\");\n\n timer.done();\n queuedRequest.done();\n\n if (_this3.uploaderEvents[file.id]) {\n _this3.uploaderEvents[file.id].remove();\n\n _this3.uploaderEvents[file.id] = null;\n }\n\n if (opts.validateStatus(ev.target.status, xhr.responseText, xhr)) {\n var body = opts.getResponseData(xhr.responseText, xhr);\n var uploadURL = body[opts.responseUrlFieldName];\n var uploadResp = {\n status: ev.target.status,\n body: body,\n uploadURL: uploadURL\n };\n\n _this3.uppy.emit('upload-success', file, uploadResp);\n\n if (uploadURL) {\n _this3.uppy.log(\"Download \" + file.name + \" from \" + uploadURL);\n }\n\n return resolve(file);\n } else {\n var _body = opts.getResponseData(xhr.responseText, xhr);\n\n var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n var response = {\n status: ev.target.status,\n body: _body\n };\n\n _this3.uppy.emit('upload-error', file, error, response);\n\n return reject(error);\n }\n });\n xhr.addEventListener('error', function (ev) {\n _this3.uppy.log(\"[XHRUpload] \" + id + \" errored\");\n\n timer.done();\n queuedRequest.done();\n\n if (_this3.uploaderEvents[file.id]) {\n _this3.uploaderEvents[file.id].remove();\n\n _this3.uploaderEvents[file.id] = null;\n }\n\n var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n\n _this3.uppy.emit('upload-error', file, error);\n\n return reject(error);\n });\n xhr.open(opts.method.toUpperCase(), opts.endpoint, true); // IE10 does not allow setting `withCredentials` and `responseType`\n // before `open()` is called.\n\n xhr.withCredentials = opts.withCredentials;\n\n if (opts.responseType !== '') {\n xhr.responseType = opts.responseType;\n }\n\n Object.keys(opts.headers).forEach(function (header) {\n xhr.setRequestHeader(header, opts.headers[header]);\n });\n\n var queuedRequest = _this3.requests.run(function () {\n xhr.send(data);\n return function () {\n timer.done();\n xhr.abort();\n };\n });\n\n _this3.onFileRemove(file.id, function () {\n queuedRequest.abort();\n reject(new Error('File removed'));\n });\n\n _this3.onCancelAll(file.id, function () {\n queuedRequest.abort();\n reject(new Error('Upload cancelled'));\n });\n });\n };\n\n _proto.uploadRemote = function uploadRemote(file, current, total) {\n var _this4 = this;\n\n var opts = this.getOptions(file);\n return new Promise(function (resolve, reject) {\n _this4.uppy.emit('upload-started', file);\n\n var fields = {};\n var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields // Send along all fields by default.\n : Object.keys(file.meta);\n metaFields.forEach(function (name) {\n fields[name] = file.meta[name];\n });\n var Client = file.remote.providerOptions.provider ? Provider : RequestClient;\n var client = new Client(_this4.uppy, file.remote.providerOptions);\n client.post(file.remote.url, _extends({}, file.remote.body, {\n endpoint: opts.endpoint,\n size: file.data.size,\n fieldname: opts.fieldName,\n metadata: fields,\n httpMethod: opts.method,\n useFormData: opts.formData,\n headers: opts.headers\n })).then(function (res) {\n var token = res.token;\n var host = getSocketHost(file.remote.companionUrl);\n var socket = new Socket({\n target: host + \"/api/\" + token,\n autoOpen: false\n });\n _this4.uploaderEvents[file.id] = new EventTracker(_this4.uppy);\n\n _this4.onFileRemove(file.id, function () {\n socket.send('pause', {});\n queuedRequest.abort();\n resolve(\"upload \" + file.id + \" was removed\");\n });\n\n _this4.onCancelAll(file.id, function () {\n socket.send('pause', {});\n queuedRequest.abort();\n resolve(\"upload \" + file.id + \" was canceled\");\n });\n\n _this4.onRetry(file.id, function () {\n socket.send('pause', {});\n socket.send('resume', {});\n });\n\n _this4.onRetryAll(file.id, function () {\n socket.send('pause', {});\n socket.send('resume', {});\n });\n\n socket.on('progress', function (progressData) {\n return emitSocketProgress(_this4, progressData, file);\n });\n socket.on('success', function (data) {\n var body = opts.getResponseData(data.response.responseText, data.response);\n var uploadURL = body[opts.responseUrlFieldName];\n var uploadResp = {\n status: data.response.status,\n body: body,\n uploadURL: uploadURL\n };\n\n _this4.uppy.emit('upload-success', file, uploadResp);\n\n queuedRequest.done();\n\n if (_this4.uploaderEvents[file.id]) {\n _this4.uploaderEvents[file.id].remove();\n\n _this4.uploaderEvents[file.id] = null;\n }\n\n return resolve();\n });\n socket.on('error', function (errData) {\n var resp = errData.response;\n var error = resp ? opts.getResponseError(resp.responseText, resp) : _extends(new Error(errData.error.message), {\n cause: errData.error\n });\n\n _this4.uppy.emit('upload-error', file, error);\n\n queuedRequest.done();\n\n if (_this4.uploaderEvents[file.id]) {\n _this4.uploaderEvents[file.id].remove();\n\n _this4.uploaderEvents[file.id] = null;\n }\n\n reject(error);\n });\n\n var queuedRequest = _this4.requests.run(function () {\n socket.open();\n\n if (file.isPaused) {\n socket.send('pause', {});\n }\n\n return function () {\n return socket.close();\n };\n });\n }).catch(function (err) {\n _this4.uppy.emit('upload-error', file, err);\n\n reject(err);\n });\n });\n };\n\n _proto.uploadBundle = function uploadBundle(files) {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n var endpoint = _this5.opts.endpoint;\n var method = _this5.opts.method;\n\n var optsFromState = _this5.uppy.getState().xhrUpload;\n\n var formData = _this5.createBundledUpload(files, _extends({}, _this5.opts, {}, optsFromState || {}));\n\n var xhr = new XMLHttpRequest();\n var timer = new ProgressTimeout(_this5.opts.timeout, function () {\n xhr.abort();\n var error = new Error(_this5.i18n('timedOut', {\n seconds: Math.ceil(_this5.opts.timeout / 1000)\n }));\n emitError(error);\n reject(error);\n });\n\n var emitError = function emitError(error) {\n files.forEach(function (file) {\n _this5.uppy.emit('upload-error', file, error);\n });\n };\n\n xhr.upload.addEventListener('loadstart', function (ev) {\n _this5.uppy.log('[XHRUpload] started uploading bundle');\n\n timer.progress();\n });\n xhr.upload.addEventListener('progress', function (ev) {\n timer.progress();\n if (!ev.lengthComputable) return;\n files.forEach(function (file) {\n _this5.uppy.emit('upload-progress', file, {\n uploader: _this5,\n bytesUploaded: ev.loaded / ev.total * file.size,\n bytesTotal: file.size\n });\n });\n });\n xhr.addEventListener('load', function (ev) {\n timer.done();\n\n if (_this5.opts.validateStatus(ev.target.status, xhr.responseText, xhr)) {\n var body = _this5.opts.getResponseData(xhr.responseText, xhr);\n\n var uploadResp = {\n status: ev.target.status,\n body: body\n };\n files.forEach(function (file) {\n _this5.uppy.emit('upload-success', file, uploadResp);\n });\n return resolve();\n }\n\n var error = _this5.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n error.request = xhr;\n emitError(error);\n return reject(error);\n });\n xhr.addEventListener('error', function (ev) {\n timer.done();\n var error = _this5.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n emitError(error);\n return reject(error);\n });\n\n _this5.uppy.on('cancel-all', function () {\n timer.done();\n xhr.abort();\n });\n\n xhr.open(method.toUpperCase(), endpoint, true); // IE10 does not allow setting `withCredentials` and `responseType`\n // before `open()` is called.\n\n xhr.withCredentials = _this5.opts.withCredentials;\n\n if (_this5.opts.responseType !== '') {\n xhr.responseType = _this5.opts.responseType;\n }\n\n Object.keys(_this5.opts.headers).forEach(function (header) {\n xhr.setRequestHeader(header, _this5.opts.headers[header]);\n });\n xhr.send(formData);\n files.forEach(function (file) {\n _this5.uppy.emit('upload-started', file);\n });\n });\n };\n\n _proto.uploadFiles = function uploadFiles(files) {\n var _this6 = this;\n\n var promises = files.map(function (file, i) {\n var current = parseInt(i, 10) + 1;\n var total = files.length;\n\n if (file.error) {\n return Promise.reject(new Error(file.error));\n } else if (file.isRemote) {\n return _this6.uploadRemote(file, current, total);\n } else {\n return _this6.upload(file, current, total);\n }\n });\n return settle(promises);\n };\n\n _proto.onFileRemove = function onFileRemove(fileID, cb) {\n this.uploaderEvents[fileID].on('file-removed', function (file) {\n if (fileID === file.id) cb(file.id);\n });\n };\n\n _proto.onRetry = function onRetry(fileID, cb) {\n this.uploaderEvents[fileID].on('upload-retry', function (targetFileID) {\n if (fileID === targetFileID) {\n cb();\n }\n });\n };\n\n _proto.onRetryAll = function onRetryAll(fileID, cb) {\n var _this7 = this;\n\n this.uploaderEvents[fileID].on('retry-all', function (filesToRetry) {\n if (!_this7.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.onCancelAll = function onCancelAll(fileID, cb) {\n var _this8 = this;\n\n this.uploaderEvents[fileID].on('cancel-all', function () {\n if (!_this8.uppy.getFile(fileID)) return;\n cb();\n });\n };\n\n _proto.handleUpload = function handleUpload(fileIDs) {\n var _this9 = this;\n\n if (fileIDs.length === 0) {\n this.uppy.log('[XHRUpload] No files to upload!');\n return Promise.resolve();\n } // no limit configured by the user, and no RateLimitedQueue passed in by a \"parent\" plugin (basically just AwsS3) using the top secret `__queue` option\n\n\n if (this.opts.limit === 0 && !this.opts.__queue) {\n this.uppy.log('[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0', 'warning');\n }\n\n this.uppy.log('[XHRUpload] Uploading...');\n var files = fileIDs.map(function (fileID) {\n return _this9.uppy.getFile(fileID);\n });\n\n if (this.opts.bundle) {\n // if bundle: true, we don’t support remote uploads\n var isSomeFileRemote = files.some(function (file) {\n return file.isRemote;\n });\n\n if (isSomeFileRemote) {\n throw new Error('Can’t upload remote files when bundle: true option is set');\n }\n\n return this.uploadBundle(files);\n }\n\n return this.uploadFiles(files).then(function () {\n return null;\n });\n };\n\n _proto.install = function install() {\n if (this.opts.bundle) {\n var _this$uppy$getState2 = this.uppy.getState(),\n capabilities = _this$uppy$getState2.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n individualCancellation: false\n })\n });\n }\n\n this.uppy.addUploader(this.handleUpload);\n };\n\n _proto.uninstall = function uninstall() {\n if (this.opts.bundle) {\n var _this$uppy$getState3 = this.uppy.getState(),\n capabilities = _this$uppy$getState3.capabilities;\n\n this.uppy.setState({\n capabilities: _extends({}, capabilities, {\n individualCancellation: true\n })\n });\n }\n\n this.uppy.removeUploader(this.handleUpload);\n };\n\n return XHRUpload;\n}(Plugin), _class.VERSION = \"1.5.11\", _temp);","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar findDOMElement = require('@uppy/utils/lib/findDOMElement');\n\nvar toArray = require('@uppy/utils/lib/toArray'); // Rollup uses get-form-data's ES modules build, and rollup-plugin-commonjs automatically resolves `.default`.\n// So, if we are being built using rollup, this require() won't have a `.default` property.\n\n\nvar getFormData = require('get-form-data').default || require('get-form-data');\n/**\n * Form\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(Form, _Plugin);\n\n function Form(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'acquirer';\n _this.id = _this.opts.id || 'Form';\n _this.title = 'Form'; // set default options\n\n var defaultOptions = {\n target: null,\n resultName: 'uppyResult',\n getMetaFromForm: true,\n addResultToForm: true,\n multipleResults: false,\n submitOnSuccess: false,\n triggerUploadOnSubmit: false\n }; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, {}, opts);\n _this.handleFormSubmit = _this.handleFormSubmit.bind(_assertThisInitialized(_this));\n _this.handleUploadStart = _this.handleUploadStart.bind(_assertThisInitialized(_this));\n _this.handleSuccess = _this.handleSuccess.bind(_assertThisInitialized(_this));\n _this.addResultToForm = _this.addResultToForm.bind(_assertThisInitialized(_this));\n _this.getMetaFromForm = _this.getMetaFromForm.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.handleUploadStart = function handleUploadStart() {\n if (this.opts.getMetaFromForm) {\n this.getMetaFromForm();\n }\n };\n\n _proto.handleSuccess = function handleSuccess(result) {\n if (this.opts.addResultToForm) {\n this.addResultToForm(result);\n }\n\n if (this.opts.submitOnSuccess) {\n this.form.submit();\n }\n };\n\n _proto.handleFormSubmit = function handleFormSubmit(ev) {\n var _this2 = this;\n\n if (this.opts.triggerUploadOnSubmit) {\n ev.preventDefault();\n var elements = toArray(ev.target.elements);\n var disabledByUppy = [];\n elements.forEach(function (el) {\n var isButton = el.tagName === 'BUTTON' || el.tagName === 'INPUT' && el.type === 'submit';\n\n if (isButton && !el.disabled) {\n el.disabled = true;\n disabledByUppy.push(el);\n }\n });\n this.uppy.upload().then(function () {\n disabledByUppy.forEach(function (button) {\n button.disabled = false;\n });\n }, function (err) {\n disabledByUppy.forEach(function (button) {\n button.disabled = false;\n });\n return Promise.reject(err);\n }).catch(function (err) {\n _this2.uppy.log(err.stack || err.message || err);\n });\n }\n };\n\n _proto.addResultToForm = function addResultToForm(result) {\n this.uppy.log('[Form] Adding result to the original form:');\n this.uppy.log(result);\n var resultInput = this.form.querySelector(\"[name=\\\"\" + this.opts.resultName + \"\\\"]\");\n\n if (resultInput) {\n if (this.opts.multipleResults) {\n // Append new result to the previous result array.\n // If the previous result is empty, or not an array,\n // set it to an empty array.\n var updatedResult;\n\n try {\n updatedResult = JSON.parse(resultInput.value);\n } catch (err) {// Nothing, since we check for array below anyway\n }\n\n if (!Array.isArray(updatedResult)) {\n updatedResult = [];\n }\n\n updatedResult.push(result);\n resultInput.value = JSON.stringify(updatedResult);\n } else {\n // Replace existing result with the newer result on `complete` event.\n // This behavior is not ideal, since you most likely want to always keep\n // all results in the input. This is kept for backwards compatability until 2.0.\n resultInput.value = JSON.stringify(result);\n }\n\n return;\n }\n\n resultInput = document.createElement('input');\n resultInput.name = this.opts.resultName;\n resultInput.type = 'hidden';\n\n if (this.opts.multipleResults) {\n // Wrap result in an array so we can have multiple results\n resultInput.value = JSON.stringify([result]);\n } else {\n // Result is an object, kept for backwards compatability until 2.0\n resultInput.value = JSON.stringify(result);\n }\n\n this.form.appendChild(resultInput);\n };\n\n _proto.getMetaFromForm = function getMetaFromForm() {\n var formMeta = getFormData(this.form); // We want to exclude meta the the Form plugin itself has added\n // See https://github.com/transloadit/uppy/issues/1637\n\n delete formMeta[this.opts.resultName];\n this.uppy.setMeta(formMeta);\n };\n\n _proto.install = function install() {\n this.form = findDOMElement(this.opts.target);\n\n if (!this.form || this.form.nodeName !== 'FORM') {\n this.uppy.log('Form plugin requires a
    target element passed in options to operate, none was found', 'error');\n return;\n }\n\n this.form.addEventListener('submit', this.handleFormSubmit);\n this.uppy.on('upload', this.handleUploadStart);\n this.uppy.on('complete', this.handleSuccess);\n };\n\n _proto.uninstall = function uninstall() {\n this.form.removeEventListener('submit', this.handleFormSubmit);\n this.uppy.off('upload', this.handleUploadStart);\n this.uppy.off('complete', this.handleSuccess);\n };\n\n return Form;\n}(Plugin), _class.VERSION = \"1.3.15\", _temp);","var NODE_LIST_CLASSES = {\n '[object HTMLCollection]': true,\n '[object NodeList]': true,\n '[object RadioNodeList]': true\n\n // .type values for elements which can appear in .elements and should be ignored\n};var IGNORED_ELEMENT_TYPES = {\n 'button': true,\n 'fieldset': true,\n 'reset': true,\n 'submit': true\n};\n\nvar CHECKED_INPUT_TYPES = {\n 'checkbox': true,\n 'radio': true\n};\n\nvar TRIM_RE = /^\\s+|\\s+$/g;\n\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n/**\n * @param {HTMLFormElement} form\n * @param {Object} options\n * @return {Object.)>} an object containing\n * submittable value(s) held in the form's .elements collection, with\n * properties named as per element names or ids.\n */\n\nexport default function getFormData(form) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { trim: false };\n\n if (!form) {\n throw new Error('A form is required by getFormData, was given form=' + form);\n }\n\n var data = {};\n var elementName = void 0;\n var elementNames = [];\n var elementNameLookup = {};\n\n // Get unique submittable element names for the form\n for (var i = 0, l = form.elements.length; i < l; i++) {\n var element = form.elements[i];\n if (IGNORED_ELEMENT_TYPES[element.type] || element.disabled) {\n continue;\n }\n elementName = element.name || element.id;\n if (elementName && !elementNameLookup[elementName]) {\n elementNames.push(elementName);\n elementNameLookup[elementName] = true;\n }\n }\n\n // Extract element data name-by-name for consistent handling of special cases\n // around elements which contain multiple inputs.\n for (var _i = 0, _l = elementNames.length; _i < _l; _i++) {\n elementName = elementNames[_i];\n var value = getFieldData(form, elementName, options);\n if (value != null) {\n data[elementName] = value;\n }\n }\n\n return data;\n}\n\n/**\n * @param {HTMLFormElement} form\n * @param {string} fieldName\n * @param {Object} options\n * @return {(string|Array.)} submittable value(s) in the form for a\n * named element from its .elements collection, or null if there was no\n * element with that name or the element had no submittable value(s).\n */\nexport function getFieldData(form, fieldName) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { trim: false };\n\n if (!form) {\n throw new Error('A form is required by getFieldData, was given form=' + form);\n }\n if (!fieldName && toString.call(fieldName) !== '[object String]') {\n throw new Error('A field name is required by getFieldData, was given fieldName=' + fieldName);\n }\n\n var element = form.elements[fieldName];\n if (!element || element.disabled) {\n return null;\n }\n\n if (!NODE_LIST_CLASSES[toString.call(element)]) {\n return getFormElementValue(element, options.trim);\n }\n\n // Deal with multiple form controls which have the same name\n var data = [];\n var allRadios = true;\n for (var i = 0, l = element.length; i < l; i++) {\n if (element[i].disabled) {\n continue;\n }\n if (allRadios && element[i].type !== 'radio') {\n allRadios = false;\n }\n var value = getFormElementValue(element[i], options.trim);\n if (value != null) {\n data = data.concat(value);\n }\n }\n\n // Special case for an element with multiple same-named inputs which were all\n // radio buttons: if there was a selected value, only return the value.\n if (allRadios && data.length === 1) {\n return data[0];\n }\n\n return data.length > 0 ? data : null;\n}\n\n/**\n * @param {HTMLElement} element a form element.\n * @param {booleam} trim should values for text entry inputs be trimmed?\n * @return {(string|Array.|File|Array.)} the element's submittable\n * value(s), or null if it had none.\n */\nfunction getFormElementValue(element, trim) {\n var value = null;\n var type = element.type;\n\n\n if (type === 'select-one') {\n if (element.options.length) {\n value = element.options[element.selectedIndex].value;\n }\n return value;\n }\n\n if (type === 'select-multiple') {\n value = [];\n for (var i = 0, l = element.options.length; i < l; i++) {\n if (element.options[i].selected) {\n value.push(element.options[i].value);\n }\n }\n if (value.length === 0) {\n value = null;\n }\n return value;\n }\n\n // If a file input doesn't have a files attribute, fall through to using its\n // value attribute.\n if (type === 'file' && 'files' in element) {\n if (element.multiple) {\n value = slice.call(element.files);\n if (value.length === 0) {\n value = null;\n }\n } else {\n // Should be null if not present, according to the spec\n value = element.files[0];\n }\n return value;\n }\n\n if (!CHECKED_INPUT_TYPES[type]) {\n value = trim ? element.value.replace(TRIM_RE, '') : element.value;\n } else if (element.checked) {\n value = element.value;\n }\n\n return value;\n}\n\n// For UMD build access to getFieldData\ngetFormData.getFieldData = getFieldData;","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n\nvar ServiceWorkerStore = require('./ServiceWorkerStore');\n\nvar IndexedDBStore = require('./IndexedDBStore');\n\nvar MetaDataStore = require('./MetaDataStore');\n/**\n * The GoldenRetriever plugin — restores selected files and resumes uploads\n * after a closed tab or a browser crash!\n *\n * Uses localStorage, IndexedDB and ServiceWorker to do its magic, read more:\n * https://uppy.io/blog/2017/07/golden-retriever/\n */\n\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n _inheritsLoose(GoldenRetriever, _Plugin);\n\n function GoldenRetriever(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'debugger';\n _this.id = _this.opts.id || 'GoldenRetriever';\n _this.title = 'Golden Retriever';\n var defaultOptions = {\n expires: 24 * 60 * 60 * 1000,\n // 24 hours\n serviceWorker: false\n };\n _this.opts = _extends({}, defaultOptions, opts);\n _this.MetaDataStore = new MetaDataStore({\n expires: _this.opts.expires,\n storeName: uppy.getID()\n });\n _this.ServiceWorkerStore = null;\n\n if (_this.opts.serviceWorker) {\n _this.ServiceWorkerStore = new ServiceWorkerStore({\n storeName: uppy.getID()\n });\n }\n\n _this.IndexedDBStore = new IndexedDBStore(_extends({\n expires: _this.opts.expires\n }, _this.opts.indexedDB || {}, {\n storeName: uppy.getID()\n }));\n _this.saveFilesStateToLocalStorage = _this.saveFilesStateToLocalStorage.bind(_assertThisInitialized(_this));\n _this.loadFilesStateFromLocalStorage = _this.loadFilesStateFromLocalStorage.bind(_assertThisInitialized(_this));\n _this.loadFileBlobsFromServiceWorker = _this.loadFileBlobsFromServiceWorker.bind(_assertThisInitialized(_this));\n _this.loadFileBlobsFromIndexedDB = _this.loadFileBlobsFromIndexedDB.bind(_assertThisInitialized(_this));\n _this.onBlobsLoaded = _this.onBlobsLoaded.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = GoldenRetriever.prototype;\n\n _proto.loadFilesStateFromLocalStorage = function loadFilesStateFromLocalStorage() {\n var savedState = this.MetaDataStore.load();\n\n if (savedState) {\n this.uppy.log('[GoldenRetriever] Recovered some state from Local Storage');\n this.uppy.setState({\n currentUploads: savedState.currentUploads || {},\n files: savedState.files || {}\n });\n this.savedPluginData = savedState.pluginData;\n }\n }\n /**\n * Get file objects that are currently waiting: they've been selected,\n * but aren't yet being uploaded.\n */\n ;\n\n _proto.getWaitingFiles = function getWaitingFiles() {\n var waitingFiles = {};\n this.uppy.getFiles().forEach(function (file) {\n if (!file.progress || !file.progress.uploadStarted) {\n waitingFiles[file.id] = file;\n }\n });\n return waitingFiles;\n }\n /**\n * Get file objects that are currently being uploaded. If a file has finished\n * uploading, but the other files in the same batch have not, the finished\n * file is also returned.\n */\n ;\n\n _proto.getUploadingFiles = function getUploadingFiles() {\n var _this2 = this;\n\n var uploadingFiles = {};\n\n var _this$uppy$getState = this.uppy.getState(),\n currentUploads = _this$uppy$getState.currentUploads;\n\n if (currentUploads) {\n var uploadIDs = Object.keys(currentUploads);\n uploadIDs.forEach(function (uploadID) {\n var filesInUpload = currentUploads[uploadID].fileIDs;\n filesInUpload.forEach(function (fileID) {\n uploadingFiles[fileID] = _this2.uppy.getFile(fileID);\n });\n });\n }\n\n return uploadingFiles;\n };\n\n _proto.saveFilesStateToLocalStorage = function saveFilesStateToLocalStorage() {\n var filesToSave = _extends(this.getWaitingFiles(), this.getUploadingFiles());\n\n var pluginData = {}; // TODO Find a better way to do this?\n // Other plugins can attach a restore:get-data listener that receives this callback.\n // Plugins can then use this callback (sync) to provide data to be stored.\n\n this.uppy.emit('restore:get-data', function (data) {\n _extends(pluginData, data);\n });\n\n var _this$uppy$getState2 = this.uppy.getState(),\n currentUploads = _this$uppy$getState2.currentUploads;\n\n this.MetaDataStore.save({\n currentUploads: currentUploads,\n files: filesToSave,\n pluginData: pluginData\n });\n };\n\n _proto.loadFileBlobsFromServiceWorker = function loadFileBlobsFromServiceWorker() {\n var _this3 = this;\n\n this.ServiceWorkerStore.list().then(function (blobs) {\n var numberOfFilesRecovered = Object.keys(blobs).length;\n\n var numberOfFilesTryingToRecover = _this3.uppy.getFiles().length;\n\n if (numberOfFilesRecovered === numberOfFilesTryingToRecover) {\n _this3.uppy.log(\"[GoldenRetriever] Successfully recovered \" + numberOfFilesRecovered + \" blobs from Service Worker!\");\n\n _this3.uppy.info(\"Successfully recovered \" + numberOfFilesRecovered + \" files\", 'success', 3000);\n\n return _this3.onBlobsLoaded(blobs);\n }\n\n _this3.uppy.log('[GoldenRetriever] No blobs found in Service Worker, trying IndexedDB now...');\n\n return _this3.loadFileBlobsFromIndexedDB();\n }).catch(function (err) {\n _this3.uppy.log('[GoldenRetriever] Failed to recover blobs from Service Worker', 'warning');\n\n _this3.uppy.log(err);\n });\n };\n\n _proto.loadFileBlobsFromIndexedDB = function loadFileBlobsFromIndexedDB() {\n var _this4 = this;\n\n this.IndexedDBStore.list().then(function (blobs) {\n var numberOfFilesRecovered = Object.keys(blobs).length;\n\n if (numberOfFilesRecovered > 0) {\n _this4.uppy.log(\"[GoldenRetriever] Successfully recovered \" + numberOfFilesRecovered + \" blobs from IndexedDB!\");\n\n _this4.uppy.info(\"Successfully recovered \" + numberOfFilesRecovered + \" files\", 'success', 3000);\n\n return _this4.onBlobsLoaded(blobs);\n }\n\n _this4.uppy.log('[GoldenRetriever] No blobs found in IndexedDB');\n }).catch(function (err) {\n _this4.uppy.log('[GoldenRetriever] Failed to recover blobs from IndexedDB', 'warning');\n\n _this4.uppy.log(err);\n });\n };\n\n _proto.onBlobsLoaded = function onBlobsLoaded(blobs) {\n var _this5 = this;\n\n var obsoleteBlobs = [];\n\n var updatedFiles = _extends({}, this.uppy.getState().files);\n\n Object.keys(blobs).forEach(function (fileID) {\n var originalFile = _this5.uppy.getFile(fileID);\n\n if (!originalFile) {\n obsoleteBlobs.push(fileID);\n return;\n }\n\n var cachedData = blobs[fileID];\n var updatedFileData = {\n data: cachedData,\n isRestored: true\n };\n\n var updatedFile = _extends({}, originalFile, updatedFileData);\n\n updatedFiles[fileID] = updatedFile;\n });\n this.uppy.setState({\n files: updatedFiles\n });\n this.uppy.emit('restored', this.savedPluginData);\n\n if (obsoleteBlobs.length) {\n this.deleteBlobs(obsoleteBlobs).then(function () {\n _this5.uppy.log(\"[GoldenRetriever] Cleaned up \" + obsoleteBlobs.length + \" old files\");\n }).catch(function (err) {\n _this5.uppy.log(\"[GoldenRetriever] Could not clean up \" + obsoleteBlobs.length + \" old files\", 'warning');\n\n _this5.uppy.log(err);\n });\n }\n };\n\n _proto.deleteBlobs = function deleteBlobs(fileIDs) {\n var _this6 = this;\n\n var promises = [];\n fileIDs.forEach(function (id) {\n if (_this6.ServiceWorkerStore) {\n promises.push(_this6.ServiceWorkerStore.delete(id));\n }\n\n if (_this6.IndexedDBStore) {\n promises.push(_this6.IndexedDBStore.delete(id));\n }\n });\n return Promise.all(promises);\n };\n\n _proto.install = function install() {\n var _this7 = this;\n\n this.loadFilesStateFromLocalStorage();\n\n if (this.uppy.getFiles().length > 0) {\n if (this.ServiceWorkerStore) {\n this.uppy.log('[GoldenRetriever] Attempting to load files from Service Worker...');\n this.loadFileBlobsFromServiceWorker();\n } else {\n this.uppy.log('[GoldenRetriever] Attempting to load files from Indexed DB...');\n this.loadFileBlobsFromIndexedDB();\n }\n } else {\n this.uppy.log('[GoldenRetriever] No files need to be loaded, only restoring processing state...');\n this.onBlobsLoaded([]);\n }\n\n this.uppy.on('file-added', function (file) {\n if (file.isRemote) return;\n\n if (_this7.ServiceWorkerStore) {\n _this7.ServiceWorkerStore.put(file).catch(function (err) {\n _this7.uppy.log('[GoldenRetriever] Could not store file', 'warning');\n\n _this7.uppy.log(err);\n });\n }\n\n _this7.IndexedDBStore.put(file).catch(function (err) {\n _this7.uppy.log('[GoldenRetriever] Could not store file', 'warning');\n\n _this7.uppy.log(err);\n });\n });\n this.uppy.on('file-removed', function (file) {\n if (_this7.ServiceWorkerStore) {\n _this7.ServiceWorkerStore.delete(file.id).catch(function (err) {\n _this7.uppy.log('[GoldenRetriever] Failed to remove file', 'warning');\n\n _this7.uppy.log(err);\n });\n }\n\n _this7.IndexedDBStore.delete(file.id).catch(function (err) {\n _this7.uppy.log('[GoldenRetriever] Failed to remove file', 'warning');\n\n _this7.uppy.log(err);\n });\n });\n this.uppy.on('complete', function (_ref) {\n var successful = _ref.successful;\n var fileIDs = successful.map(function (file) {\n return file.id;\n });\n\n _this7.deleteBlobs(fileIDs).then(function () {\n _this7.uppy.log(\"[GoldenRetriever] Removed \" + successful.length + \" files that finished uploading\");\n }).catch(function (err) {\n _this7.uppy.log(\"[GoldenRetriever] Could not remove \" + successful.length + \" files that finished uploading\", 'warning');\n\n _this7.uppy.log(err);\n });\n });\n this.uppy.on('state-update', this.saveFilesStateToLocalStorage);\n this.uppy.on('restored', function () {\n // start all uploads again when file blobs are restored\n var _this7$uppy$getState = _this7.uppy.getState(),\n currentUploads = _this7$uppy$getState.currentUploads;\n\n if (currentUploads) {\n Object.keys(currentUploads).forEach(function (uploadId) {\n _this7.uppy.restore(uploadId, currentUploads[uploadId]);\n });\n }\n });\n };\n\n return GoldenRetriever;\n}(Plugin), _class.VERSION = \"1.3.14\", _temp);","var _class, _temp;\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 _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\nvar _require = require('@uppy/core'),\n Plugin = _require.Plugin;\n/**\n * Add Redux DevTools support to Uppy\n *\n * See https://medium.com/@zalmoxis/redux-devtools-without-redux-or-how-to-have-a-predictable-state-with-any-architecture-61c5f5a7716f\n * and https://github.com/zalmoxisus/mobx-remotedev/blob/master/src/monitorActions.js\n */\n\n\nmodule.exports = (_temp = _class =\n/*#__PURE__*/\nfunction (_Plugin) {\n _inheritsLoose(ReduxDevTools, _Plugin);\n\n function ReduxDevTools(uppy, opts) {\n var _this;\n\n _this = _Plugin.call(this, uppy, opts) || this;\n _this.type = 'debugger';\n _this.id = _this.opts.id || 'ReduxDevTools';\n _this.title = 'Redux DevTools'; // set default options\n\n var defaultOptions = {}; // merge default options with the ones set by user\n\n _this.opts = _extends({}, defaultOptions, opts);\n _this.handleStateChange = _this.handleStateChange.bind(_assertThisInitialized(_this));\n _this.initDevTools = _this.initDevTools.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReduxDevTools.prototype;\n\n _proto.handleStateChange = function handleStateChange(prevState, nextState, patch) {\n this.devTools.send('UPPY_STATE_UPDATE', nextState);\n };\n\n _proto.initDevTools = function initDevTools() {\n var _this2 = this;\n\n this.devTools = window.devToolsExtension.connect();\n this.devToolsUnsubscribe = this.devTools.subscribe(function (message) {\n if (message.type === 'DISPATCH') {\n console.log(message.payload.type); // Implement monitors actions\n\n switch (message.payload.type) {\n case 'RESET':\n _this2.uppy.reset();\n\n return;\n\n case 'IMPORT_STATE':\n {\n var computedStates = message.payload.nextLiftedState.computedStates;\n _this2.uppy.store.state = _extends({}, _this2.uppy.getState(), computedStates[computedStates.length - 1].state);\n\n _this2.uppy.updateAll(_this2.uppy.getState());\n\n return;\n }\n\n case 'JUMP_TO_STATE':\n case 'JUMP_TO_ACTION':\n _this2.uppy.store.state = _extends({}, _this2.uppy.getState(), JSON.parse(message.state));\n\n _this2.uppy.updateAll(_this2.uppy.getState());\n\n }\n }\n });\n };\n\n _proto.install = function install() {\n this.withDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n\n if (this.withDevTools) {\n this.initDevTools();\n this.uppy.on('state-update', this.handleStateChange);\n }\n };\n\n _proto.uninstall = function uninstall() {\n if (this.withDevTools) {\n this.devToolsUnsubscribe();\n this.uppy.off('state-update', this.handleStateUpdate);\n }\n };\n\n return ReduxDevTools;\n}(Plugin), _class.VERSION = \"1.3.2\", _temp);","//! 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 \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č : 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 : 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ć : 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ć : 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 : 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ẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_À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: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdú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","const admkp = 'add-to-marketplace';\r\nconst vwmkp = 'view-marketplace';\r\nconst yrmkp = 'your-market-place';\r\n\r\nexport default {\r\n options: {\r\n MarketPlaceMenu: {\r\n id: 'mkpmenu',\r\n name: 'Market Place',\r\n groups: [\r\n {\r\n id: 'group1',\r\n title: '',\r\n buttons: [\r\n {\r\n id: admkp,\r\n command: admkp,\r\n markup: '',\r\n title: 'Add to Marketplace',\r\n icon: 'addtomarketplace'\r\n },\r\n {\r\n id: vwmkp,\r\n command: vwmkp,\r\n markup: '',\r\n title: 'View Marketplace',\r\n icon: 'viewmarketplace'\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n secondmenu: {}\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nimport rootConfig from '../../../config/config';\r\n\r\nexport default Backbone.View.extend({\r\n initialize() {\r\n this.commands = editor.Commands;\r\n },\r\n events: {\r\n 'click .menu_button': 'menuClicked'\r\n },\r\n\r\n renderElement: function({ title, className, icon }) {\r\n this.$el.addClass('menu_button ' + className);\r\n this.$el.html(\r\n `${title}`\r\n );\r\n // this.$el.html(`${title}`);\r\n },\r\n\r\n menuClicked: function() {\r\n const { model, commands } = this;\r\n let commandName = model.get('command');\r\n let command = commands.get(commandName);\r\n let options = {\r\n command: commandName\r\n };\r\n commands.runCommand(command, { ...options, sender: model });\r\n },\r\n\r\n render() {\r\n this.renderElement(this.model.toJSON());\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport MenuButtonView from './menuButtonView';\r\n\r\nexport default Backbone.View.extend({\r\n addToCollection(model, fragmentEl) {\r\n var fragment = fragmentEl || null;\r\n var viewObject = MenuButtonView;\r\n\r\n var view = new viewObject({\r\n model\r\n });\r\n var rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.append(rendered);\r\n }\r\n return rendered;\r\n },\r\n\r\n render() {\r\n var fragment = document.createDocumentFragment();\r\n this.$el.empty();\r\n\r\n this.collection.each(function(model) {\r\n this.addToCollection(model, fragment);\r\n }, this);\r\n\r\n this.$el.append(fragment);\r\n this.$el.addClass('buttons_group');\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n title: '',\r\n className: 'sub-menu',\r\n icon: '',\r\n command: '',\r\n isActive: false\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport MenuButtonModel from './menuButton';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: MenuButtonModel\r\n});\r\n","import Backbone from 'backbone';\r\nimport MenuButonsView from '../view/menuButtonsView';\r\nimport MenuButtonsModel from '../models/menuButtons';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.model = o.model;\r\n this.menuButtonView = new MenuButonsView({\r\n collection: new MenuButtonsModel(this.model.get('buttons'))\r\n });\r\n },\r\n template: function({ title }) {\r\n this.$el.addClass('menu_gorup');\r\n if (title) {\r\n return `
    ${title}
    `;\r\n } else {\r\n return ``;\r\n }\r\n },\r\n render() {\r\n this.$el.append(this.template(this.model.toJSON()));\r\n this.$el.append(this.menuButtonView.render().$el);\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport MenuGroupView from './menuGroupView';\r\n\r\nexport default Backbone.View.extend({\r\n addToCollection(model, fragmentEl) {\r\n var fragment = fragmentEl || null;\r\n var viewObject = MenuGroupView;\r\n\r\n var view = new viewObject({\r\n model\r\n });\r\n var rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.append(rendered);\r\n }\r\n return rendered;\r\n },\r\n\r\n render() {\r\n var fragment = document.createDocumentFragment();\r\n this.$el.empty();\r\n\r\n this.collection.each(function(model) {\r\n this.addToCollection(model, fragment);\r\n }, this);\r\n\r\n this.$el.append(fragment);\r\n this.$el.addClass('menu_group_wrapper');\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n id: '',\r\n title: '',\r\n className: 'sub-menu',\r\n buttons: [],\r\n groups: []\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport MenuGroup from './menuGroup';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: MenuGroup\r\n});\r\n","import Backbone from 'backbone';\r\nimport config from '../config/config.js';\r\nimport MenuGroupsView from '../view/menuGroupsView';\r\nimport MenuGroupsModel from '../models/menuGroups';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n var menuType = o.menu_type;\r\n this.menu = config.options[menuType];\r\n this.menuGroupsView = new MenuGroupsView({\r\n collection: new MenuGroupsModel(this.menu.groups)\r\n });\r\n this.render();\r\n },\r\n events: {\r\n 'click .menu-heading .close_button': 'closeMenu'\r\n },\r\n template: function(list) {\r\n return ` \r\n
    \r\n
    \r\n
    ${this.menu.name}
    \r\n
    \r\n
    \r\n `;\r\n },\r\n\r\n closeMenu() {\r\n let button = editor.Panels.getButton('left-top-view', 'market_place_menu');\r\n button.set('active', false);\r\n },\r\n\r\n render() {\r\n this.isActive = true;\r\n this.$el.append(this.template());\r\n this.$el.find('.menu-wrapper').append(this.menuGroupsView.render().$el);\r\n }\r\n});\r\n","import { template } from 'underscore';\r\nimport Backbone from 'backbone';\r\nexport default Backbone.View.extend({\r\n initialize(className = '') {\r\n this.className = className;\r\n var alreadyVisible = $('.' + className).length;\r\n if (!alreadyVisible) {\r\n this.render();\r\n }\r\n },\r\n events: {},\r\n template(className) {\r\n return `\r\n
    \r\n
    \r\n `;\r\n },\r\n render() {\r\n $('body').append(this.template(this.className));\r\n document.getElementsByClassName(this.className)[0];\r\n }\r\n});\r\n","import simpleMenu from './view/simpleMenu.js';\r\nimport parent from './view/parent.js';\r\n\r\nfunction initialize() {}\r\n\r\nfunction openMenu() {\r\n if (typeof this.simpleMenu == 'undefined') {\r\n this.paremt = new parent('sidebar-container');\r\n this.simpleMenu = new simpleMenu({\r\n el: document.getElementsByClassName('sidebar-container')[0],\r\n menu_type: 'MarketPlaceMenu'\r\n });\r\n }\r\n}\r\n\r\nfunction closeMenu() {\r\n if (typeof this.simpleMenu != 'undefined') {\r\n this.simpleMenu.remove();\r\n this.paremt.remove();\r\n delete this.simpleMenu;\r\n }\r\n}\r\n\r\nexport default {\r\n init: initialize,\r\n openSimpleMenu: openMenu,\r\n closeSimpleMenu: closeMenu\r\n};\r\n","import Backbone from 'backbone';\r\nimport sidebars from '../../sidebars/index.js';\r\nimport studioPlugin from '../../studioPlugins/index.js';\r\nconst $ = Backbone.$;\r\n\r\nexport default {\r\n run(editor, sender, opts = {}) {\r\n var command_type = sender.get('command');\r\n switch (command_type) {\r\n case 'open-menu':\r\n sidebars.openSimpleMenu();\r\n break;\r\n default:\r\n console.log(opts);\r\n break;\r\n }\r\n },\r\n stop(editor, sender) {\r\n var command = sender.get('command');\r\n switch (command) {\r\n case 'open-menu':\r\n sidebars.closeSimpleMenu();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n};\r\n","export default {\r\n stylePrefix: 'sm-',\r\n\r\n sectors: [],\r\n\r\n // Specify the element to use as a container, string (query) or HTMLElement\r\n // With the empty value, nothing will be rendered\r\n appendTo: '',\r\n\r\n // Text to show in case no element selected\r\n textNoElement: 'Select an element before using Style Manager',\r\n\r\n // Text for layers\r\n textLayer: 'Layer',\r\n\r\n // Hide the property in case it's not stylable for the\r\n // selected component (each component has 'stylable' property)\r\n hideNotStylable: true,\r\n\r\n // Highlight changed properties of the selected component\r\n highlightChanged: true,\r\n\r\n // Highlight computed properties of the selected component\r\n highlightComputed: true,\r\n\r\n // Show computed properties of the selected component, if this value\r\n // is set to false, highlightComputed will not take effect\r\n showComputed: true,\r\n\r\n // Adds the possibility to clear property value from the target style\r\n clearProperties: 0,\r\n\r\n // Properties not to take in account for computed styles\r\n avoidComputed: ['width', 'height']\r\n};\r\n","export default () => ({\r\n /**\r\n * Build props object by their name\r\n * @param {Array|string} props Array of properties name\r\n * @return {Array}\r\n */\r\n build(props) {\r\n var objs = [];\r\n var dftFixedValues = ['initial', 'inherit'];\r\n\r\n if (typeof props === 'string') props = [props];\r\n\r\n for (var i = 0, len = props.length; i < len; i++) {\r\n var obj = {};\r\n var prop = props[i];\r\n obj.property = prop;\r\n\r\n // Property\r\n switch (prop) {\r\n case 'border-radius-c':\r\n obj.property = 'border-radius';\r\n break;\r\n case 'bg-gradient':\r\n obj.property = 'background-image';\r\n break;\r\n case 'fit-image':\r\n obj.property = 'object-fit';\r\n break;\r\n case 'line-clamp':\r\n obj.property = '-webkit-line-clamp';\r\n break;\r\n case 'box-orient':\r\n obj.property = '-webkit-box-orient';\r\n break;\r\n }\r\n\r\n // Fixed values\r\n switch (prop) {\r\n case 'top':\r\n case 'right':\r\n case 'bottom':\r\n case 'left':\r\n case 'margin-top':\r\n case 'margin-right':\r\n case 'margin-bottom':\r\n case 'margin-left':\r\n case 'padding-top':\r\n case 'padding-right':\r\n case 'padding-bottom':\r\n case 'padding-left':\r\n case 'width':\r\n case 'max-width':\r\n case 'min-width':\r\n case 'height':\r\n case 'max-height':\r\n case 'min-height':\r\n case 'flex-basis':\r\n obj.fixedValues = ['initial', 'inherit', 'auto', 'fit-content'];\r\n break;\r\n case 'font-size':\r\n obj.fixedValues = [\r\n 'medium',\r\n 'xx-small',\r\n 'x-small',\r\n 'small',\r\n 'large',\r\n 'x-large',\r\n 'xx-large',\r\n 'smaller',\r\n 'larger',\r\n 'length',\r\n 'initial',\r\n 'inherit'\r\n ];\r\n break;\r\n case 'letter-spacing':\r\n case 'line-height':\r\n obj.fixedValues = ['normal', 'initial', 'inherit'];\r\n break;\r\n case 'line-clamp':\r\n obj.fixedValues = ['none'];\r\n break;\r\n }\r\n\r\n // Type\r\n switch (prop) {\r\n case 'float':\r\n case 'position':\r\n case 'text-align':\r\n obj.type = 'radio';\r\n break;\r\n case 'display':\r\n case 'flex-direction':\r\n case 'flex-wrap':\r\n case 'justify-content':\r\n case 'align-items':\r\n case 'align-content':\r\n case 'align-self':\r\n case 'font-family':\r\n case 'font-weight':\r\n case 'border-style':\r\n case 'box-shadow-type':\r\n case 'background-repeat':\r\n case 'background-position':\r\n case 'background-attachment':\r\n case 'background-size':\r\n case 'transition-property':\r\n case 'transition-timing-function':\r\n case 'cursor':\r\n case 'white-space':\r\n case 'text-overflow':\r\n case 'overflow':\r\n case 'overflow-x':\r\n case 'overflow-y':\r\n case 'fit-image':\r\n case 'box-orient':\r\n obj.type = 'select';\r\n break;\r\n case 'top':\r\n case 'right':\r\n case 'bottom':\r\n case 'left':\r\n case 'margin-top':\r\n case 'margin-right':\r\n case 'margin-bottom':\r\n case 'margin-left':\r\n case 'padding-top':\r\n case 'padding-right':\r\n case 'padding-bottom':\r\n case 'padding-left':\r\n case 'min-height':\r\n case 'min-width':\r\n case 'max-height':\r\n case 'max-width':\r\n case 'width':\r\n case 'height':\r\n case 'font-size':\r\n case 'letter-spacing':\r\n case 'line-height':\r\n case 'text-shadow-h':\r\n case 'text-shadow-v':\r\n case 'text-shadow-blur':\r\n case 'border-radius-c':\r\n case 'border-top-left-radius':\r\n case 'border-top-right-radius':\r\n case 'border-bottom-left-radius':\r\n case 'border-bottom-right-radius':\r\n case 'border-width':\r\n case 'box-shadow-h':\r\n case 'box-shadow-v':\r\n case 'box-shadow-blur':\r\n case 'box-shadow-spread':\r\n case 'transition-duration':\r\n case 'perspective':\r\n case 'transform-rotate-x':\r\n case 'transform-rotate-y':\r\n case 'transform-rotate-z':\r\n case 'transform-scale-x':\r\n case 'transform-scale-y':\r\n case 'transform-scale-z':\r\n case 'order':\r\n case 'flex-grow':\r\n case 'flex-shrink':\r\n case 'flex-basis':\r\n case 'line-clamp':\r\n obj.type = 'integer';\r\n break;\r\n case 'margin':\r\n case 'padding':\r\n case 'border-radius':\r\n case 'border':\r\n case 'transform':\r\n obj.type = 'composite';\r\n break;\r\n case 'color':\r\n case 'text-shadow-color':\r\n case 'background-color':\r\n case 'border-color':\r\n case 'box-shadow-color':\r\n obj.type = 'color';\r\n break;\r\n case 'text-shadow':\r\n case 'box-shadow':\r\n case 'background':\r\n case 'transition':\r\n obj.type = 'stack';\r\n break;\r\n case 'background-image':\r\n obj.type = 'file';\r\n break;\r\n case 'bg-gradient':\r\n obj.type = 'gradient';\r\n break;\r\n case 'opacity':\r\n obj.type = 'slider';\r\n break;\r\n }\r\n\r\n // Defaults\r\n switch (prop) {\r\n case 'float':\r\n case 'background-color':\r\n case 'background-image':\r\n case 'text-shadow':\r\n case 'fit-image':\r\n case 'line-clamp':\r\n obj.defaults = 'none';\r\n break;\r\n case 'display':\r\n obj.defaults = 'block';\r\n break;\r\n case 'flex-direction':\r\n obj.defaults = 'row';\r\n break;\r\n case 'flex-wrap':\r\n obj.defaults = 'nowrap';\r\n break;\r\n case 'justify-content':\r\n obj.defaults = 'flex-start';\r\n break;\r\n case 'align-items':\r\n obj.defaults = 'stretch';\r\n break;\r\n case 'align-content':\r\n obj.defaults = 'stretch';\r\n break;\r\n case 'align-self':\r\n obj.defaults = 'auto';\r\n break;\r\n case 'position':\r\n obj.defaults = 'static';\r\n break;\r\n case 'margin-top':\r\n case 'margin-right':\r\n case 'margin-bottom':\r\n case 'margin-left':\r\n case 'padding-top':\r\n case 'padding-right':\r\n case 'padding-bottom':\r\n case 'padding-left':\r\n case 'text-shadow-h':\r\n case 'text-shadow-v':\r\n case 'text-shadow-blur':\r\n case 'border-radius-c':\r\n case 'box-shadow-h':\r\n case 'box-shadow-v':\r\n case 'box-shadow-spread':\r\n case 'perspective':\r\n case 'transform-rotate-x':\r\n case 'transform-rotate-y':\r\n case 'transform-rotate-z':\r\n case 'order':\r\n case 'flex-grow':\r\n obj.defaults = 0;\r\n break;\r\n case 'border-top-left-radius':\r\n case 'border-top-right-radius':\r\n case 'border-bottom-left-radius':\r\n case 'border-bottom-right-radius':\r\n obj.defaults = '0px';\r\n break;\r\n case 'transform-scale-x':\r\n case 'transform-scale-y':\r\n case 'transform-scale-z':\r\n case 'flex-shrink':\r\n obj.defaults = 1;\r\n break;\r\n case 'box-shadow-blur':\r\n obj.defaults = '5px';\r\n break;\r\n case 'top':\r\n case 'right':\r\n case 'bottom':\r\n case 'left':\r\n case 'min-height':\r\n case 'min-width':\r\n case 'max-height':\r\n case 'max-width':\r\n case 'width':\r\n case 'height':\r\n case 'background-size':\r\n case 'cursor':\r\n case 'flex-basis':\r\n obj.defaults = 'auto';\r\n break;\r\n case 'font-family':\r\n obj.defaults = 'Montserrat, sans-serif';\r\n break;\r\n case 'font-size':\r\n obj.defaults = 'medium';\r\n break;\r\n case 'border-width':\r\n obj.defaults = '0';\r\n break;\r\n case 'font-weight':\r\n obj.defaults = '400';\r\n break;\r\n case 'letter-spacing':\r\n case 'line-height':\r\n case 'white-space':\r\n obj.defaults = 'normal';\r\n break;\r\n case 'color':\r\n case 'text-shadow-color':\r\n case 'border-color':\r\n case 'box-shadow-color':\r\n obj.defaults = 'black';\r\n break;\r\n case 'text-align':\r\n obj.defaults = 'left';\r\n break;\r\n case 'border-style':\r\n obj.defaults = 'solid';\r\n break;\r\n case 'box-shadow-type':\r\n obj.defaults = '';\r\n break;\r\n case 'background-repeat':\r\n obj.defaults = 'repeat';\r\n break;\r\n case 'background-position':\r\n obj.defaults = 'left top';\r\n break;\r\n case 'background-attachment':\r\n obj.defaults = 'scroll';\r\n break;\r\n case 'transition-property':\r\n obj.defaults = 'width';\r\n break;\r\n case 'transition-duration':\r\n obj.defaults = '2';\r\n break;\r\n case 'transition-timing-function':\r\n obj.defaults = 'ease';\r\n break;\r\n case 'overflow':\r\n case 'overflow-x':\r\n case 'overflow-y':\r\n obj.defaults = 'visible';\r\n break;\r\n case 'text-overflow':\r\n obj.defaults = 'clip';\r\n break;\r\n case 'box-orient':\r\n obj.defaults = 'unset';\r\n break;\r\n case 'opacity':\r\n obj.defaults = 1;\r\n break;\r\n }\r\n\r\n /*\r\n * Add styleable dependency on other properties. Allows properties to be\r\n * dynamically hidden or shown based on values of other properties.\r\n *\r\n * Property will be styleable if all of the properties (keys) in the\r\n * requires object have any of the values specified in the array.\r\n */\r\n switch (prop) {\r\n case 'flex-direction':\r\n case 'flex-wrap':\r\n case 'justify-content':\r\n case 'align-items':\r\n case 'align-content':\r\n obj.requires = {\r\n display: ['flex']\r\n };\r\n break;\r\n case 'order':\r\n case 'flex-basis':\r\n case 'flex-grow':\r\n case 'flex-shrink':\r\n case 'align-self':\r\n obj.requiresParent = {\r\n display: ['flex']\r\n };\r\n break;\r\n case 'line-clamp':\r\n obj.requirecss = {\r\n resetwhen: 'none', //// specifies when require css should be removed\r\n style: {\r\n display: '-webkit-box',\r\n '-webkit-box-orient': 'vertical',\r\n overflow: 'hidden',\r\n 'white-space': 'normal'\r\n }\r\n };\r\n break;\r\n }\r\n\r\n // Units\r\n switch (prop) {\r\n case 'top':\r\n case 'bottom':\r\n case 'margin-top':\r\n case 'margin-bottom':\r\n case 'padding-top':\r\n case 'padding-bottom':\r\n case 'min-height':\r\n case 'max-height':\r\n case 'height':\r\n obj.units = ['px', '%', 'vh'];\r\n break;\r\n case 'right':\r\n case 'left':\r\n case 'margin-right':\r\n case 'margin-left':\r\n case 'padding-right':\r\n case 'padding-left':\r\n case 'min-width':\r\n case 'max-width':\r\n case 'width':\r\n obj.units = ['px', '%', 'vw'];\r\n break;\r\n case 'flex-basis':\r\n obj.units = ['px', '%', 'vw', 'vh'];\r\n break;\r\n case 'text-shadow-v':\r\n case 'text-shadow-h':\r\n case 'text-shadow-blur':\r\n case 'border-radius-c':\r\n case 'border-top-left-radius':\r\n case 'border-top-right-radius':\r\n case 'border-bottom-left-radius':\r\n case 'border-bottom-right-radius':\r\n case 'box-shadow-h':\r\n case 'box-shadow-v':\r\n obj.units = ['px', '%'];\r\n break;\r\n case 'font-size':\r\n case 'letter-spacing':\r\n case 'line-height':\r\n obj.units = ['px', 'em', 'rem', '%'];\r\n break;\r\n case 'border-width':\r\n obj.units = ['px', 'em'];\r\n break;\r\n case 'box-shadow-blur':\r\n case 'box-shadow-spread':\r\n case 'perspective':\r\n obj.units = ['px'];\r\n break;\r\n case 'transition-duration':\r\n obj.units = ['s'];\r\n break;\r\n case 'transform-rotate-x':\r\n case 'transform-rotate-y':\r\n case 'transform-rotate-z':\r\n obj.units = ['deg'];\r\n break;\r\n }\r\n\r\n // Min/Max\r\n switch (prop) {\r\n case 'padding-top':\r\n case 'padding-right':\r\n case 'padding-bottom':\r\n case 'padding-left':\r\n case 'min-height':\r\n case 'min-width':\r\n case 'max-height':\r\n case 'max-width':\r\n case 'width':\r\n case 'height':\r\n case 'font-size':\r\n case 'text-shadow-blur':\r\n case 'border-radius-c':\r\n case 'border-top-left-radius':\r\n case 'border-top-right-radius':\r\n case 'border-bottom-left-radius':\r\n case 'border-bottom-right-radius':\r\n case 'border-width':\r\n case 'box-shadow-blur':\r\n case 'transition-duration':\r\n case 'perspective':\r\n case 'flex-basis':\r\n obj.min = 0;\r\n break;\r\n case 'opacity':\r\n obj.min = 0;\r\n obj.max = 1;\r\n obj.step = 0.01;\r\n break;\r\n }\r\n\r\n // Preview\r\n switch (prop) {\r\n case 'text-shadow':\r\n case 'box-shadow':\r\n case 'background':\r\n obj.preview = true;\r\n break;\r\n }\r\n\r\n // Detached\r\n switch (prop) {\r\n case 'background':\r\n obj.detached = true;\r\n break;\r\n }\r\n\r\n // Functions\r\n switch (prop) {\r\n case 'transform-rotate-x':\r\n obj.functionName = 'rotateX';\r\n obj.name = 'Rotate X';\r\n break;\r\n case 'transform-rotate-y':\r\n obj.functionName = 'rotateY';\r\n obj.name = 'Rotate Y';\r\n break;\r\n case 'transform-rotate-z':\r\n obj.functionName = 'rotateZ';\r\n obj.name = 'Rotate Z';\r\n break;\r\n case 'transform-scale-x':\r\n obj.functionName = 'scaleX';\r\n obj.name = 'Scale X';\r\n break;\r\n case 'transform-scale-y':\r\n obj.functionName = 'scaleY';\r\n obj.name = 'Scale Y';\r\n break;\r\n case 'transform-scale-z':\r\n obj.functionName = 'scaleZ';\r\n obj.name = 'Scale Z';\r\n break;\r\n case 'background-image':\r\n obj.functionName = 'url';\r\n obj.name = 'Scale X';\r\n break;\r\n }\r\n\r\n // Options\r\n switch (prop) {\r\n case 'float':\r\n obj.list = [\r\n {\r\n value: 'none'\r\n },\r\n {\r\n value: 'left'\r\n },\r\n {\r\n value: 'right'\r\n }\r\n ];\r\n break;\r\n case 'display':\r\n obj.list = [\r\n {\r\n value: 'block'\r\n },\r\n {\r\n value: 'inline'\r\n },\r\n {\r\n value: 'inline-block'\r\n },\r\n {\r\n value: 'flex'\r\n },\r\n {\r\n value: '-webkit-box',\r\n name: 'box'\r\n },\r\n {\r\n value: 'none'\r\n }\r\n ];\r\n break;\r\n case 'flex-direction':\r\n obj.list = [\r\n {\r\n value: 'row'\r\n },\r\n {\r\n value: 'row-reverse'\r\n },\r\n {\r\n value: 'column'\r\n },\r\n {\r\n value: 'column-reverse'\r\n }\r\n ];\r\n break;\r\n case 'flex-wrap':\r\n obj.list = [\r\n {\r\n value: 'nowrap'\r\n },\r\n {\r\n value: 'wrap'\r\n },\r\n {\r\n value: 'wrap-reverse'\r\n }\r\n ];\r\n break;\r\n case 'justify-content':\r\n obj.list = [\r\n {\r\n value: 'flex-start'\r\n },\r\n {\r\n value: 'flex-end'\r\n },\r\n {\r\n value: 'center'\r\n },\r\n {\r\n value: 'space-between'\r\n },\r\n {\r\n value: 'space-around'\r\n },\r\n {\r\n value: 'space-evenly'\r\n }\r\n ];\r\n break;\r\n case 'align-items':\r\n obj.list = [\r\n {\r\n value: 'flex-start'\r\n },\r\n {\r\n value: 'flex-end'\r\n },\r\n {\r\n value: 'center'\r\n },\r\n {\r\n value: 'baseline'\r\n },\r\n {\r\n value: 'stretch'\r\n }\r\n ];\r\n break;\r\n case 'align-content':\r\n obj.list = [\r\n {\r\n value: 'flex-start'\r\n },\r\n {\r\n value: 'flex-end'\r\n },\r\n {\r\n value: 'center'\r\n },\r\n {\r\n value: 'space-between'\r\n },\r\n {\r\n value: 'space-around'\r\n },\r\n {\r\n value: 'stretch'\r\n }\r\n ];\r\n break;\r\n case 'align-self':\r\n obj.list = [\r\n {\r\n value: 'auto'\r\n },\r\n {\r\n value: 'flex-start'\r\n },\r\n {\r\n value: 'flex-end'\r\n },\r\n {\r\n value: 'center'\r\n },\r\n {\r\n value: 'baseline'\r\n },\r\n {\r\n value: 'stretch'\r\n }\r\n ];\r\n break;\r\n case 'position':\r\n obj.list = [\r\n {\r\n value: 'static'\r\n },\r\n {\r\n value: 'relative'\r\n },\r\n {\r\n value: 'absolute'\r\n },\r\n {\r\n value: 'fixed'\r\n }\r\n ];\r\n break;\r\n case 'font-family':\r\n var ss = ', sans-serif';\r\n var fonts = ['Montserrat' + ss, 'Maven Pro' + ss, 'Roboto' + ss];\r\n obj.list = [];\r\n for (var j = 0, l = fonts.length; j < l; j++) {\r\n var font = {};\r\n font.value = fonts[j];\r\n font.name = fonts[j].split(',')[0];\r\n obj.list.push(font);\r\n }\r\n break;\r\n case 'font-weight':\r\n obj.list = [\r\n {\r\n value: '100',\r\n name: 'Thin'\r\n },\r\n {\r\n value: '200',\r\n name: 'Extra-Light'\r\n },\r\n {\r\n value: '300',\r\n name: 'Light'\r\n },\r\n {\r\n value: '400',\r\n name: 'Normal'\r\n },\r\n {\r\n value: '500',\r\n name: 'Medium'\r\n },\r\n {\r\n value: '600',\r\n name: 'Semi-Bold'\r\n },\r\n {\r\n value: '700',\r\n name: 'Bold'\r\n },\r\n {\r\n value: '800',\r\n name: 'Extra-Bold'\r\n },\r\n {\r\n value: '900',\r\n name: 'Ultra-Bold'\r\n }\r\n ];\r\n break;\r\n case 'text-align':\r\n obj.list = [\r\n {\r\n value: 'left'\r\n },\r\n {\r\n value: 'center'\r\n },\r\n {\r\n value: 'right'\r\n },\r\n {\r\n value: 'justify'\r\n }\r\n ];\r\n break;\r\n case 'border-style':\r\n obj.list = [\r\n {\r\n value: 'none'\r\n },\r\n {\r\n value: 'solid'\r\n },\r\n {\r\n value: 'dotted'\r\n },\r\n {\r\n value: 'dashed'\r\n },\r\n {\r\n value: 'double'\r\n },\r\n {\r\n value: 'groove'\r\n },\r\n {\r\n value: 'ridge'\r\n },\r\n {\r\n value: 'inset'\r\n },\r\n {\r\n value: 'outset'\r\n }\r\n ];\r\n break;\r\n case 'box-shadow-type':\r\n obj.list = [\r\n {\r\n value: '',\r\n name: 'Outside'\r\n },\r\n {\r\n value: 'inset',\r\n name: 'Inside'\r\n }\r\n ];\r\n break;\r\n case 'background-repeat':\r\n obj.list = [\r\n {\r\n value: 'repeat'\r\n },\r\n {\r\n value: 'repeat-x'\r\n },\r\n {\r\n value: 'repeat-y'\r\n },\r\n {\r\n value: 'no-repeat'\r\n }\r\n ];\r\n break;\r\n case 'background-position':\r\n obj.list = [\r\n {\r\n value: 'left top'\r\n },\r\n {\r\n value: 'left center'\r\n },\r\n {\r\n value: 'left bottom'\r\n },\r\n {\r\n value: 'right top'\r\n },\r\n {\r\n value: 'right center'\r\n },\r\n {\r\n value: 'right bottom'\r\n },\r\n {\r\n value: 'center top'\r\n },\r\n {\r\n value: 'center center'\r\n },\r\n {\r\n value: 'center bottom'\r\n }\r\n ];\r\n break;\r\n case 'background-attachment':\r\n obj.list = [\r\n {\r\n value: 'scroll'\r\n },\r\n {\r\n value: 'fixed'\r\n },\r\n {\r\n value: 'local'\r\n }\r\n ];\r\n break;\r\n case 'background-size':\r\n obj.list = [\r\n {\r\n value: 'auto'\r\n },\r\n {\r\n value: 'cover'\r\n },\r\n {\r\n value: 'contain'\r\n }\r\n ];\r\n break;\r\n case 'transition-property':\r\n obj.list = [\r\n {\r\n value: 'all'\r\n },\r\n {\r\n value: 'width'\r\n },\r\n {\r\n value: 'height'\r\n },\r\n {\r\n value: 'background-color'\r\n },\r\n {\r\n value: 'transform'\r\n },\r\n {\r\n value: 'box-shadow'\r\n },\r\n {\r\n value: 'opacity'\r\n }\r\n ];\r\n break;\r\n case 'transition-timing-function':\r\n obj.list = [\r\n {\r\n value: 'linear'\r\n },\r\n {\r\n value: 'ease'\r\n },\r\n {\r\n value: 'ease-in'\r\n },\r\n {\r\n value: 'ease-out'\r\n },\r\n {\r\n value: 'ease-in-out'\r\n }\r\n ];\r\n break;\r\n case 'cursor':\r\n obj.list = [\r\n {\r\n value: 'auto'\r\n },\r\n {\r\n value: 'pointer'\r\n },\r\n {\r\n value: 'copy'\r\n },\r\n {\r\n value: 'crosshair'\r\n },\r\n {\r\n value: 'grab'\r\n },\r\n {\r\n value: 'grabbing'\r\n },\r\n {\r\n value: 'help'\r\n },\r\n {\r\n value: 'move'\r\n },\r\n {\r\n value: 'text'\r\n }\r\n ];\r\n break;\r\n case 'overflow':\r\n case 'overflow-x':\r\n case 'overflow-y':\r\n obj.list = [\r\n {\r\n value: 'visible'\r\n },\r\n {\r\n value: 'hidden'\r\n },\r\n {\r\n value: 'scroll'\r\n },\r\n {\r\n value: 'auto'\r\n }\r\n ];\r\n break;\r\n case 'box-orient':\r\n obj.list = [\r\n {\r\n value: 'vertical'\r\n },\r\n {\r\n value: 'horizontal'\r\n },\r\n {\r\n value: 'unset'\r\n }\r\n ];\r\n break;\r\n case 'text-overflow':\r\n obj.list = [\r\n {\r\n value: 'clip'\r\n },\r\n {\r\n value: 'ellipsis'\r\n }\r\n ];\r\n break;\r\n case 'white-space':\r\n obj.list = [\r\n {\r\n value: 'normal'\r\n },\r\n {\r\n value: 'nowrap'\r\n }\r\n ];\r\n break;\r\n case 'fit-image':\r\n obj.list = [\r\n {\r\n value: 'none'\r\n },\r\n {\r\n value: 'fill'\r\n },\r\n {\r\n value: 'contain'\r\n },\r\n {\r\n value: 'cover'\r\n }\r\n ];\r\n break;\r\n }\r\n\r\n // Properties\r\n switch (prop) {\r\n case 'margin':\r\n obj.properties = this.build([\r\n 'margin-top',\r\n 'margin-right',\r\n 'margin-bottom',\r\n 'margin-left'\r\n ]);\r\n break;\r\n case 'padding':\r\n obj.properties = this.build([\r\n 'padding-top',\r\n 'padding-right',\r\n 'padding-bottom',\r\n 'padding-left'\r\n ]);\r\n break;\r\n case 'text-shadow':\r\n obj.properties = this.build([\r\n 'text-shadow-h',\r\n 'text-shadow-v',\r\n 'text-shadow-blur',\r\n 'text-shadow-color'\r\n ]);\r\n break;\r\n case 'border':\r\n obj.properties = this.build([\r\n 'border-width',\r\n 'border-style',\r\n 'border-color'\r\n ]);\r\n break;\r\n case 'border-radius':\r\n obj.properties = this.build([\r\n 'border-top-left-radius',\r\n 'border-top-right-radius',\r\n 'border-bottom-right-radius',\r\n 'border-bottom-left-radius'\r\n ]);\r\n break;\r\n case 'box-shadow':\r\n obj.properties = this.build([\r\n 'box-shadow-h',\r\n 'box-shadow-v',\r\n 'box-shadow-blur',\r\n 'box-shadow-spread',\r\n 'box-shadow-color',\r\n 'box-shadow-type'\r\n ]);\r\n break;\r\n case 'background':\r\n obj.properties = this.build([\r\n 'background-image',\r\n 'background-repeat',\r\n 'background-position',\r\n 'background-attachment',\r\n 'background-size'\r\n ]);\r\n break;\r\n case 'transition':\r\n obj.properties = this.build([\r\n 'transition-property',\r\n 'transition-duration',\r\n 'transition-timing-function'\r\n ]);\r\n break;\r\n case 'transform':\r\n obj.properties = this.build([\r\n 'transform-rotate-x',\r\n 'transform-rotate-y',\r\n 'transform-rotate-z',\r\n 'transform-scale-x',\r\n 'transform-scale-y',\r\n 'transform-scale-z'\r\n ]);\r\n break;\r\n }\r\n\r\n //Names\r\n switch (prop) {\r\n case 'margin-top':\r\n obj.name = 'Top';\r\n break;\r\n case 'margin-bottom':\r\n obj.name = 'Bottom';\r\n break;\r\n case 'margin-left':\r\n obj.name = 'Left';\r\n break;\r\n case 'margin-right':\r\n obj.name = 'Right';\r\n break;\r\n case 'padding-top':\r\n obj.name = 'Top';\r\n break;\r\n case 'padding-bottom':\r\n obj.name = 'Bottom';\r\n break;\r\n case 'padding-left':\r\n obj.name = 'Left';\r\n break;\r\n case 'padding-right':\r\n obj.name = 'Right';\r\n break;\r\n case 'border-top-left-radius':\r\n obj.name = 'Top left';\r\n break;\r\n case 'border-top-right-radius':\r\n obj.name = 'Top right';\r\n break;\r\n case 'border-bottom-left-radius':\r\n obj.name = 'Bottom Left';\r\n break;\r\n case 'border-bottom-right-radius':\r\n obj.name = 'Bottom right';\r\n break;\r\n case 'border-width':\r\n obj.name = 'width';\r\n break;\r\n case 'border-style':\r\n obj.name = 'style';\r\n break;\r\n case 'border-color':\r\n obj.name = 'color';\r\n break;\r\n case 'bg-gradient':\r\n obj.name = 'Gradient';\r\n break;\r\n case 'opacity':\r\n obj.name = 'Opacity';\r\n break;\r\n case 'transform-rotate-x':\r\n obj.name = 'Rotate X';\r\n break;\r\n case 'transform-rotate-y':\r\n obj.name = 'Rotate Y';\r\n break;\r\n case 'transform-rotate-z':\r\n obj.name = 'Rotate Z';\r\n break;\r\n case 'transform-scale-x':\r\n obj.name = 'Scale X';\r\n break;\r\n case 'transform-scale-y':\r\n obj.name = 'Scale Y';\r\n break;\r\n case 'transform-scale-z':\r\n obj.name = 'Scale Z';\r\n break;\r\n case 'background-image':\r\n obj.name = 'Scale X';\r\n break;\r\n case 'box-orient':\r\n obj.name = 'box orientation';\r\n break;\r\n case 'line-clamp':\r\n obj.name = 'Ellipsis after line';\r\n }\r\n\r\n objs.push(obj);\r\n }\r\n\r\n return objs;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { extend } from 'underscore';\r\nimport Properties from './Properties';\r\nimport PropertyFactory from './PropertyFactory';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n id: '',\r\n name: '',\r\n open: true,\r\n buildProps: '',\r\n extendBuilded: 1,\r\n properties: []\r\n },\r\n\r\n initialize(opts) {\r\n const o = opts || {};\r\n const builded = this.buildProperties(o.buildProps);\r\n const name = this.get('name') || '';\r\n let props = [];\r\n !this.get('id') && this.set('id', name.replace(/ /g, '_').toLowerCase());\r\n\r\n if (!builded) props = this.get('properties');\r\n else props = this.extendProperties(builded);\r\n\r\n const propsModel = new Properties(props);\r\n propsModel.sector = this;\r\n this.set('properties', propsModel);\r\n },\r\n\r\n /**\r\n * Extend properties\r\n * @param {Array} props Start properties\r\n * @param {Array} moProps Model props\r\n * @param {Boolean} ex Returns the same amount of passed model props\r\n * @return {Array} Final props\r\n * @private\r\n */\r\n extendProperties(props, moProps, ex) {\r\n var pLen = props.length;\r\n var mProps = moProps || this.get('properties');\r\n var ext = this.get('extendBuilded');\r\n var isolated = [];\r\n\r\n for (var i = 0, len = mProps.length; i < len; i++) {\r\n var mProp = mProps[i];\r\n var found = 0;\r\n\r\n for (var j = 0; j < pLen; j++) {\r\n var prop = props[j];\r\n if (mProp.property == prop.property || mProp.id == prop.property) {\r\n // Check for nested properties\r\n var mPProps = mProp.properties;\r\n if (mPProps && mPProps.length) {\r\n mProp.properties = this.extendProperties(\r\n prop.properties || [],\r\n mPProps,\r\n 1\r\n );\r\n }\r\n props[j] = ext ? extend(prop, mProp) : mProp;\r\n isolated[j] = props[j];\r\n found = 1;\r\n continue;\r\n }\r\n }\r\n\r\n if (!found) {\r\n props.push(mProp);\r\n isolated.push(mProp);\r\n }\r\n }\r\n\r\n return ex ? isolated.filter(i => i) : props;\r\n },\r\n\r\n /**\r\n * Build properties\r\n * @param {Array} propr Array of props as sting\r\n * @return {Array}\r\n * @private\r\n */\r\n buildProperties(props) {\r\n var r;\r\n var buildP = props || [];\r\n\r\n if (!buildP.length) return;\r\n\r\n if (!this.propFactory) this.propFactory = new PropertyFactory();\r\n\r\n r = this.propFactory.build(buildP);\r\n\r\n return r;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Sector from './Sector';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Sector\r\n});\r\n","import Backbone from 'backbone';\r\nimport { template } from 'underscore';\r\nimport PropertiesView from './PropertiesView';\r\n\r\nexport default Backbone.View.extend({\r\n template: template(`\r\n
    title\" data-sector-title>\r\n caret\" class=\"fa\">\r\n <%= label %>\r\n
    `),\r\n\r\n events: {\r\n 'click [data-sector-title]': 'toggle'\r\n },\r\n\r\n initialize(o) {\r\n this.config = o.config || {};\r\n this.pfx = this.config.stylePrefix || '';\r\n this.target = o.target || {};\r\n this.propTarget = o.propTarget || {};\r\n this.caretR = 'fa-caret-right';\r\n this.caretD = 'fa-caret-down';\r\n const model = this.model;\r\n this.listenTo(model, 'change:open', this.updateOpen);\r\n this.listenTo(model, 'updateVisibility', this.updateVisibility);\r\n this.listenTo(model, 'destroy remove', this.remove);\r\n },\r\n\r\n /**\r\n * If all properties are hidden this will hide the sector\r\n */\r\n updateVisibility() {\r\n var show;\r\n this.model.get('properties').each(prop => {\r\n if (prop.get('visible')) {\r\n show = 1;\r\n }\r\n });\r\n this.el.style.display = show ? 'block' : 'none';\r\n },\r\n\r\n /**\r\n * Update visibility\r\n */\r\n updateOpen() {\r\n if (this.model.get('open')) this.show();\r\n else this.hide();\r\n },\r\n\r\n /**\r\n * Show the content of the sector\r\n * */\r\n show() {\r\n this.$el.addClass(this.pfx + 'open');\r\n this.getPropertiesEl().style.display = '';\r\n this.$caret.removeClass(this.caretR).addClass(this.caretD);\r\n },\r\n\r\n /**\r\n * Hide the content of the sector\r\n * */\r\n hide() {\r\n this.$el.removeClass(this.pfx + 'open');\r\n this.getPropertiesEl().style.display = 'none';\r\n this.$caret.removeClass(this.caretD).addClass(this.caretR);\r\n },\r\n\r\n getPropertiesEl() {\r\n return this.$el.find(`.${this.pfx}properties`).get(0);\r\n },\r\n\r\n /**\r\n * Toggle visibility\r\n * */\r\n toggle(e) {\r\n var v = this.model.get('open') ? 0 : 1;\r\n this.model.set('open', v);\r\n },\r\n\r\n render() {\r\n const { pfx, model } = this;\r\n const { id } = model.attributes;\r\n this.$el.html(\r\n this.template({\r\n pfx,\r\n label: model.get('name')\r\n })\r\n );\r\n this.$caret = this.$el.find(`#${pfx}caret`);\r\n this.renderProperties();\r\n this.$el.attr('class', `${pfx}sector ${pfx}sector__${id} no-select`);\r\n this.updateOpen();\r\n return this;\r\n },\r\n\r\n renderProperties() {\r\n var objs = this.model.get('properties');\r\n\r\n if (objs) {\r\n var view = new PropertiesView({\r\n collection: objs,\r\n target: this.target,\r\n propTarget: this.propTarget,\r\n config: this.config\r\n });\r\n this.$el.append(view.render().el);\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { extend, isString } from 'underscore';\r\nimport { isTaggableNode } from 'utils/mixins';\r\nimport { appendAtIndex } from 'utils/dom';\r\nimport SectorView from './SectorView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o = {}) {\r\n const config = o.config || {};\r\n this.pfx = config.stylePrefix || '';\r\n this.ppfx = config.pStylePrefix || '';\r\n this.target = o.target || {};\r\n this.config = config;\r\n\r\n // The target that will emit events for properties\r\n const target = {};\r\n extend(target, Backbone.Events);\r\n const body = document.body;\r\n const dummy = document.createElement(`el-${new Date().getTime()}`);\r\n body.appendChild(dummy);\r\n target.computedDefault = { ...window.getComputedStyle(dummy) };\r\n body.removeChild(dummy);\r\n this.propTarget = target;\r\n const coll = this.collection;\r\n const events =\r\n 'component:toggled component:update:classes component:update:isStateRecording component:update:recordingStateName component:update:state change:device';\r\n this.listenTo(coll, 'add', this.addTo);\r\n this.listenTo(coll, 'reset', this.render);\r\n this.listenTo(this.target, events, this.targetUpdated);\r\n },\r\n\r\n /**\r\n * Add to collection\r\n * @param {Object} model Model\r\n * @return {Object}\r\n * @private\r\n * */\r\n addTo(model, coll, opts = {}) {\r\n this.addToCollection(model, null, opts);\r\n },\r\n\r\n /**\r\n * Fired when target is updated\r\n * @private\r\n */\r\n targetUpdated() {\r\n const em = this.target;\r\n const pt = this.propTarget;\r\n let model = em.getSelected();\r\n if (!model) return;\r\n\r\n const config = em.get('Config');\r\n const state = !config.devicePreviewMode ? model.get('state') : '';\r\n const el = model.getEl();\r\n pt.helper = null;\r\n\r\n // Create computed style container\r\n if (el && isTaggableNode(el)) {\r\n const stateStr = state ? `:${state}` : null;\r\n pt.computed = window.getComputedStyle(el, stateStr);\r\n }\r\n\r\n // Create a new rule for the state as a helper\r\n const appendStateRule = (style = {}) => {\r\n const cc = em.get('CssComposer');\r\n const helperCls = 'hc-state';\r\n const rules = cc.getAll();\r\n let helperRule = cc.getClassRule(helperCls);\r\n\r\n if (!helperRule) {\r\n helperRule = cc.setClassRule(helperCls);\r\n } else {\r\n // I will make it last again, otherwise it could be overridden\r\n rules.remove(helperRule);\r\n rules.add(helperRule);\r\n }\r\n\r\n helperRule.set('important', 1);\r\n helperRule.setStyle(style);\r\n pt.helper = helperRule;\r\n };\r\n\r\n model = em.get('StyleManager').getModelToStyle(model);\r\n state && appendStateRule(model.getStyle());\r\n pt.model = model;\r\n pt.trigger('update');\r\n },\r\n\r\n /**\r\n * Select different target for the Style Manager.\r\n * It could be a Component, CSSRule, or a string of any CSS selector\r\n * @param {Component|CSSRule|String} target\r\n * @return {Styleable} A Component or CSSRule\r\n */\r\n setTarget(target, opts = {}) {\r\n const em = this.target;\r\n const config = em.get('Config');\r\n const { targetIsClass, stylable } = opts;\r\n let model = target;\r\n\r\n if (isString(target)) {\r\n let rule;\r\n const rules = em.get('CssComposer').getAll();\r\n\r\n if (targetIsClass) {\r\n rule = rules.filter(\r\n rule => rule.get('selectors').getFullString() === target\r\n )[0];\r\n }\r\n\r\n if (!rule) {\r\n rule = rules.filter(rule => rule.get('selectorsAdd') === target)[0];\r\n }\r\n\r\n if (!rule) {\r\n rule = rules.add({ selectors: [], selectorsAdd: target });\r\n }\r\n\r\n stylable && rule.set({ stylable });\r\n model = rule;\r\n }\r\n\r\n const state = !config.devicePreviewMode ? model.get('state') : '';\r\n const pt = this.propTarget;\r\n pt.model = model;\r\n pt.trigger('styleManager:update', model);\r\n return model;\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param {Object} model Model\r\n * @param {Object} fragmentEl collection\r\n * @return {Object} Object created\r\n * @private\r\n * */\r\n addToCollection(model, fragmentEl, opts = {}) {\r\n const { pfx, target, propTarget, config, el } = this;\r\n const appendTo = fragmentEl || el;\r\n const rendered = new SectorView({\r\n model,\r\n id: `${pfx}${model.get('id')}`,\r\n name: model.get('name'),\r\n properties: model.get('properties'),\r\n target,\r\n propTarget,\r\n config\r\n }).render().el;\r\n appendAtIndex(appendTo, rendered, opts.at);\r\n\r\n return rendered;\r\n },\r\n\r\n render() {\r\n const frag = document.createDocumentFragment();\r\n const $el = this.$el;\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n $el.empty();\r\n this.collection.each(model => this.addToCollection(model, frag));\r\n $el.append(frag);\r\n $el.addClass(`${pfx}sectors ${ppfx}one-bg ${ppfx}two-color`);\r\n return this;\r\n }\r\n});\r\n","/**\r\n * With Style Manager you build categories (called sectors) of CSS properties which could be used to customize the style of components.\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/style_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * styleManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const styleManager = editor.StyleManager;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [addSector](#addsector)\r\n * * [getSector](#getsector)\r\n * * [removeSector](#removesector)\r\n * * [getSectors](#getsectors)\r\n * * [addProperty](#addproperty)\r\n * * [getProperty](#getproperty)\r\n * * [removeProperty](#removeproperty)\r\n * * [getProperties](#getproperties)\r\n * * [getModelToStyle](#getmodeltostyle)\r\n * * [addType](#addtype)\r\n * * [getType](#gettype)\r\n * * [getTypes](#gettypes)\r\n * * [createType](#createtype)\r\n *\r\n * @module StyleManager\r\n */\r\n\r\nimport { isElement } from 'underscore';\r\nimport defaults from './config/config';\r\nimport Sectors from './model/Sectors';\r\nimport Properties from './model/Properties';\r\nimport SectorsView from './view/SectorsView';\r\n\r\nexport default () => {\r\n var c = {};\r\n let properties;\r\n var sectors, SectView;\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'StyleManager',\r\n\r\n /**\r\n * Get configuration object\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config) {\r\n c = { ...defaults, ...config };\r\n const ppfx = c.pStylePrefix;\r\n this.em = c.em;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n properties = new Properties();\r\n sectors = new Sectors([], c);\r\n SectView = new SectorsView({\r\n collection: sectors,\r\n target: c.em,\r\n config: c\r\n });\r\n\r\n return this;\r\n },\r\n\r\n onLoad() {\r\n sectors.add(c.sectors);\r\n },\r\n\r\n postRender() {\r\n const elTo = this.getConfig().appendTo;\r\n\r\n if (elTo) {\r\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\r\n el.appendChild(this.render());\r\n }\r\n },\r\n\r\n /**\r\n * Add new sector to the collection. If the sector with the same id already exists,\r\n * that one will be returned\r\n * @param {string} id Sector id\r\n * @param {Object} sector Object representing sector\r\n * @param {string} [sector.name=''] Sector's label\r\n * @param {Boolean} [sector.open=true] Indicates if the sector should be opened\r\n * @param {Array} [sector.properties=[]] Array of properties\r\n * @param {Object} [options={}] Options\r\n * @return {Sector} Added Sector\r\n * @example\r\n * var sector = styleManager.addSector('mySector',{\r\n * name: 'My sector',\r\n * open: true,\r\n * properties: [{ name: 'My property'}]\r\n * }, { at: 0 });\r\n * // With `at: 0` we place the new sector at the beginning of the collection\r\n * */\r\n addSector(id, sector, opts = {}) {\r\n let result = this.getSector(id);\r\n\r\n if (!result) {\r\n sector.id = id;\r\n result = sectors.add(sector, opts);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Get sector by id\r\n * @param {string} id Sector id\r\n * @return {Sector|null}\r\n * @example\r\n * var sector = styleManager.getSector('mySector');\r\n * */\r\n getSector(id, opts = {}) {\r\n const res = sectors.where({ id })[0];\r\n !res && opts.warn && this._logNoSector(id);\r\n return res;\r\n },\r\n\r\n /**\r\n * Remove a sector by id\r\n * @param {string} id Sector id\r\n * @return {Sector} Removed sector\r\n * @example\r\n * const removed = styleManager.removeSector('mySector');\r\n */\r\n removeSector(id) {\r\n return this.getSectors().remove(this.getSector(id, { warn: 1 }));\r\n },\r\n\r\n /**\r\n * Get all sectors\r\n * @return {Sectors} Collection of sectors\r\n * */\r\n getSectors() {\r\n return sectors;\r\n },\r\n\r\n /**\r\n * Add property to the sector identified by id\r\n * @param {string} sectorId Sector id\r\n * @param {Object} property Property object\r\n * @param {string} [property.name=''] Name of the property\r\n * @param {string} [property.property=''] CSS property, eg. `min-height`\r\n * @param {string} [property.type=''] Type of the property: integer | radio | select | color | file | composite | stack\r\n * @param {Array} [property.units=[]] Unit of measure available, eg. ['px','%','em']. Only for integer type\r\n * @param {string} [property.unit=''] Default selected unit from `units`. Only for integer type\r\n * @param {number} [property.min=null] Min possible value. Only for integer type\r\n * @param {number} [property.max=null] Max possible value. Only for integer type\r\n * @param {string} [property.defaults=''] Default value\r\n * @param {string} [property.info=''] Some description\r\n * @param {string} [property.icon=''] Class name. If exists no text will be displayed\r\n * @param {Boolean} [property.preview=false] Show layers preview. Only for stack type\r\n * @param {string} [property.functionName=''] Indicates if value need to be wrapped in some function, for istance `transform: rotate(90deg)`\r\n * @param {Array} [property.properties=[]] Nested properties for composite and stack type\r\n * @param {Array} [property.layers=[]] Layers for stack properties\r\n * @param {Array} [property.list=[]] List of possible options for radio and select types\r\n * @param {Object} [options={}] Options\r\n * @return {Property|null} Added Property or `null` in case sector doesn't exist\r\n * @example\r\n * var property = styleManager.addProperty('mySector',{\r\n * name: 'Minimum height',\r\n * property: 'min-height',\r\n * type: 'select',\r\n * defaults: '100px',\r\n * list: [{\r\n * value: '100px',\r\n * name: '100',\r\n * },{\r\n * value: '200px',\r\n * name: '200',\r\n * }],\r\n * }, { at: 0 });\r\n * // With `at: 0` we place the new property at the beginning of the collection\r\n */\r\n addProperty(sectorId, property, opts = {}) {\r\n const sector = this.getSector(sectorId, { warn: 1 });\r\n let prop = null;\r\n if (sector) prop = sector.get('properties').add(property, opts);\r\n\r\n return prop;\r\n },\r\n\r\n /**\r\n * Get property by its CSS name and sector id\r\n * @param {string} sectorId Sector id\r\n * @param {string} name CSS property name, eg. 'min-height'\r\n * @return {Property|null}\r\n * @example\r\n * var property = styleManager.getProperty('mySector','min-height');\r\n */\r\n getProperty(sectorId, name) {\r\n const sector = this.getSector(sectorId, { warn: 1 });\r\n let prop = null;\r\n\r\n if (sector) {\r\n prop = sector.get('properties').where({ property: name });\r\n prop = prop.length == 1 ? prop[0] : prop;\r\n }\r\n\r\n return prop;\r\n },\r\n\r\n /**\r\n * Remove a property from the sector\r\n * @param {string} sectorId Sector id\r\n * @param {string} name CSS property name, eg. 'min-height'\r\n * @return {Property} Removed property\r\n * @example\r\n * const property = styleManager.removeProperty('mySector', 'min-height');\r\n */\r\n removeProperty(sectorId, name) {\r\n const props = this.getProperties(sectorId);\r\n return props && props.remove(this.getProperty(sectorId, name));\r\n },\r\n\r\n /**\r\n * Get properties of the sector\r\n * @param {string} sectorId Sector id\r\n * @return {Properties} Collection of properties\r\n * @example\r\n * var properties = styleManager.getProperties('mySector');\r\n */\r\n getProperties(sectorId) {\r\n let props = null;\r\n const sector = this.getSector(sectorId, { warn: 1 });\r\n if (sector) props = sector.get('properties');\r\n\r\n return props;\r\n },\r\n\r\n /**\r\n * Get what to style inside Style Manager. If you select the component\r\n * without classes the entity is the Component itself and all changes will\r\n * go inside its 'style' property. Otherwise, if the selected component has\r\n * one or more classes, the function will return the corresponding CSS Rule\r\n * @param {Model} model\r\n * @return {Model}\r\n */\r\n getModelToStyle(model) {\r\n const em = c.em;\r\n const classes = model.get('classes');\r\n const id = model.getId();\r\n\r\n if (em) {\r\n const config = em.getConfig();\r\n const um = em.get('UndoManager');\r\n const cssC = em.get('CssComposer');\r\n const state = !config.devicePreviewMode ? model.get('state') : '';\r\n const valid = classes.getStyleable();\r\n const hasClasses = valid.length;\r\n const opts = { state };\r\n let rule;\r\n\r\n // I stop undo manager here as after adding the CSSRule (generally after\r\n // selecting the component) and calling undo() it will remove the rule from\r\n // the collection, therefore updating it in style manager will not affect it\r\n // #268\r\n um.stop();\r\n\r\n if (hasClasses) {\r\n const deviceW = em.getCurrentMedia();\r\n rule = cssC.get(valid, state, deviceW);\r\n\r\n if (!rule) {\r\n rule = cssC.add(valid, state, deviceW);\r\n }\r\n } else if (config.avoidInlineStyle) {\r\n rule = cssC.getIdRule(id, opts);\r\n !rule && (rule = cssC.setIdRule(id, {}, opts));\r\n if (model.is('wrapper')) rule.set('wrapper', 1);\r\n }\r\n\r\n if (rule) {\r\n rule.set('isStateRecording', model.get('isStateRecording'));\r\n rule.set('recordingStateName', model.get('recordingStateName'));\r\n model = rule;\r\n }\r\n um.start();\r\n }\r\n return model;\r\n },\r\n\r\n /**\r\n * Add new property type\r\n * @param {string} id Type ID\r\n * @param {Object} definition Definition of the type. Each definition contains\r\n * `model` (business logic), `view` (presentation logic)\r\n * and `isType` function which recognize the type of the\r\n * passed entity\r\n *@example\r\n * styleManager.addType('my-type', {\r\n * model: {},\r\n * view: {},\r\n * isType: (value) => {\r\n * if (value && value.type == 'my-type') {\r\n * return value;\r\n * }\r\n * },\r\n * })\r\n */\r\n addType(id, definition) {\r\n properties.addType(id, definition);\r\n },\r\n\r\n /**\r\n * Get type\r\n * @param {string} id Type ID\r\n * @return {Object} Type definition\r\n */\r\n getType(id) {\r\n return properties.getType(id);\r\n },\r\n\r\n /**\r\n * Get all types\r\n * @return {Array}\r\n */\r\n getTypes() {\r\n return properties.getTypes();\r\n },\r\n\r\n /**\r\n * Create new property from type\r\n * @param {string} id Type ID\r\n * @param {Object} [options={}] Options\r\n * @param {Object} [options.model={}] Custom model object\r\n * @param {Object} [options.view={}] Custom view object\r\n * @return {PropertyView}\r\n * @example\r\n * const propView = styleManager.createType('integer', {\r\n * model: {units: ['px', 'rem']}\r\n * });\r\n * propView.render();\r\n * propView.model.on('change:value', ...);\r\n * someContainer.appendChild(propView.el);\r\n */\r\n createType(id, { model = {}, view = {} } = {}) {\r\n const type = this.getType(id);\r\n\r\n if (type) {\r\n return new type.view({\r\n model: new type.model(model),\r\n config: c,\r\n ...view\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Select different target for the Style Manager.\r\n * It could be a Component, CSSRule, or a string of any CSS selector\r\n * @param {Component|CSSRule|String} target\r\n * @return {Styleable} A Component or CSSRule\r\n */\r\n setTarget(target, opts) {\r\n return SectView.setTarget(target, opts);\r\n },\r\n\r\n getEmitter() {\r\n return SectView.propTarget;\r\n },\r\n\r\n /**\r\n * Render sectors and properties\r\n * @return {HTMLElement}\r\n * @private\r\n * */\r\n render() {\r\n return SectView.render().el;\r\n },\r\n\r\n _logNoSector(sectorId) {\r\n const { em } = this;\r\n em && em.logWarning(`'${sectorId}' sector not found`);\r\n }\r\n };\r\n};\r\n","export default {\r\n stylePrefix: '',\r\n\r\n // Specify the element to use as a container, string (query) or HTMLElement\r\n // With the empty value, nothing will be rendered\r\n appendTo: '',\r\n\r\n // Enable/Disable globally the possibility to sort layers\r\n sortable: 1,\r\n\r\n // Enable/Disable globally the possibility to hide layers\r\n hidable: 1,\r\n\r\n // Hide textnodes\r\n hideTextnode: 1,\r\n\r\n // Indicate a query string of the element to be selected as the root of layers.\r\n // By default the root is the wrapper\r\n root: '',\r\n\r\n // Indicates if the wrapper is visible in layers\r\n showWrapper: 1,\r\n\r\n // Show hovered components in canvas\r\n showHover: 1,\r\n\r\n // Scroll to selected component in Canvas when it's selected in Layers\r\n // true, false or `scrollIntoView`-like options,\r\n // `block: 'nearest'` avoids the issue of window scolling\r\n scrollCanvas: { behavior: 'smooth', block: 'nearest' },\r\n\r\n // Scroll to selected component in Layers when it's selected in Canvas\r\n // true, false or `scrollIntoView`-like options\r\n scrollLayers: { behavior: 'auto', block: 'nearest' },\r\n\r\n // Highlight when a layer component is hovered\r\n highlightHover: 1\r\n};\r\n","import defaults from './config/config';\r\nimport ItemView from './view/ItemView';\r\nimport { isElement } from 'underscore';\r\n\r\nexport default () => {\r\n let em;\r\n let layers;\r\n let config = {};\r\n\r\n return {\r\n name: 'LayerManager',\r\n\r\n init(opts = {}) {\r\n config = { ...defaults, ...opts };\r\n config.stylePrefix = opts.pStylePrefix;\r\n em = config.em;\r\n\r\n return this;\r\n },\r\n\r\n getConfig() {\r\n return config;\r\n },\r\n\r\n onLoad() {\r\n layers = new ItemView({\r\n level: 0,\r\n config,\r\n opened: config.opened || {},\r\n model: em.get('DomComponents').getWrapper()\r\n });\r\n em && em.on('component:selected', this.componentChanged);\r\n this.componentChanged();\r\n },\r\n\r\n postRender() {\r\n const elTo = config.appendTo;\r\n const root = config.root;\r\n root && this.setRoot(root);\r\n\r\n if (elTo) {\r\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\r\n el.appendChild(this.render());\r\n }\r\n },\r\n\r\n /**\r\n * Set new root for layers\r\n * @param {HTMLElement|Component|String} el Component to be set as the root\r\n * @return {self}\r\n */\r\n setRoot(el) {\r\n layers.setRoot(el);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the root of layers\r\n * @return {Component}\r\n */\r\n getRoot() {\r\n return layers.model;\r\n },\r\n\r\n /**\r\n * Return the view of layers\r\n * @return {View}\r\n */\r\n getAll() {\r\n return layers;\r\n },\r\n\r\n /**\r\n * Triggered when the selected component is changed\r\n * @private\r\n */\r\n componentChanged(selected, opts = {}) {\r\n if (opts.fromLayers) return;\r\n const opened = em.get('opened');\r\n const model = em.getSelected();\r\n const scroll = config.scrollLayers;\r\n let parent = model && model.collection ? model.collection.parent : null;\r\n for (let cid in opened) opened[cid].set('open', 0);\r\n\r\n while (parent) {\r\n parent.set('open', 1);\r\n opened[parent.cid] = parent;\r\n parent = parent.collection ? parent.collection.parent : null;\r\n }\r\n\r\n if (model && scroll) {\r\n const el = model.viewLayer && model.viewLayer.el;\r\n el && el.scrollIntoView(scroll);\r\n }\r\n },\r\n\r\n render() {\r\n return layers.render().el;\r\n }\r\n };\r\n};\r\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return(s={},n.m=i=[function(e,t,i){\"use strict\";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent(\"CustomEvent\");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n=window.innerHeight?\"above\":i?t:\"below\"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t[^<>]*'+l+\"\")},\"function\"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){\"use strict\";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:\"\",text:e.text?e.text:\"\",innerHTML:e.innerHTML?e.innerHTML:\"\",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{}}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:\"\",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e Take all the models. Otherwise:\n\t\t\t\t\t core_slice.apply(stack.models, isUndo ? [0, stack.pointer] : [stack.pointer, stack.length - 1]);\n\t\t} else {\n\t\t\t// Undo / Redo only one step\n\t\t\taction = stack.at(isUndo ? stack.pointer : stack.pointer + 1);\n\t\t\tactions = magic ? stack.where({\"magicFusionIndex\": action.get(\"magicFusionIndex\")}) : [action];\n\t\t}\n\t\t\n\t\tstack.pointer += (isUndo ? -1 : 1) * actions.length;\n\t\twhile (action = isUndo ? actions.pop() : actions.shift()) {\n\t\t\t// Here we're calling the Action's undo / redo method\n\t\t\taction[which]();\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = false;\n\n\t\tmanager.trigger(which, manager);\n\t}\n\n\t/**\n\t * Checks whether an UndoAction should be created or not. Therefore it checks\n\t * whether a \"condition\" property is set in the undoTypes-object of the specific\n\t * event type. If not, it returns true. If it's set and a boolean, it returns it.\n\t * If it's a function, it returns its result, converting it into a boolean. \n\t * Otherwise it returns true.\n\t * \n\t * @param {Object} \tundoTypesType \tThe object within the UndoTypes that holds the function for this event type (i.e. \"change\")\n\t * @param {Arguments} \targs \t\tThe arguments the \"condition\" function is called with\n\t * @return {Boolean} \tTrue, if an UndoAction should be created\n\t */\n\tfunction validateUndoActionCreation (undoTypesType, args) {\n\t\tvar condition = undoTypesType.condition, type = typeof condition;\n\t\treturn type === \"function\" ? !!apply(condition, undoTypesType, args) :\n\t\t\ttype === \"boolean\" ? condition : true;\n\t}\n\n\t/**\n\t * Adds an Undo-Action to the stack.\n\t * \n\t * @param {UndoStack} \t\tstack \t\tThe undostack the action should be added to.\n\t * @param {String} \t\t\ttype \t\tThe event type (i.e. \"change\")\n\t * @param {Arguments} \t\targs \t\tThe arguments passed to the undoTypes' \"on\"-handler\n\t * @param {OwnedUndoTypes} \tundoTypes \tThe undoTypes-object which has the \"on\"-handler\n\t * @return {undefined}\n\t */\n\tfunction addToStack(stack, type, args, undoTypes) {\n\t\tif (stack.track && !stack.isCurrentlyUndoRedoing && type in undoTypes &&\n\t\t\tvalidateUndoActionCreation(undoTypes[type], args)) {\n\t\t\t// An UndoAction should be created\n\t\t\tvar res = apply(undoTypes[type][\"on\"], undoTypes[type], args), diff;\n\t\t\tif (hasKeys(res, \"object\", \"before\", \"after\")) {\n\t\t\t\tres.type = type;\n\t\t\t\tres.magicFusionIndex = getMagicFusionIndex();\n\t\t\t\tres.undoTypes = undoTypes;\n\t\t\t\tif (stack.pointer < stack.length - 1) {\n\t\t\t\t\t// New Actions must always be added to the end of the stack.\n\t\t\t\t\t// If the pointer is not pointed to the last action in the\n\t\t\t\t\t// stack, presumably because actions were undone before, then\n\t\t\t\t\t// all following actions must be discarded\n\t\t\t\t\tvar diff = stack.length - stack.pointer - 1;\n\t\t\t\t\twhile (diff--) {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstack.pointer = stack.length;\n\t\t\t\tstack.add(res);\n\t\t\t\tif (stack.length > stack.maximumStackLength) {\n\t\t\t\t\tstack.shift();\n\t\t\t\t\tstack.pointer--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Predefined UndoTypes object with default handlers for the most common events.\n\t * @type {Object}\n\t */\n\tvar UndoTypes = {\n\t\t\"add\": {\n\t\t\t\"undo\": function (collection, ignore, model, options) {\n\t\t\t\t// Undo add = remove\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, ignore, model, options) {\n\t\t\t\t// Redo add = add\n\t\t\t\tif (options.index) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: undefined,\n\t\t\t\t\tafter: model,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"remove\": {\n\t\t\t\"undo\": function (collection, model, ignore, options) {\n\t\t\t\tif (\"index\" in options) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, model, ignore, options) {\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: model,\n\t\t\t\t\tafter: undefined,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"change\": {\n\t\t\t\"undo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(before)) {\n\t\t\t\t\t_.each(_.keys(after), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(before);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.before && options.unsetData.before.length) {\n\t\t\t\t\t\t_.each(options.unsetData.before, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"redo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(after)) {\n\t\t\t\t\t_.each(_.keys(before), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(after);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.after && options.unsetData.after.length) {\n\t\t\t\t\t\t_.each(options.unsetData.after, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"on\": function (model, options) {\n\t\t\t\tvar\n\t\t\t\tafterAttributes = model.changedAttributes(),\n\t\t\t\tkeysAfter = _.keys(afterAttributes),\n\t\t\t\tpreviousAttributes = _.pick(model.previousAttributes(), keysAfter),\n\t\t\t\tkeysPrevious = _.keys(previousAttributes),\n\t\t\t\tunsetData = (options || (options = {})).unsetData = {\n\t\t\t\t\tafter: [],\n\t\t\t\t\tbefore: []\n\t\t\t\t};\n\n\t\t\t\tif (keysAfter.length != keysPrevious.length) {\n\t\t\t\t\t// There are new attributes or old attributes have been unset\n\t\t\t\t\tif (keysAfter.length > keysPrevious.length) {\n\t\t\t\t\t\t// New attributes have been added\n\t\t\t\t\t\t_.each(keysAfter, function (val) {\n\t\t\t\t\t\t\tif (!(val in previousAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.before.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Old attributes have been unset\n\t\t\t\t\t\t_.each(keysPrevious, function (val) {\n\t\t\t\t\t\t\tif (!(val in afterAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.after.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tobject: model,\n\t\t\t\t\tbefore: previousAttributes,\n\t\t\t\t\tafter: afterAttributes,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"reset\": {\n\t\t\t\"undo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(before);\n\t\t\t},\n\t\t\t\"redo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(after);\n\t\t\t},\n\t\t\t\"on\": function (collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: options.previousModels,\n\t\t\t\t\tafter: _.clone(collection.models)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Every UndoManager instance has an own undoTypes object\n\t * which is an instance of OwnedUndoTypes. OwnedUndoTypes' \n\t * prototype is the global UndoTypes object. Changes to the \n\t * global UndoTypes object take effect on every instance of\n\t * UndoManager as the object is its prototype. And yet every \n\t * local UndoTypes object can be changed individually.\n\t *\n\t * @constructor\n\t */\n\tfunction OwnedUndoTypes () {}\n\tOwnedUndoTypes.prototype = UndoTypes;\n\n\t/**\n\t * Adds, changes or removes an undo-type from an UndoTypes-object.\n\t * You can call it this way:\n\t * manipulateUndoType (1, \"reset\", {\"on\": function () {}}, undoTypes)\n\t * or this way to perform bulk actions:\n\t * manipulateUndoType (1, {\"reset\": {\"on\": function () {}}}, undoTypes)\n\t * In case of removing undo-types you can pass an Array for performing\n\t * bulk actions:\n\t * manipulateUndoType(2, [\"reset\", \"change\"], undoTypes)\n\t * \n\t * @param {Number} \t\t\t\t manipType \t\tIndicates the kind of action to execute: 0 for add, 1 for change, 2 for remove\n\t * @param {String|Object|Array} \t undoType \t\t\tThe type of undoType that should be added/changed/removed. Can be an object / array to perform bulk actions\n\t * @param {Object} \t\t\t\t [fns] \t\t\tObject with the functions to add / change. Is optional in case you passed an object as undoType that contains these functions\n\t * @param {OwnedUndoTypes|UndoTypes} undoTypesInstance The undoTypes object to act on\n\t * @return {undefined}\n\t */\n\tfunction manipulateUndoType (manipType, undoType, fns, undoTypesInstance) {\n\t\t// manipType, passed by the calling function\n\t\t// 0: add\n\t\t// 1: change\n\t\t// 2: remove\n\t\tif (typeof undoType === \"object\") {\n\t\t\t// bulk action. Iterate over this data.\n\t\t\treturn _.each(undoType, function (val, key) {\n\t\t\t\t\tif (manipType === 2) { // remove\n\t\t\t\t\t\t// undoType is an array\n\t\t\t\t\t\tmanipulateUndoType (manipType, val, fns, undoTypesInstance);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// undoType is an object\n\t\t\t\t\t\tmanipulateUndoType (manipType, key, val, fns);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tswitch (manipType) {\n\t\t\tcase 0: // add\n\t\t\t\tif (hasKeys(fns, \"undo\", \"redo\", \"on\") && _.all(_.pick(fns, \"undo\", \"redo\", \"on\"), _.isFunction)) {\n\t\t\t\t\tundoTypesInstance[undoType] = fns;\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 1: // change\n\t\t\t\tif (undoTypesInstance[undoType] && _.isObject(fns)) {\n\t\t\t\t\t// undoTypeInstance[undoType] may be a prototype's property\n\t\t\t\t\t// So, if we did this _.extend(undoTypeInstance[undoType], fns)\n\t\t\t\t\t// we would extend the object on the prototype which means\n\t\t\t\t\t// that this change would have a global effect\n\t\t\t\t\t// Instead we just want to manipulate this instance. That's why\n\t\t\t\t\t// we're doing this:\n\t\t\t\t\tundoTypesInstance[undoType] = _.extend({}, undoTypesInstance[undoType], fns);\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 2: // remove\n\t\t\t\tdelete undoTypesInstance[undoType]; \n\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Instantiating \"Action\" creates the UndoActions that \n\t * are collected in an UndoStack. It holds all relevant \n\t * data to undo / redo an action and has an undo / redo \n\t * method.\n\t */\n\tvar Action = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\ttype: null, // \"add\", \"change\", \"reset\", etc.\n\t\t\tobject: null, // The object on which the action occurred\n\t\t\tbefore: null, // The previous values which were changed with this action\n\t\t\tafter: null, // The values after this action\n\t\t\tmagicFusionIndex: null // The magicFusionIndex helps to combine \n\t\t\t// all actions that occurred \"at the same time\" to undo/redo them altogether\n\t\t},\n\t\t/**\n\t\t * Undoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"undo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"undo\", this.attributes);\n\t\t},\n\t\t/**\n\t\t * Redoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"redo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"redo\", this.attributes);\n\t\t}\n\t}),\n\t/**\n\t * An UndoStack is a collection of UndoActions in \n\t * chronological order.\n\t */\n\tUndoStack = Backbone.Collection.extend({\n\t\tmodel: Action,\n\t\tpointer: -1, // The pointer indicates the index where we are located within the stack. We start at -1\n\t\ttrack: false,\n\t\tisCurrentlyUndoRedoing: false,\n\t\tmaximumStackLength: Infinity,\n\t\tsetMaxLength: function (val) {\n\t\t\tthis.maximumStackLength = val;\n\t\t}\n\t}),\n\t/**\n\t * An instance of UndoManager can keep track of \n\t * changes to objects and helps to undo them.\n\t */\n\tUndoManager = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tmaximumStackLength: Infinity,\n\t\t\ttrack: false\n\t\t},\n\t\t/**\n\t\t * The constructor function.\n\t\t * @param {attr} \t\t[attr] Object with parameters. The available parameters are:\n\t\t * \t - maximumStackLength {number} \tSet the undo-stack's maximum size\n\t\t * - track \t\t\t\t{boolean}\tStart tracking changes right away\n\t\t * @return {undefined}\n\t\t */\n\t\tinitialize: function (attr) {\n\t\t\tthis.stack = new UndoStack;\n\t\t\tthis.objectRegistry = new ObjectRegistry();\n\t\t\tthis.undoTypes = new OwnedUndoTypes();\n\n\t\t\t// sync the maximumStackLength attribute with our stack\n\t\t\tthis.stack.setMaxLength(this.get(\"maximumStackLength\"));\n\t\t\tthis.on(\"change:maximumStackLength\", function (model, value) {\n\t\t\t\tthis.stack.setMaxLength(value);\n\t\t\t}, this);\n\n\t\t\t// Start tracking, if attr.track == true\n\t\t\tif (attr && attr.track) {\n\t\t\t\tthis.startTracking();\n\t\t\t}\n\n\t\t\t// Register objects passed in the \"register\" attribute\n\t\t\tif (attr && attr.register) {\n\t\t\t\tif (_.isArray(attr.register) || _.isArguments(attr.register)) {\n\t\t\t\t\tapply(this.register, this, attr.register);\n\t\t\t\t} else {\n\t\t\t\t\tthis.register(attr.register);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Starts tracking. Changes of registered objects won't be processed until you've called this function\n\t\t * @return {undefined}\n\t\t */\n\t\tstartTracking: function () {\n\t\t\tthis.set(\"track\", true);\n\t\t\tthis.stack.track = true;\n\t\t},\n\t\t/**\n\t\t * Stops tracking. Afterwards changes of registered objects won't be processed.\n\t\t * @return {undefined}\n\t\t */\n\t\tstopTracking: function () {\n\t\t\tthis.set(\"track\", false);\n\t\t\tthis.stack.track = false;\n\t\t},\n\t\t/**\n\t\t * Return the state of the tracking\n\t\t * @return {boolean}\n\t\t */\n\t\tisTracking: function () {\n\t\t\treturn this.get(\"track\");\n\t\t},\n\t\t/**\n\t\t * This is the \"all\"-handler which is bound to registered \n\t\t * objects. It creates an UndoAction from the event and adds \n\t\t * it to the stack.\n\t\t * \n\t\t * @param {String} \ttype \tThe event type\n\t\t * @return {undefined}\n\t\t */\n\t\t_addToStack: function (type) {\n\t\t\taddToStack(this.stack, type, slice(arguments, 1), this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Registers one or more objects to track their changes.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes should be tracked\n\t\t * @return {undefined}\n\t\t */\n\t\tregister: function () {\n\t\t\tonoff(\"on\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters one or more objects.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes shouldn't be tracked any longer\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function () {\n\t\t\tonoff(\"off\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters all previously registered objects.\n\t\t * @return {undefined}\n\t\t */\n\t\tunregisterAll: function () {\n\t\t\tapply(this.unregister, this, this.objectRegistry.get());\n\t\t},\n\t\t/**\n\t\t * Undoes the last action or the last set of actions in case 'magic' is true.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are undone together\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (magic) {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Undoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tundoAll: function () {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, false, true);\n\t\t},\n\n\t\t/**\n\t\t * Redoes a previously undone action or a set of actions.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are redone together\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (magic) {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Redoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tredoAll: function () {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, false, true);\n\t\t},\n\t\t/**\n\t\t * Checks if there's an action in the stack that can be undone / redone\n\t\t * @param {String} \ttype \tEither \"undo\" or \"redo\"\n\t\t * @return {Boolean} True if there is a set of actions which can be undone / redone\n\t\t */\n\t\tisAvailable: function (type) {\n\t\t\tvar s = this.stack, l = s.length;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase \"undo\": return l > 0 && s.pointer > -1;\n\t\t\t\tcase \"redo\": return l > 0 && s.pointer < l - 1;\n\t\t\t\tdefault: return false;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the stack-reference to the stack of another undoManager.\n\t\t * @param {UndoManager} \tundoManager \tThe undoManager whose stack-reference is set to this stack\n\t\t * @return {undefined}\n\t\t */\n\t\tmerge: function (undoManager) {\n\t\t\t// This sets the stack-reference to the stack of another \n\t\t\t// undoManager so that the stack of this other undoManager \n\t\t\t// is used by two different managers.\n\t\t\t// This enables to set up a main-undoManager and besides it\n\t\t\t// several others for special, exceptional cases (by using\n\t\t\t// instance-based custom UndoTypes). Models / collections \n\t\t\t// which need this special treatment are only registered at \n\t\t\t// those special undoManagers. Those special ones are then \n\t\t\t// merged into the main-undoManager to write on its stack. \n\t\t\t// That way it's easier to manage exceptional cases.\n\t\t\tvar args = _.isArray(undoManager) ? undoManager : slice(arguments), manager;\n\t\t\twhile (manager = args.pop()) {\n\t\t\t\tif (manager instanceof UndoManager &&\n\t\t\t\t\tmanager.stack instanceof UndoStack) {\n\t\t\t\t\t// set the stack reference to our stack\n\t\t\t\t\tmanager.stack = this.stack;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to this specific UndoManager-instance.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\taddUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType for this specific UndoManager-instance.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\tchangeUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\tremoveUndoType: function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, this.undoTypes);\n\t\t},\n\n\t\t/**\n\t\t * Removes all actions from the stack.\n\t\t * @return {undefined}\n\t\t */\n\t\tclear: function() {\n\t\t\tthis.stack.reset();\n\t\t\tthis.stack.pointer = -1;\n\t\t}\n\t});\n\n\t_.extend(UndoManager, {\n\t\t/**\n\t\t * Change the UndoManager's default attributes\n\t\t * @param {Object} defaultAttributes An object with the new default values.\n\t\t * @return {undefined}\n\t\t */\n\t\tdefaults: function (defaultAttributes) {\n\t\t\t_.extend(UndoManager.prototype.defaults, defaultAttributes);\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to the global UndoTypes-object.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\t\"addUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, UndoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType in the global UndoTypes-object.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"changeUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, UndoTypes)\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"removeUndoType\": function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, UndoTypes);\n\t\t}\n\t})\n\n\treturn Backbone.UndoManager = UndoManager;\n\n});\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _declaration = _interopRequireDefault(require(\"./declaration\"));\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _atRule = _interopRequireDefault(require(\"./at-rule\"));\n\nvar _vendor = _interopRequireDefault(require(\"./vendor\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nvar _rule = _interopRequireDefault(require(\"./rule\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.|Processor} plugins PostCSS plugins.\n * See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS.\n *\n * @example\n * import postcss from 'postcss'\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n * console.log(result.css)\n * })\n *\n * @namespace postcss\n */\nfunction postcss() {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n\n return new _processor.default(plugins);\n}\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace])\n * processor.plugins[0].postcssPlugin //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '6.0.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n * return (root, result) => {\n * result.root = postcss.root()\n * }\n * })\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts)\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts)\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n * return (root, result) => {\n * return new Promise( (resolve, reject) => {\n * fs.readFile('base.css', (base) => {\n * root.prepend(base)\n * resolve()\n * })\n * })\n * }\n * })\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n * return (root, result) => {\n * root.walkDecls(decl => {\n * if (!caniuse.support(decl.prop)) {\n * decl.warn(result, 'Some browsers do not support ' + decl.prop)\n * }\n * })\n * }\n * })\n * ```\n *\n * @param {string} name PostCSS plugin name. Same as in `name`\n * property in `package.json`. It will be saved\n * in `plugin.postcssPlugin` property.\n * @param {function} initializer Will receive plugin options\n * and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin.\n */\n\n\npostcss.plugin = function plugin(name, initializer) {\n function creator() {\n var transformer = initializer.apply(void 0, arguments);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new _processor.default().version;\n return transformer;\n }\n\n var cache;\n Object.defineProperty(creator, 'postcss', {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n\n return creator;\n};\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node Start node for stringifing. Usually {@link Root}.\n * @param {builder} builder Function to concatenate CSS from node’s parts\n * or generate string and source map.\n *\n * @return {void}\n *\n * @function\n */\n\n\npostcss.stringify = _stringify.default;\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css String with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] Options with only `from` and `map` keys.\n *\n * @return {Root} PostCSS AST.\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 })\n * const root2 = postcss.parse(css2, { from: file2 })\n * root1.append(root2).toResult().css\n *\n * @function\n */\n\npostcss.parse = _parse.default;\n/**\n * Contains the {@link vendor} module.\n *\n * @type {vendor}\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\n\npostcss.vendor = _vendor.default;\n/**\n * Contains the {@link list} module.\n *\n * @member {list}\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\n\npostcss.list = _list.default;\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Comment} New comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\n\npostcss.comment = function (defaults) {\n return new _comment.default(defaults);\n};\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {AtRule} new at-rule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\n\n\npostcss.atRule = function (defaults) {\n return new _atRule.default(defaults);\n};\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Declaration} new declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\n\n\npostcss.decl = function (defaults) {\n return new _declaration.default(defaults);\n};\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Rule} new rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\n\n\npostcss.rule = function (defaults) {\n return new _rule.default(defaults);\n};\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] Properties for the new node.\n *\n * @return {Root} new root node.\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\n\n\npostcss.root = function (defaults) {\n return new _root.default(defaults);\n};\n\nvar _default = postcss;\nexports.default = _default;\nmodule.exports = exports.default;\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsImRlZmF1bHRzIiwiQ29tbWVudCIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBLFNBQVNBLE9BQVQsR0FBOEI7QUFBQSxvQ0FBVEMsT0FBUztBQUFUQSxJQUFBQSxPQUFTO0FBQUE7O0FBQzVCLE1BQUlBLE9BQU8sQ0FBQ0MsTUFBUixLQUFtQixDQUFuQixJQUF3QkMsS0FBSyxDQUFDQyxPQUFOLENBQWNILE9BQU8sQ0FBQyxDQUFELENBQXJCLENBQTVCLEVBQXVEO0FBQ3JEQSxJQUFBQSxPQUFPLEdBQUdBLE9BQU8sQ0FBQyxDQUFELENBQWpCO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFJSSxrQkFBSixDQUFjSixPQUFkLENBQVA7QUFDRDtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQUQsT0FBTyxDQUFDTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBaUJDLElBQWpCLEVBQXVCQyxXQUF2QixFQUFvQztBQUNuRCxXQUFTQyxPQUFULEdBQTJCO0FBQ3pCLFFBQUlDLFdBQVcsR0FBR0YsV0FBVyxNQUFYLG1CQUFsQjtBQUNBRSxJQUFBQSxXQUFXLENBQUNDLGFBQVosR0FBNEJKLElBQTVCO0FBQ0FHLElBQUFBLFdBQVcsQ0FBQ0UsY0FBWixHQUE4QixJQUFJUCxrQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDRDs7QUFFRCxNQUFJSSxLQUFKO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDeENRLElBQUFBLEdBRHdDLGlCQUNqQztBQUNMLFVBQUksQ0FBQ0gsS0FBTCxFQUFZQSxLQUFLLEdBQUdMLE9BQU8sRUFBZjtBQUNaLGFBQU9LLEtBQVA7QUFDRDtBQUp1QyxHQUExQzs7QUFPQUwsRUFBQUEsT0FBTyxDQUFDUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDeEQsV0FBT3JCLE9BQU8sQ0FBQyxDQUFDUyxPQUFPLENBQUNZLFVBQUQsQ0FBUixDQUFELENBQVAsQ0FBK0JILE9BQS9CLENBQXVDQyxHQUF2QyxFQUE0Q0MsV0FBNUMsQ0FBUDtBQUNELEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNELENBckJEO0FBdUJBOzs7Ozs7Ozs7Ozs7O0FBV0FULE9BQU8sQ0FBQ3NCLFNBQVIsR0FBb0JBLGtCQUFwQjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsT0FBTyxDQUFDdUIsS0FBUixHQUFnQkEsY0FBaEI7QUFFQTs7Ozs7Ozs7O0FBUUF2QixPQUFPLENBQUN3QixNQUFSLEdBQWlCQSxlQUFqQjtBQUVBOzs7Ozs7Ozs7QUFRQXhCLE9BQU8sQ0FBQ3lCLElBQVIsR0FBZUEsYUFBZjtBQUVBOzs7Ozs7Ozs7OztBQVVBekIsT0FBTyxDQUFDMEIsT0FBUixHQUFrQixVQUFBQyxRQUFRO0FBQUEsU0FBSSxJQUFJQyxnQkFBSixDQUFZRCxRQUFaLENBQUo7QUFBQSxDQUExQjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQzZCLE1BQVIsR0FBaUIsVUFBQUYsUUFBUTtBQUFBLFNBQUksSUFBSUcsZUFBSixDQUFXSCxRQUFYLENBQUo7QUFBQSxDQUF6QjtBQUVBOzs7Ozs7Ozs7Ozs7QUFVQTNCLE9BQU8sQ0FBQytCLElBQVIsR0FBZSxVQUFBSixRQUFRO0FBQUEsU0FBSSxJQUFJSyxvQkFBSixDQUFnQkwsUUFBaEIsQ0FBSjtBQUFBLENBQXZCO0FBRUE7Ozs7Ozs7Ozs7OztBQVVBM0IsT0FBTyxDQUFDaUMsSUFBUixHQUFlLFVBQUFOLFFBQVE7QUFBQSxTQUFJLElBQUlPLGFBQUosQ0FBU1AsUUFBVCxDQUFKO0FBQUEsQ0FBdkI7QUFFQTs7Ozs7Ozs7Ozs7O0FBVUEzQixPQUFPLENBQUNtQyxJQUFSLEdBQWUsVUFBQVIsUUFBUTtBQUFBLFNBQUksSUFBSVMsYUFBSixDQUFTVCxRQUFULENBQUo7QUFBQSxDQUF2Qjs7ZUFFZTNCLE8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbidcbmltcG9ydCBQcm9jZXNzb3IgZnJvbSAnLi9wcm9jZXNzb3InXG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5J1xuaW1wb3J0IENvbW1lbnQgZnJvbSAnLi9jb21tZW50J1xuaW1wb3J0IEF0UnVsZSBmcm9tICcuL2F0LXJ1bGUnXG5pbXBvcnQgdmVuZG9yIGZyb20gJy4vdmVuZG9yJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UnXG5pbXBvcnQgbGlzdCBmcm9tICcuL2xpc3QnXG5pbXBvcnQgUnVsZSBmcm9tICcuL3J1bGUnXG5pbXBvcnQgUm9vdCBmcm9tICcuL3Jvb3QnXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlIHRoYXQgd2lsbCBhcHBseSBgcGx1Z2luc2BcbiAqIGFzIENTUyBwcm9jZXNzb3JzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXkuPFBsdWdpbnxwbHVnaW5GdW5jdGlvbj58UHJvY2Vzc29yfSBwbHVnaW5zIFBvc3RDU1MgcGx1Z2lucy5cbiAqICAgICAgICBTZWUge0BsaW5rIFByb2Nlc3NvciN1c2V9IGZvciBwbHVnaW4gZm9ybWF0LlxuICpcbiAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gUHJvY2Vzc29yIHRvIHByb2Nlc3MgbXVsdGlwbGUgQ1NTLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJ1xuICpcbiAqIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjc3MsIHsgZnJvbSwgdG8gfSkudGhlbihyZXN1bHQgPT4ge1xuICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKVxuICogfSlcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyAoLi4ucGx1Z2lucykge1xuICBpZiAocGx1Z2lucy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShwbHVnaW5zWzBdKSkge1xuICAgIHBsdWdpbnMgPSBwbHVnaW5zWzBdXG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucylcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgUG9zdENTUyBwbHVnaW4gd2l0aCBhIHN0YW5kYXJkIEFQSS5cbiAqXG4gKiBUaGUgbmV3bHktd3JhcHBlZCBmdW5jdGlvbiB3aWxsIHByb3ZpZGUgYm90aCB0aGUgbmFtZSBhbmQgUG9zdENTU1xuICogdmVyc2lvbiBvZiB0aGUgcGx1Z2luLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFtyZXBsYWNlXSlcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NQbHVnaW4gIC8vPT4gJ3Bvc3Rjc3MtcmVwbGFjZSdcbiAqIHByb2Nlc3Nvci5wbHVnaW5zWzBdLnBvc3Rjc3NWZXJzaW9uIC8vPT4gJzYuMC4wJ1xuICogYGBgXG4gKlxuICogVGhlIHBsdWdpbiBmdW5jdGlvbiByZWNlaXZlcyAyIGFyZ3VtZW50czoge0BsaW5rIFJvb3R9XG4gKiBhbmQge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2UuIFRoZSBmdW5jdGlvbiBzaG91bGQgbXV0YXRlIHRoZSBwcm92aWRlZFxuICogYFJvb3RgIG5vZGUuIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gY3JlYXRlIGEgbmV3IGBSb290YCBub2RlXG4gKiBhbmQgb3ZlcnJpZGUgdGhlIGByZXN1bHQucm9vdGAgcHJvcGVydHkuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGNsZWFuZXIgPSBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1jbGVhbmVyJywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJlc3VsdC5yb290ID0gcG9zdGNzcy5yb290KClcbiAqICAgfVxuICogfSlcbiAqIGBgYFxuICpcbiAqIEFzIGEgY29udmVuaWVuY2UsIHBsdWdpbnMgYWxzbyBleHBvc2UgYSBgcHJvY2Vzc2AgbWV0aG9kIHNvIHRoYXQgeW91IGNhbiB1c2VcbiAqIHRoZW0gYXMgc3RhbmRhbG9uZSB0b29scy5cbiAqXG4gKiBgYGBqc1xuICogY2xlYW5lci5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpXG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpXG4gKiBgYGBcbiAqXG4gKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICpcbiAqIGBgYGpzXG4gKiBwb3N0Y3NzLnBsdWdpbigncG9zdGNzcy1pbXBvcnQnLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gKiAgICAgICBmcy5yZWFkRmlsZSgnYmFzZS5jc3MnLCAoYmFzZSkgPT4ge1xuICogICAgICAgICByb290LnByZXBlbmQoYmFzZSlcbiAqICAgICAgICAgcmVzb2x2ZSgpXG4gKiAgICAgICB9KVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBBZGQgd2FybmluZ3MgdXNpbmcgdGhlIHtAbGluayBOb2RlI3dhcm59IG1ldGhvZC5cbiAqIFNlbmQgZGF0YSB0byBvdGhlciBwbHVnaW5zIHVzaW5nIHRoZSB7QGxpbmsgUmVzdWx0I21lc3NhZ2VzfSBhcnJheS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtY2FuaXVzZS10ZXN0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJvb3Qud2Fsa0RlY2xzKGRlY2wgPT4ge1xuICogICAgICAgaWYgKCFjYW5pdXNlLnN1cHBvcnQoZGVjbC5wcm9wKSkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKVxuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgIH1cbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgaW4gYHBhY2thZ2UuanNvbmAuIEl0IHdpbGwgYmUgc2F2ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGBwbHVnaW4ucG9zdGNzc1BsdWdpbmAgcHJvcGVydHkuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBpbml0aWFsaXplciBXaWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzaG91bGQgcmV0dXJuIHtAbGluayBwbHVnaW5GdW5jdGlvbn1cbiAqXG4gKiBAcmV0dXJuIHtQbHVnaW59IFBvc3RDU1MgcGx1Z2luLlxuICovXG5wb3N0Y3NzLnBsdWdpbiA9IGZ1bmN0aW9uIHBsdWdpbiAobmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgZnVuY3Rpb24gY3JlYXRvciAoLi4uYXJncykge1xuICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpXG4gICAgdHJhbnNmb3JtZXIucG9zdGNzc1BsdWdpbiA9IG5hbWVcbiAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzVmVyc2lvbiA9IChuZXcgUHJvY2Vzc29yKCkpLnZlcnNpb25cbiAgICByZXR1cm4gdHJhbnNmb3JtZXJcbiAgfVxuXG4gIGxldCBjYWNoZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRvciwgJ3Bvc3Rjc3MnLCB7XG4gICAgZ2V0ICgpIHtcbiAgICAgIGlmICghY2FjaGUpIGNhY2hlID0gY3JlYXRvcigpXG4gICAgICByZXR1cm4gY2FjaGVcbiAgICB9XG4gIH0pXG5cbiAgY3JlYXRvci5wcm9jZXNzID0gZnVuY3Rpb24gKGNzcywgcHJvY2Vzc09wdHMsIHBsdWdpbk9wdHMpIHtcbiAgICByZXR1cm4gcG9zdGNzcyhbY3JlYXRvcihwbHVnaW5PcHRzKV0pLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cylcbiAgfVxuXG4gIHJldHVybiBjcmVhdG9yXG59XG5cbi8qKlxuICogRGVmYXVsdCBmdW5jdGlvbiB0byBjb252ZXJ0IGEgbm9kZSB0cmVlIGludG8gYSBDU1Mgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAgICBTdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgRnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBvciBnZW5lcmF0ZSBzdHJpbmcgYW5kIHNvdXJjZSBtYXAuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcblxuLyoqXG4gKiBQYXJzZXMgc291cmNlIGNzcyBhbmQgcmV0dXJucyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZSxcbiAqIHdoaWNoIGNvbnRhaW5zIHRoZSBzb3VyY2UgQ1NTIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICBTdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdG9TdHJpbmcoKSBtZXRob2QsIGxpa2UgYSBCdWZmZXJcbiAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSBPcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXMuXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1QuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNpbXBsZSBDU1MgY29uY2F0ZW5hdGlvbiB3aXRoIHNvdXJjZSBtYXAgc3VwcG9ydFxuICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogZmlsZTEgfSlcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pXG4gKiByb290MS5hcHBlbmQocm9vdDIpLnRvUmVzdWx0KCkuY3NzXG4gKlxuICogQGZ1bmN0aW9uXG4gKi9cbnBvc3Rjc3MucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIENvbnRhaW5zIHRoZSB7QGxpbmsgdmVuZG9yfSBtb2R1bGUuXG4gKlxuICogQHR5cGUge3ZlbmRvcn1cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy52ZW5kb3IudW5wcmVmaXhlZCgnLW1vei10YWInKSAvLz0+IFsndGFiJ11cbiAqL1xucG9zdGNzcy52ZW5kb3IgPSB2ZW5kb3JcblxuLyoqXG4gKiBDb250YWlucyB0aGUge0BsaW5rIGxpc3R9IG1vZHVsZS5cbiAqXG4gKiBAbWVtYmVyIHtsaXN0fVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3RcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBDb21tZW50fSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIFByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBOZXcgY29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBBdFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IGF0LXJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmF0UnVsZSh7IG5hbWU6ICdjaGFyc2V0JyB9KS50b1N0cmluZygpIC8vPT4gXCJAY2hhcnNldFwiXG4gKi9cbnBvc3Rjc3MuYXRSdWxlID0gZGVmYXVsdHMgPT4gbmV3IEF0UnVsZShkZWZhdWx0cylcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7RGVjbGFyYXRpb259IG5ldyBkZWNsYXJhdGlvbiBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuZGVjbCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAncmVkJyB9KS50b1N0cmluZygpIC8vPT4gXCJjb2xvcjogcmVkXCJcbiAqL1xucG9zdGNzcy5kZWNsID0gZGVmYXVsdHMgPT4gbmV3IERlY2xhcmF0aW9uKGRlZmF1bHRzKVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gUHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge1J1bGV9IG5ldyBydWxlIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHtcXG59XCJcbiAqL1xucG9zdGNzcy5ydWxlID0gZGVmYXVsdHMgPT4gbmV3IFJ1bGUoZGVmYXVsdHMpXG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSBQcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7Um9vdH0gbmV3IHJvb3Qgbm9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5yb290KHsgYWZ0ZXI6ICdcXG4nIH0pLnRvU3RyaW5nKCkgLy89PiBcIlxcblwiXG4gKi9cbnBvc3Rjc3Mucm9vdCA9IGRlZmF1bHRzID0+IG5ldyBSb290KGRlZmF1bHRzKVxuXG5leHBvcnQgZGVmYXVsdCBwb3N0Y3NzXG4iXSwiZmlsZSI6InBvc3Rjc3MuanMifQ==\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","/**\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) {\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 Promise.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 Promise.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 Promise(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) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\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","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[global.Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return obj[name];\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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LE1BQU0sQ0FBQyxFQUFFLGNBQWMsRUFBZCxjQUFjLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsRCxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJydW50aW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vZXhjZXB0aW9uJztcbmltcG9ydCB7XG4gIENPTVBJTEVSX1JFVklTSU9OLFxuICBjcmVhdGVGcmFtZSxcbiAgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OLFxuICBSRVZJU0lPTl9DSEFOR0VTXG59IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyBtb3ZlSGVscGVyVG9Ib29rcyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB3cmFwSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC93cmFwSGVscGVyJztcbmltcG9ydCB7XG4gIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCxcbiAgcmVzdWx0SXNBbGxvd2VkXG59IGZyb20gJy4vaW50ZXJuYWwvcHJvdG8tYWNjZXNzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmV2aXNpb24oY29tcGlsZXJJbmZvKSB7XG4gIGNvbnN0IGNvbXBpbGVyUmV2aXNpb24gPSAoY29tcGlsZXJJbmZvICYmIGNvbXBpbGVySW5mb1swXSkgfHwgMSxcbiAgICBjdXJyZW50UmV2aXNpb24gPSBDT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoXG4gICAgY29tcGlsZXJSZXZpc2lvbiA+PSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiZcbiAgICBjb21waWxlclJldmlzaW9uIDw9IENPTVBJTEVSX1JFVklTSU9OXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgY29uc3QgcnVudGltZVZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjdXJyZW50UmV2aXNpb25dLFxuICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICtcbiAgICAgICAgJ1BsZWFzZSB1cGRhdGUgeW91ciBwcmVjb21waWxlciB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBydW50aW1lVmVyc2lvbnMgK1xuICAgICAgICAnKSBvciBkb3duZ3JhZGUgeW91ciBydW50aW1lIHRvIGFuIG9sZGVyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlclZlcnNpb25zICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgLy8gVXNlIHRoZSBlbWJlZGRlZCB2ZXJzaW9uIGluZm8gc2luY2UgdGhlIHJ1bnRpbWUgZG9lc24ndCBrbm93IGFib3V0IHRoaXMgcmV2aXNpb24geWV0XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdUZW1wbGF0ZSB3YXMgcHJlY29tcGlsZWQgd2l0aCBhIG5ld2VyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHJ1bnRpbWUgdG8gYSBuZXdlciB2ZXJzaW9uICgnICtcbiAgICAgICAgY29tcGlsZXJJbmZvWzFdICtcbiAgICAgICAgJykuJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTm8gZW52aXJvbm1lbnQgcGFzc2VkIHRvIHRlbXBsYXRlJyk7XG4gIH1cbiAgaWYgKCF0ZW1wbGF0ZVNwZWMgfHwgIXRlbXBsYXRlU3BlYy5tYWluKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVW5rbm93biB0ZW1wbGF0ZSBvYmplY3Q6ICcgKyB0eXBlb2YgdGVtcGxhdGVTcGVjKTtcbiAgfVxuXG4gIHRlbXBsYXRlU3BlYy5tYWluLmRlY29yYXRvciA9IHRlbXBsYXRlU3BlYy5tYWluX2Q7XG5cbiAgLy8gTm90ZTogVXNpbmcgZW52LlZNIHJlZmVyZW5jZXMgcmF0aGVyIHRoYW4gbG9jYWwgdmFyIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGlzIHNlY3Rpb24gdG8gYWxsb3dcbiAgLy8gZm9yIGV4dGVybmFsIHVzZXJzIHRvIG92ZXJyaWRlIHRoZXNlIGFzIHBzZXVkby1zdXBwb3J0ZWQgQVBJcy5cbiAgZW52LlZNLmNoZWNrUmV2aXNpb24odGVtcGxhdGVTcGVjLmNvbXBpbGVyKTtcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgcHJlY29tcGlsZWQgdGVtcGxhdGVzIHdpdGggY29tcGlsZXItdmVyc2lvbiA3ICg8NC4zLjApXG4gIGNvbnN0IHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9XG4gICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyICYmIHRlbXBsYXRlU3BlYy5jb21waWxlclswXSA9PT0gNztcblxuICBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsV3JhcHBlcihwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzaCkge1xuICAgICAgY29udGV4dCA9IFV0aWxzLmV4dGVuZCh7fSwgY29udGV4dCwgb3B0aW9ucy5oYXNoKTtcbiAgICAgIGlmIChvcHRpb25zLmlkcykge1xuICAgICAgICBvcHRpb25zLmlkc1swXSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnRpYWwgPSBlbnYuVk0ucmVzb2x2ZVBhcnRpYWwuY2FsbCh0aGlzLCBwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKTtcblxuICAgIGxldCBleHRlbmRlZE9wdGlvbnMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMsIHtcbiAgICAgIGhvb2tzOiB0aGlzLmhvb2tzLFxuICAgICAgcHJvdG9BY2Nlc3NDb250cm9sOiB0aGlzLnByb3RvQWNjZXNzQ29udHJvbFxuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGVudi5WTS5pbnZva2VQYXJ0aWFsLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgcGFydGlhbCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBleHRlbmRlZE9wdGlvbnNcbiAgICApO1xuXG4gICAgaWYgKHJlc3VsdCA9PSBudWxsICYmIGVudi5jb21waWxlKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0gPSBlbnYuY29tcGlsZShcbiAgICAgICAgcGFydGlhbCxcbiAgICAgICAgdGVtcGxhdGVTcGVjLmNvbXBpbGVyT3B0aW9ucyxcbiAgICAgICAgZW52XG4gICAgICApO1xuICAgICAgcmVzdWx0ID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdKGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQgIT0gbnVsbCkge1xuICAgICAgaWYgKG9wdGlvbnMuaW5kZW50KSB7XG4gICAgICAgIGxldCBsaW5lcyA9IHJlc3VsdC5zcGxpdCgnXFxuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gbGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKCFsaW5lc1tpXSAmJiBpICsgMSA9PT0gbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGluZXNbaV0gPSBvcHRpb25zLmluZGVudCArIGxpbmVzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1RoZSBwYXJ0aWFsICcgK1xuICAgICAgICAgIG9wdGlvbnMubmFtZSArXG4gICAgICAgICAgJyBjb3VsZCBub3QgYmUgY29tcGlsZWQgd2hlbiBydW5uaW5nIGluIHJ1bnRpbWUtb25seSBtb2RlJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBKdXN0IGFkZCB3YXRlclxuICBsZXQgY29udGFpbmVyID0ge1xuICAgIHN0cmljdDogZnVuY3Rpb24ob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1wiJyArIG5hbWUgKyAnXCIgbm90IGRlZmluZWQgaW4gJyArIG9iaiwge1xuICAgICAgICAgIGxvYzogbG9jXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9ialtuYW1lXTtcbiAgICB9LFxuICAgIGxvb2t1cFByb3BlcnR5OiBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgbGV0IHJlc3VsdCA9IHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xuICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIGxvb2t1cDogZnVuY3Rpb24oZGVwdGhzLCBuYW1lKSB7XG4gICAgICBjb25zdCBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uKGN1cnJlbnQsIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgY3VycmVudCA9PT0gJ2Z1bmN0aW9uJyA/IGN1cnJlbnQuY2FsbChjb250ZXh0KSA6IGN1cnJlbnQ7XG4gICAgfSxcblxuICAgIGVzY2FwZUV4cHJlc3Npb246IFV0aWxzLmVzY2FwZUV4cHJlc3Npb24sXG4gICAgaW52b2tlUGFydGlhbDogaW52b2tlUGFydGlhbFdyYXBwZXIsXG5cbiAgICBmbjogZnVuY3Rpb24oaSkge1xuICAgICAgbGV0IHJldCA9IHRlbXBsYXRlU3BlY1tpXTtcbiAgICAgIHJldC5kZWNvcmF0b3IgPSB0ZW1wbGF0ZVNwZWNbaSArICdfZCddO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9LFxuXG4gICAgcHJvZ3JhbXM6IFtdLFxuICAgIHByb2dyYW06IGZ1bmN0aW9uKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIGxldCBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgIGZuID0gdGhpcy5mbihpKTtcbiAgICAgIGlmIChkYXRhIHx8IGRlcHRocyB8fCBibG9ja1BhcmFtcyB8fCBkZWNsYXJlZEJsb2NrUGFyYW1zKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gd3JhcFByb2dyYW0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBpLFxuICAgICAgICAgIGZuLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoIXByb2dyYW1XcmFwcGVyKSB7XG4gICAgICAgIHByb2dyYW1XcmFwcGVyID0gdGhpcy5wcm9ncmFtc1tpXSA9IHdyYXBQcm9ncmFtKHRoaXMsIGksIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9ncmFtV3JhcHBlcjtcbiAgICB9LFxuXG4gICAgZGF0YTogZnVuY3Rpb24odmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbihwYXJhbSwgY29tbW9uKSB7XG4gICAgICBsZXQgb2JqID0gcGFyYW0gfHwgY29tbW9uO1xuXG4gICAgICBpZiAocGFyYW0gJiYgY29tbW9uICYmIHBhcmFtICE9PSBjb21tb24pIHtcbiAgICAgICAgb2JqID0gVXRpbHMuZXh0ZW5kKHt9LCBjb21tb24sIHBhcmFtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIEFuIGVtcHR5IG9iamVjdCB0byB1c2UgYXMgcmVwbGFjZW1lbnQgZm9yIG51bGwtY29udGV4dHNcbiAgICBudWxsQ29udGV4dDogT2JqZWN0LnNlYWwoe30pLFxuXG4gICAgbm9vcDogZW52LlZNLm5vb3AsXG4gICAgY29tcGlsZXJJbmZvOiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJcbiAgfTtcblxuICBmdW5jdGlvbiByZXQoY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGRhdGEgPSBvcHRpb25zLmRhdGE7XG5cbiAgICByZXQuX3NldHVwKG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsICYmIHRlbXBsYXRlU3BlYy51c2VEYXRhKSB7XG4gICAgICBkYXRhID0gaW5pdERhdGEoY29udGV4dCwgZGF0YSk7XG4gICAgfVxuICAgIGxldCBkZXB0aHMsXG4gICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID1cbiAgICAgICAgICBjb250ZXh0ICE9IG9wdGlvbnMuZGVwdGhzWzBdXG4gICAgICAgICAgICA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpXG4gICAgICAgICAgICA6IG9wdGlvbnMuZGVwdGhzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVwdGhzID0gW2NvbnRleHRdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1haW4oY29udGV4dCAvKiwgb3B0aW9ucyovKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAnJyArXG4gICAgICAgIHRlbXBsYXRlU3BlYy5tYWluKFxuICAgICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIGNvbnRhaW5lci5oZWxwZXJzLFxuICAgICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgICAgIGRlcHRoc1xuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIG1haW4gPSBleGVjdXRlRGVjb3JhdG9ycyhcbiAgICAgIHRlbXBsYXRlU3BlYy5tYWluLFxuICAgICAgbWFpbixcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG9wdGlvbnMuZGVwdGhzIHx8IFtdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zXG4gICAgKTtcbiAgICByZXR1cm4gbWFpbihjb250ZXh0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHJldC5pc1RvcCA9IHRydWU7XG5cbiAgcmV0Ll9zZXR1cCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCkge1xuICAgICAgbGV0IG1lcmdlZEhlbHBlcnMgPSBVdGlscy5leHRlbmQoe30sIGVudi5oZWxwZXJzLCBvcHRpb25zLmhlbHBlcnMpO1xuICAgICAgd3JhcEhlbHBlcnNUb1Bhc3NMb29rdXBQcm9wZXJ0eShtZXJnZWRIZWxwZXJzLCBjb250YWluZXIpO1xuICAgICAgY29udGFpbmVyLmhlbHBlcnMgPSBtZXJnZWRIZWxwZXJzO1xuXG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwpIHtcbiAgICAgICAgLy8gVXNlIG1lcmdlSWZOZWVkZWQgaGVyZSB0byBwcmV2ZW50IGNvbXBpbGluZyBnbG9iYWwgcGFydGlhbHMgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gY29udGFpbmVyLm1lcmdlSWZOZWVkZWQoXG4gICAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyxcbiAgICAgICAgICBlbnYucGFydGlhbHNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCB8fCB0ZW1wbGF0ZVNwZWMudXNlRGVjb3JhdG9ycykge1xuICAgICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IFV0aWxzLmV4dGVuZChcbiAgICAgICAgICB7fSxcbiAgICAgICAgICBlbnYuZGVjb3JhdG9ycyxcbiAgICAgICAgICBvcHRpb25zLmRlY29yYXRvcnNcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICBsZXQga2VlcEhlbHBlckluSGVscGVycyA9XG4gICAgICAgIG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fFxuICAgICAgICB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBtb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uKGksIGRhdGEsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZUJsb2NrUGFyYW1zICYmICFibG9ja1BhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIGJsb2NrIHBhcmFtcycpO1xuICAgIH1cbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocyAmJiAhZGVwdGhzKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGksXG4gICAgICB0ZW1wbGF0ZVNwZWNbaV0sXG4gICAgICBkYXRhLFxuICAgICAgMCxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyYXBQcm9ncmFtKFxuICBjb250YWluZXIsXG4gIGksXG4gIGZuLFxuICBkYXRhLFxuICBkZWNsYXJlZEJsb2NrUGFyYW1zLFxuICBibG9ja1BhcmFtcyxcbiAgZGVwdGhzXG4pIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgY3VycmVudERlcHRocyA9IGRlcHRocztcbiAgICBpZiAoXG4gICAgICBkZXB0aHMgJiZcbiAgICAgIGNvbnRleHQgIT0gZGVwdGhzWzBdICYmXG4gICAgICAhKGNvbnRleHQgPT09IGNvbnRhaW5lci5udWxsQ29udGV4dCAmJiBkZXB0aHNbMF0gPT09IG51bGwpXG4gICAgKSB7XG4gICAgICBjdXJyZW50RGVwdGhzID0gW2NvbnRleHRdLmNvbmNhdChkZXB0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiBmbihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGNvbnRleHQsXG4gICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyxcbiAgICAgIG9wdGlvbnMuZGF0YSB8fCBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksXG4gICAgICBjdXJyZW50RGVwdGhzXG4gICAgKTtcbiAgfVxuXG4gIHByb2cgPSBleGVjdXRlRGVjb3JhdG9ycyhmbiwgcHJvZywgY29udGFpbmVyLCBkZXB0aHMsIGRhdGEsIGJsb2NrUGFyYW1zKTtcblxuICBwcm9nLnByb2dyYW0gPSBpO1xuICBwcm9nLmRlcHRoID0gZGVwdGhzID8gZGVwdGhzLmxlbmd0aCA6IDA7XG4gIHByb2cuYmxvY2tQYXJhbXMgPSBkZWNsYXJlZEJsb2NrUGFyYW1zIHx8IDA7XG4gIHJldHVybiBwcm9nO1xufVxuXG4vKipcbiAqIFRoaXMgaXMgY3VycmVudGx5IHBhcnQgb2YgdGhlIG9mZmljaWFsIEFQSSwgdGhlcmVmb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZva2VQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgLy8gVXNlIHRoZSBjdXJyZW50IGNsb3N1cmUgY29udGV4dCB0byBzYXZlIHRoZSBwYXJ0aWFsLWJsb2NrIGlmIHRoaXMgcGFydGlhbFxuICBjb25zdCBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICBsZXQgcGFydGlhbEJsb2NrO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgbGV0IGZuID0gb3B0aW9ucy5mbjtcbiAgICBwYXJ0aWFsQmxvY2sgPSBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGZ1bmN0aW9uIHBhcnRpYWxCbG9ja1dyYXBwZXIoXG4gICAgICBjb250ZXh0LFxuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgKSB7XG4gICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAvLyBpLmUuIHRoZSBwYXJ0IGluc2lkZSB0aGUgYmxvY2sgb2YgdGhlIHBhcnRpYWwgY2FsbC5cbiAgICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfTtcbiAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHMgPSBVdGlscy5leHRlbmQoe30sIG9wdGlvbnMucGFydGlhbHMsIGZuLnBhcnRpYWxzKTtcbiAgICB9XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gIH0gZWxzZSBpZiAocGFydGlhbCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIHBhcnRpYWwoY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IGNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihcbiAgICAgIHByb2csXG4gICAgICBwcm9wcyxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIGRlcHRocyAmJiBkZXB0aHNbMF0sXG4gICAgICBkYXRhLFxuICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICBkZXB0aHNcbiAgICApO1xuICAgIFV0aWxzLmV4dGVuZChwcm9nLCBwcm9wcyk7XG4gIH1cbiAgcmV0dXJuIHByb2c7XG59XG5cbmZ1bmN0aW9uIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKSB7XG4gIE9iamVjdC5rZXlzKG1lcmdlZEhlbHBlcnMpLmZvckVhY2goaGVscGVyTmFtZSA9PiB7XG4gICAgbGV0IGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgY29uc3QgbG9va3VwUHJvcGVydHkgPSBjb250YWluZXIubG9va3VwUHJvcGVydHk7XG4gIHJldHVybiB3cmFwSGVscGVyKGhlbHBlciwgb3B0aW9ucyA9PiB7XG4gICAgcmV0dXJuIFV0aWxzLmV4dGVuZCh7IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.parseWithoutProcessing = parseWithoutProcessing;\nexports.parse = parse;\n// istanbul ignore next\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)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _parser = require('./parser');\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _whitespaceControl = require('./whitespace-control');\n\nvar _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);\n\nvar _helpers = require('./helpers');\n\nvar Helpers = _interopRequireWildcard(_helpers);\n\nvar _utils = require('../utils');\n\nexports.parser = _parser2['default'];\n\nvar yy = {};\n_utils.extend(yy, Helpers);\n\nfunction parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n _parser2['default'].yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function (locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n var ast = _parser2['default'].parse(input);\n\n return ast;\n}\n\nfunction parse(input, options) {\n var ast = parseWithoutProcessing(input, options);\n var strip = new _whitespaceControl2['default'](options);\n\n return strip.accept(ast);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztzQkFBbUIsVUFBVTs7OztpQ0FDQyxzQkFBc0I7Ozs7dUJBQzNCLFdBQVc7O0lBQXhCLE9BQU87O3FCQUNJLFVBQVU7O1FBRXhCLE1BQU07O0FBRWYsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ1osY0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBRWIsU0FBUyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFOztBQUVyRCxNQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzVCLFdBQU8sS0FBSyxDQUFDO0dBQ2Q7O0FBRUQsc0JBQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQzs7O0FBR2YsSUFBRSxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBRTtBQUM3QixXQUFPLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNuRSxDQUFDOztBQUVGLE1BQUksR0FBRyxHQUFHLG9CQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzs7QUFFOUIsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3BDLE1BQUksR0FBRyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxNQUFJLEtBQUssR0FBRyxtQ0FBc0IsT0FBTyxDQUFDLENBQUM7O0FBRTNDLFNBQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJiYXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNlciBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgV2hpdGVzcGFjZUNvbnRyb2wgZnJvbSAnLi93aGl0ZXNwYWNlLWNvbnRyb2wnO1xuaW1wb3J0ICogYXMgSGVscGVycyBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgeyBwYXJzZXIgfTtcblxubGV0IHl5ID0ge307XG5leHRlbmQoeXksIEhlbHBlcnMpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucykge1xuICAvLyBKdXN0IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLlxuICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgcGFyc2VyLnl5ID0geXk7XG5cbiAgLy8gQWx0ZXJpbmcgdGhlIHNoYXJlZCBvYmplY3QgaGVyZSwgYnV0IHRoaXMgaXMgb2sgYXMgcGFyc2VyIGlzIGEgc3luYyBvcGVyYXRpb25cbiAgeXkubG9jSW5mbyA9IGZ1bmN0aW9uKGxvY0luZm8pIHtcbiAgICByZXR1cm4gbmV3IHl5LlNvdXJjZUxvY2F0aW9uKG9wdGlvbnMgJiYgb3B0aW9ucy5zcmNOYW1lLCBsb2NJbmZvKTtcbiAgfTtcblxuICBsZXQgYXN0ID0gcGFyc2VyLnBhcnNlKGlucHV0KTtcblxuICByZXR1cm4gYXN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgbGV0IGFzdCA9IHBhcnNlV2l0aG91dFByb2Nlc3NpbmcoaW5wdXQsIG9wdGlvbnMpO1xuICBsZXQgc3RyaXAgPSBuZXcgV2hpdGVzcGFjZUNvbnRyb2wob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHN0cmlwLmFjY2VwdChhc3QpO1xufVxuIl19\n","// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\n\"use strict\";\n\nexports.__esModule = true;\nvar handlebars = (function () {\n var parser = { trace: function trace() {},\n yy: {},\n symbols_: { \"error\": 2, \"root\": 3, \"program\": 4, \"EOF\": 5, \"program_repetition0\": 6, \"statement\": 7, \"mustache\": 8, \"block\": 9, \"rawBlock\": 10, \"partial\": 11, \"partialBlock\": 12, \"content\": 13, \"COMMENT\": 14, \"CONTENT\": 15, \"openRawBlock\": 16, \"rawBlock_repetition0\": 17, \"END_RAW_BLOCK\": 18, \"OPEN_RAW_BLOCK\": 19, \"helperName\": 20, \"openRawBlock_repetition0\": 21, \"openRawBlock_option0\": 22, \"CLOSE_RAW_BLOCK\": 23, \"openBlock\": 24, \"block_option0\": 25, \"closeBlock\": 26, \"openInverse\": 27, \"block_option1\": 28, \"OPEN_BLOCK\": 29, \"openBlock_repetition0\": 30, \"openBlock_option0\": 31, \"openBlock_option1\": 32, \"CLOSE\": 33, \"OPEN_INVERSE\": 34, \"openInverse_repetition0\": 35, \"openInverse_option0\": 36, \"openInverse_option1\": 37, \"openInverseChain\": 38, \"OPEN_INVERSE_CHAIN\": 39, \"openInverseChain_repetition0\": 40, \"openInverseChain_option0\": 41, \"openInverseChain_option1\": 42, \"inverseAndProgram\": 43, \"INVERSE\": 44, \"inverseChain\": 45, \"inverseChain_option0\": 46, \"OPEN_ENDBLOCK\": 47, \"OPEN\": 48, \"mustache_repetition0\": 49, \"mustache_option0\": 50, \"OPEN_UNESCAPED\": 51, \"mustache_repetition1\": 52, \"mustache_option1\": 53, \"CLOSE_UNESCAPED\": 54, \"OPEN_PARTIAL\": 55, \"partialName\": 56, \"partial_repetition0\": 57, \"partial_option0\": 58, \"openPartialBlock\": 59, \"OPEN_PARTIAL_BLOCK\": 60, \"openPartialBlock_repetition0\": 61, \"openPartialBlock_option0\": 62, \"param\": 63, \"sexpr\": 64, \"OPEN_SEXPR\": 65, \"sexpr_repetition0\": 66, \"sexpr_option0\": 67, \"CLOSE_SEXPR\": 68, \"hash\": 69, \"hash_repetition_plus0\": 70, \"hashSegment\": 71, \"ID\": 72, \"EQUALS\": 73, \"blockParams\": 74, \"OPEN_BLOCK_PARAMS\": 75, \"blockParams_repetition_plus0\": 76, \"CLOSE_BLOCK_PARAMS\": 77, \"path\": 78, \"dataName\": 79, \"STRING\": 80, \"NUMBER\": 81, \"BOOLEAN\": 82, \"UNDEFINED\": 83, \"NULL\": 84, \"DATA\": 85, \"pathSegments\": 86, \"SEP\": 87, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"EOF\", 14: \"COMMENT\", 15: \"CONTENT\", 18: \"END_RAW_BLOCK\", 19: \"OPEN_RAW_BLOCK\", 23: \"CLOSE_RAW_BLOCK\", 29: \"OPEN_BLOCK\", 33: \"CLOSE\", 34: \"OPEN_INVERSE\", 39: \"OPEN_INVERSE_CHAIN\", 44: \"INVERSE\", 47: \"OPEN_ENDBLOCK\", 48: \"OPEN\", 51: \"OPEN_UNESCAPED\", 54: \"CLOSE_UNESCAPED\", 55: \"OPEN_PARTIAL\", 60: \"OPEN_PARTIAL_BLOCK\", 65: \"OPEN_SEXPR\", 68: \"CLOSE_SEXPR\", 72: \"ID\", 73: \"EQUALS\", 75: \"OPEN_BLOCK_PARAMS\", 77: \"CLOSE_BLOCK_PARAMS\", 80: \"STRING\", 81: \"NUMBER\", 82: \"BOOLEAN\", 83: \"UNDEFINED\", 84: \"NULL\", 85: \"DATA\", 87: \"SEP\" },\n productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n break;\n case 2:\n this.$ = yy.prepareProgram($$[$0]);\n break;\n case 3:\n this.$ = $$[$0];\n break;\n case 4:\n this.$ = $$[$0];\n break;\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = $$[$0];\n break;\n case 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n\n break;\n case 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n\n break;\n case 11:\n this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 12:\n this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };\n break;\n case 13:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);\n break;\n case 14:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);\n break;\n case 15:\n this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };\n break;\n case 16:\n this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };\n break;\n case 17:\n this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };\n break;\n case 18:\n this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };\n break;\n case 19:\n var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0 - 1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };\n\n break;\n case 20:\n this.$ = $$[$0];\n break;\n case 21:\n this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };\n break;\n case 22:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n case 23:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n case 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n indent: '',\n strip: yy.stripFlags($$[$0 - 4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n\n break;\n case 25:\n this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 26:\n this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };\n break;\n case 27:\n this.$ = $$[$0];\n break;\n case 28:\n this.$ = $$[$0];\n break;\n case 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n loc: yy.locInfo(this._$)\n };\n\n break;\n case 30:\n this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 31:\n this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 32:\n this.$ = yy.id($$[$0 - 1]);\n break;\n case 33:\n this.$ = $$[$0];\n break;\n case 34:\n this.$ = $$[$0];\n break;\n case 35:\n this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };\n break;\n case 36:\n this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };\n break;\n case 37:\n this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };\n break;\n case 38:\n this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };\n break;\n case 39:\n this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };\n break;\n case 40:\n this.$ = $$[$0];\n break;\n case 41:\n this.$ = $$[$0];\n break;\n case 42:\n this.$ = yy.preparePath(true, $$[$0], this._$);\n break;\n case 43:\n this.$ = yy.preparePath(false, $$[$0], this._$);\n break;\n case 44:\n $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2];\n break;\n case 45:\n this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];\n break;\n case 46:\n this.$ = [];\n break;\n case 47:\n $$[$0 - 1].push($$[$0]);\n break;\n case 48:\n this.$ = [];\n break;\n case 49:\n $$[$0 - 1].push($$[$0]);\n break;\n case 50:\n this.$ = [];\n break;\n case 51:\n $$[$0 - 1].push($$[$0]);\n break;\n case 58:\n this.$ = [];\n break;\n case 59:\n $$[$0 - 1].push($$[$0]);\n break;\n case 64:\n this.$ = [];\n break;\n case 65:\n $$[$0 - 1].push($$[$0]);\n break;\n case 70:\n this.$ = [];\n break;\n case 71:\n $$[$0 - 1].push($$[$0]);\n break;\n case 78:\n this.$ = [];\n break;\n case 79:\n $$[$0 - 1].push($$[$0]);\n break;\n case 82:\n this.$ = [];\n break;\n case 83:\n $$[$0 - 1].push($$[$0]);\n break;\n case 86:\n this.$ = [];\n break;\n case 87:\n $$[$0 - 1].push($$[$0]);\n break;\n case 90:\n this.$ = [];\n break;\n case 91:\n $$[$0 - 1].push($$[$0]);\n break;\n case 94:\n this.$ = [];\n break;\n case 95:\n $$[$0 - 1].push($$[$0]);\n break;\n case 98:\n this.$ = [$$[$0]];\n break;\n case 99:\n $$[$0 - 1].push($$[$0]);\n break;\n case 100:\n this.$ = [$$[$0]];\n break;\n case 101:\n $$[$0 - 1].push($$[$0]);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }],\n defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] },\n parseError: function parseError(str, hash) {\n throw new Error(str);\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = \"\",\n yylineno = 0,\n yyleng = 0,\n recovering = 0,\n TERROR = 2,\n EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\") this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\") this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol,\n preErrorSymbol,\n state,\n action,\n a,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state]) if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1 ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected });\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0) recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column };\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n /* Jison generated lexer */\n var lexer = (function () {\n var lexer = { EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n setInput: function setInput(input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 };\n if (this.options.ranges) this.yylloc.range = [0, 0];\n this.offset = 0;\n return this;\n },\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) this.yylineno -= lines.length - 1;\n var r = this.yylloc.range;\n\n this.yylloc = { first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\n more: function more() {\n this._more = true;\n return this;\n },\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n upcomingInput: function upcomingInput() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token, match, tempMatch, index, col, lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = { first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), { text: \"\", token: null, line: this.yylineno });\n }\n },\n lex: function lex() {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n popState: function popState() {\n return this.conditionStack.pop();\n },\n _currentRules: function _currentRules() {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n },\n topState: function topState() {\n return this.conditionStack[this.conditionStack.length - 2];\n },\n pushState: function begin(condition) {\n this.begin(condition);\n } };\n lexer.options = {};\n lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n\n function strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n }\n\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n if (yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0, 1);\n this.begin(\"mu\");\n } else if (yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0, 1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if (yy_.yytext) return 15;\n\n break;\n case 1:\n return 15;\n break;\n case 2:\n this.popState();\n return 15;\n\n break;\n case 3:\n this.begin('raw');return 15;\n break;\n case 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n\n break;\n case 5:\n return 15;\n break;\n case 6:\n this.popState();\n return 14;\n\n break;\n case 7:\n return 65;\n break;\n case 8:\n return 68;\n break;\n case 9:\n return 19;\n break;\n case 10:\n this.popState();\n this.begin('raw');\n return 23;\n\n break;\n case 11:\n return 55;\n break;\n case 12:\n return 60;\n break;\n case 13:\n return 29;\n break;\n case 14:\n return 47;\n break;\n case 15:\n this.popState();return 44;\n break;\n case 16:\n this.popState();return 44;\n break;\n case 17:\n return 34;\n break;\n case 18:\n return 39;\n break;\n case 19:\n return 51;\n break;\n case 20:\n return 48;\n break;\n case 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\n break;\n case 22:\n this.popState();\n return 14;\n\n break;\n case 23:\n return 48;\n break;\n case 24:\n return 73;\n break;\n case 25:\n return 72;\n break;\n case 26:\n return 72;\n break;\n case 27:\n return 87;\n break;\n case 28:\n // ignore whitespace\n break;\n case 29:\n this.popState();return 54;\n break;\n case 30:\n this.popState();return 33;\n break;\n case 31:\n yy_.yytext = strip(1, 2).replace(/\\\\\"/g, '\"');return 80;\n break;\n case 32:\n yy_.yytext = strip(1, 2).replace(/\\\\'/g, \"'\");return 80;\n break;\n case 33:\n return 85;\n break;\n case 34:\n return 82;\n break;\n case 35:\n return 82;\n break;\n case 36:\n return 83;\n break;\n case 37:\n return 84;\n break;\n case 38:\n return 81;\n break;\n case 39:\n return 75;\n break;\n case 40:\n return 77;\n break;\n case 41:\n return 72;\n break;\n case 42:\n yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g, '$1');return 72;\n break;\n case 43:\n return 'INVALID';\n break;\n case 44:\n return 5;\n break;\n }\n };\n lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/, /^(?:[^\\x00]+)/, /^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/, /^(?:\\{\\{\\{\\{(?=[^\\/]))/, /^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/, /^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/, /^(?:[\\s\\S]*?--(~)?\\}\\})/, /^(?:\\()/, /^(?:\\))/, /^(?:\\{\\{\\{\\{)/, /^(?:\\}\\}\\}\\})/, /^(?:\\{\\{(~)?>)/, /^(?:\\{\\{(~)?#>)/, /^(?:\\{\\{(~)?#\\*?)/, /^(?:\\{\\{(~)?\\/)/, /^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\^)/, /^(?:\\{\\{(~)?\\s*else\\b)/, /^(?:\\{\\{(~)?\\{)/, /^(?:\\{\\{(~)?&)/, /^(?:\\{\\{(~)?!--)/, /^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/, /^(?:\\{\\{(~)?\\*?)/, /^(?:=)/, /^(?:\\.\\.)/, /^(?:\\.(?=([=~}\\s\\/.)|])))/, /^(?:[\\/.])/, /^(?:\\s+)/, /^(?:\\}(~)?\\}\\})/, /^(?:(~)?\\}\\})/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\\s)])))/, /^(?:false(?=([~}\\s)])))/, /^(?:undefined(?=([~}\\s)])))/, /^(?:null(?=([~}\\s)])))/, /^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/, /^(?:as\\s+\\|)/, /^(?:\\|)/, /^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/, /^(?:\\[(\\\\\\]|[^\\]])*\\])/, /^(?:.)/, /^(?:$)/];\n lexer.conditions = { \"mu\": { \"rules\": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], \"inclusive\": false }, \"emu\": { \"rules\": [2], \"inclusive\": false }, \"com\": { \"rules\": [6], \"inclusive\": false }, \"raw\": { \"rules\": [3, 4, 5], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 44], \"inclusive\": true } };\n return lexer;\n })();\n parser.lexer = lexer;\n function Parser() {\n this.yy = {};\n }Parser.prototype = parser;parser.Parser = Parser;\n return new Parser();\n})();exports[\"default\"] = handlebars;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3BhcnNlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLElBQUksVUFBVSxHQUFHLENBQUMsWUFBVTtBQUM1QixRQUFJLE1BQU0sR0FBRyxFQUFDLEtBQUssRUFBRSxTQUFTLEtBQUssR0FBSSxFQUFHO0FBQzFDLFVBQUUsRUFBRSxFQUFFO0FBQ04sZ0JBQVEsRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMscUJBQXFCLEVBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsRUFBRSxFQUFDLFNBQVMsRUFBQyxFQUFFLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUMsRUFBRSxFQUFDLGNBQWMsRUFBQyxFQUFFLEVBQUMsc0JBQXNCLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsZ0JBQWdCLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUMsMEJBQTBCLEVBQUMsRUFBRSxFQUFDLHNCQUFzQixFQUFDLEVBQUUsRUFBQyxpQkFBaUIsRUFBQyxFQUFFLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxlQUFlLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUMsYUFBYSxFQUFDLEVBQUUsRUFBQyxlQUFlLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxFQUFFLEVBQUMsdUJBQXVCLEVBQUMsRUFBRSxFQUFDLG1CQUFtQixFQUFDLEVBQUUsRUFBQyxtQkFBbUIsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsRUFB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RUFBRSxFQUFDLEtBQUssRUFBQztBQUM1ZSxvQkFBWSxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFB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QUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDdEUsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZGLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3JKLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDckksMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNySSwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQy9FLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQ0gsd0JBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQzdFLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6RCwyQkFBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7O0FBRXZCLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOztBQUV0RSwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDO0FBQzFFLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEgsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0SCwwQkFBTTtBQUFB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QUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQywwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFDcEcsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQ3BILDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFDM0gsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUM7QUFDN0csMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQzlGLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RCwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEQsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBRSxzQkFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxBQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RywwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUMzRCwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHNCQUFFLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QiwwQkFBTTtBQUFBLEFBQ04scUJBQUssRUFBRTtBQUFDLHdCQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUIsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFBQyxzQkFBRSxDQUFDLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEdBQUc7QUFBQyx3QkFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxHQUFHO0FBQUMsc0JBQUUsQ0FBQyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLDBCQUFNO0FBQUEsYUFDTDtTQUNBO0FBQ0QsYUFBSyxFQUFFLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxDQUFDO0FBQy8vVixzQkFBYyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQztBQUNsTSxrQkFBVSxFQUFFLFNBQVMsVUFBVSxDQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFD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QUNOLHFCQUFLLENBQUM7QUFBRSwyQkFBTyxFQUFFLENBQUM7QUFDbEIsMEJBQU07QUFBQSxBQUNOLHFCQUFLLEVBQUU7QUFDMkIsd0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoQix3QkFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsQiwyQkFBTyxFQUFFLENBQUM7O0FBRTVDLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxBQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ25DLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsd0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxBQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ25DLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQUMsMkJBQU8sRUFBRSxDQUFDO0FBQ2xCLDBCQUFNO0FBQUEsQUFDTixxQkFBSyxFQUFFO0FBQ0wsd0JBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsd0JBQUksQ0FBQyxL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QyxXQUFXLEVBQUMsS0FBSyxFQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxFQUFDLEtBQUssRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxFQUFDLFNBQVMsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksRUFBQyxFQUFDLENBQUM7QUFDM1UsZUFBTyxLQUFLLENBQUM7S0FBQyxDQUFBLEVBQUcsQ0FBQTtBQUNqQixVQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixhQUFTLE1BQU0sR0FBSTtBQUFFLFlBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQUUsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckYsV0FBTyxJQUFJLE1BQU0sRUFBQSxDQUFDO0NBQ2pCLENBQUEsRUFBRyxDQUFDLHFCQUFlLFVBQVUiLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRmlsZSBpZ25vcmVkIGluIGNvdmVyYWdlIHRlc3RzIHZpYSBzZXR0aW5nIGluIC5pc3RhbmJ1bC55bWxcbi8qIEppc29uIGdlbmVyYXRlZCBwYXJzZXIgKi9cbnZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uKCl7XG52YXIgcGFyc2VyID0ge3RyYWNlOiBmdW5jdGlvbiB0cmFjZSAoKSB7IH0sXG55eToge30sXG5zeW1ib2xzXzoge1wiZXJyb3JcIjoyLFwicm9vdFwiOjMsXCJwcm9ncmFtXCI6NCxcIkVPRlwiOjUsXCJwcm9ncmFtX3JlcGV0aXRpb24wXCI6NixcInN0YXRlbWVudFwiOjcsXCJtdXN0YWNoZVwiOjgsXCJibG9ja1wiOjksXCJyYXdCbG9ja1wiOjEwLFwicGFydGlhbFwiOjExLFwicGFydGlhbEJsb2NrXCI6MTIsXCJjb250ZW50XCI6MTMsXCJDT01NRU5UXCI6MTQsXCJDT05URU5UXCI6MTUsXCJvcGVuUmF3QmxvY2tcIjoxNixcInJhd0Jsb2NrX3JlcGV0aXRpb24wXCI6MTcsXCJFTkRfUkFXX0JMT0NLXCI6MTgsXCJPUEVOX1JBV19CTE9DS1wiOjE5LFwiaGVscGVyTmFtZVwiOjIwLFwib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wXCI6MjEsXCJvcGVuUmF3QmxvY2tfb3B0aW9uMFwiOjIyLFwiQ0xPU0VfUkFXX0JMT0NLXCI6MjMsXCJvcGVuQmxvY2tcIjoyNCxcImJsb2NrX29wdGlvbjBcIjoyNSxcImNsb3NlQmxvY2tcIjoyNixcIm9wZW5JbnZlcnNlXCI6MjcsXCJibG9ja19vcHRpb24xXCI6MjgsXCJPUEVOX0JMT0NLXCI6MjksXCJvcGVuQmxvY2tfcmVwZXRpdGlvbjBcIjozMCxcIm9wZW5CbG9ja19vcHRpb24wXCI6MzEsXCJvcGVuQmxvY2tfb3B0aW9uMVwiOjMyLFwiQ0xPU0VcIjozMyxcIk9QRU5fSU5WRVJTRVwiOjM0LFwib3BlbkludmVyc2VfcmVwZXRpdGlvbjBcIjozNSxcIm9wZW5JbnZlcnNlX29wdGlvbjBcIjozNixcIm9wZW5JbnZlcnNlX29wdGlvbjFcIjozNyxcIm9wZW5JbnZlcnNlQ2hhaW5cIjozOCxcIk9QRU5fSU5WRVJTRV9DSEFJTlwiOjM5LFwib3BlbkludmVyc2VDaGFpbl9yZXBldGl0aW9uMFwiOjQwLFwib3BlbkludmVyc2VDaGFpbl9vcHRpb24wXCI6NDEsXCJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjFcIjo0MixcImludmVyc2VBbmRQcm9ncmFtXCI6NDMsXCJJTlZFUlNFXCI6NDQsXCJpbnZlcnNlQ2hhaW5cIjo0NSxcImludmVyc2VDaGFpbl9vcHRpb24wXCI6NDYsXCJPUEVOX0VOREJMT0NLXCI6NDcsXCJPUEVOXCI6NDgsXCJtdXN0YWNoZV9yZXBldGl0aW9uMFwiOjQ5LFwibXVzdGFjaGVfb3B0aW9uMFwiOjUwLFwiT1BFTl9VTkVTQ0FQRURcIjo1MSxcIm11c3RhY2hlX3JlcGV0aXRpb24xXCI6NTIsXCJtdXN0YWNoZV9vcHRpb24xXCI6NTMsXCJDTE9TRV9VTkVTQ0FQRURcIjo1NCxcIk9QRU5fUEFSVElBTFwiOjU1LFwicGFydGlhbE5hbWVcIjo1NixcInBhcnRpYWxfcmVwZXRpdGlvbjBcIjo1NyxcInBhcnRpYWxfb3B0aW9uMFwiOjU4LFwib3BlblBhcnRpYWxCbG9ja1wiOjU5LFwiT1BFTl9QQVJUSUFMX0JMT0NLXCI6NjAsXCJvcGVuUGFydGlhbEJsb2NrX3JlcGV0aXRpb24wXCI6NjEsXCJvcGVuUGFydGlhbEJsb2NrX29wdGlvbjBcIjo2MixcInBhcmFtXCI6NjMsXCJzZXhwclwiOjY0LFwiT1BFTl9TRVhQUlwiOjY1LFwic2V4cHJfcmVwZXRpdGlvbjBcIjo2NixcInNleHByX29wdGlvbjBcIjo2NyxcIkNMT1NFX1NFWFBSXCI6NjgsXCJoYXNoXCI6NjksXCJoYXNoX3JlcGV0aXRpb25fcGx1czBcIjo3MCxcImhhc2hTZWdtZW50XCI6NzEsXCJJRFwiOjcyLFwiRVFVQUxTXCI6NzMsXCJibG9ja1BhcmFtc1wiOjc0LFwiT1BFTl9CTE9DS19QQVJBTVNcIjo3NSxcImJsb2NrUGFyYW1zX3JlcGV0aXRpb25fcGx1czBcIjo3NixcIkNMT1NFX0JMT0NLX1BBUkFNU1wiOjc3LFwicGF0aFwiOjc4LFwiZGF0YU5hbWVcIjo3OSxcIlNUUklOR1wiOjgwLFwiTlVNQkVSXCI6ODEsXCJCT09MRUFOXCI6ODIsXCJVTkRFRklORURcIjo4MyxcIk5VTExcIjo4NCxcIkRBVEFcIjo4NSxcInBhdGhTZWdtZW50c1wiOjg2LFwiU0VQXCI6ODcsXCIkYWNjZXB0XCI6MCxcIiRlbmRcIjoxfSxcbnRlcm1pbmFsc186IHsyOlwiZXJyb3JcIiw1OlwiRU9GXCIsMTQ6XCJDT01NRU5UXCIsMTU6XCJDT05URU5UXCIsMTg6XCJFTkRfUkFXX0JMT0NLXCIsMTk6XCJPUEVOX1JBV19CTE9DS1wiLDIzOlwiQ0xPU0VfUkFXX0JMT0NLXCIsMjk6XCJPUEVOX0JMT0NLXCIsMzM6XCJDTE9TRVwiLDM0OlwiT1BFTl9JTlZFUlNFXCIsMzk6XCJPUEVOX0lOVkVSU0VfQ0hBSU5cIiw0NDpcIklOVkVSU0VcIiw0NzpcIk9QRU5fRU5EQkxPQ0tcIiw0ODpcIk9QRU5cIiw1MTpcIk9QRU5fVU5FU0NBUEVEXCIsNTQ6XCJDTE9TRV9VTkVTQ0FQRURcIiw1NTpcIk9QRU5fUEFSVElBTFwiLDYwOlwiT1BFTl9QQVJUSUFMX0JMT0NLXCIsNjU6XCJPUEVOX1NFWFBSXCIsNjg6XCJDTE9TRV9TRVhQUlwiLDcyOlwiSURcIiw3MzpcIkVRVUFMU1wiLDc1OlwiT1BFTl9CTE9DS19QQVJBTVNcIiw3NzpcIkNMT1NFX0JMT0NLX1BBUkFNU1wiLDgwOlwiU1RSSU5HXCIsODE6XCJOVU1CRVJcIiw4MjpcIkJPT0xFQU5cIiw4MzpcIlVOREVGSU5FRFwiLDg0OlwiTlVMTFwiLDg1OlwiREFUQVwiLDg3OlwiU0VQXCJ9LFxucHJvZHVjdGlvbnNfOiBbMCxbMywyXSxbNCwxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbNywxXSxbMTMsMV0sWzEwLDNdLFsxNiw1XSxbOSw0XSxbOSw0XSxbMjQsNl0sWzI3LDZdLFszOCw2XSxbNDMsMl0sWzQ1LDNdLFs0NSwxXSxbMjYsM10sWzgsNV0sWzgsNV0sWzExLDVdLFsxMiwzXSxbNTksNV0sWzYzLDFdLFs2MywxXSxbNjQsNV0sWzY5LDFdLFs3MSwzXSxbNzQsM10sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFsyMCwxXSxbMjAsMV0sWzIwLDFdLFs1NiwxXSxbNTYsMV0sWzc5LDJdLFs3OCwxXSxbODYsM10sWzg2LDFdLFs2LDBdLFs2LDJdLFsxNywwXSxbMTcsMl0sWzIxLDBdLFsyMSwyXSxbMjIsMF0sWzIyLDFdLFsyNSwwXSxbMjUsMV0sWzI4LDBdLFsyOCwxXSxbMzAsMF0sWzMwLDJdLFszMSwwXSxbMzEsMV0sWzMyLDBdLFszMiwxXSxbMzUsMF0sWzM1LDJdLFszNiwwXSxbMzYsMV0sWzM3LDBdLFszNywxXSxbNDAsMF0sWzQwLDJdLFs0MSwwXSxbNDEsMV0sWzQyLDBdLFs0MiwxXSxbNDYsMF0sWzQ2LDFdLFs0OSwwXSxbNDksMl0sWzUwLDBdLFs1MCwxXSxbNTIsMF0sWzUyLDJdLFs1MywwXSxbNTMsMV0sWzU3LDBdLFs1NywyXSxbNTgsMF0sWzU4LDFdLFs2MSwwXSxbNjEsMl0sWzYyLDBdLFs2MiwxXSxbNjYsMF0sWzY2LDJdLFs2NywwXSxbNjcsMV0sWzcwLDFdLFs3MCwyXSxbNzYsMV0sWzc2LDJdXSxcbnBlcmZvcm1BY3Rpb246IGZ1bmN0aW9uIGFub255bW91cyh5eXRleHQseXlsZW5nLHl5bGluZW5vLHl5LHl5c3RhdGUsJCQsXyRcbikge1xuXG52YXIgJDAgPSAkJC5sZW5ndGggLSAxO1xuc3dpdGNoICh5eXN0YXRlKSB7XG5jYXNlIDE6IHJldHVybiAkJFskMC0xXTsgXG5icmVhaztcbmNhc2UgMjp0aGlzLiQgPSB5eS5wcmVwYXJlUHJvZ3JhbSgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDM6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDQ6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDU6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDY6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDc6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDg6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDk6XG4gICAgdGhpcy4kID0ge1xuICAgICAgdHlwZTogJ0NvbW1lbnRTdGF0ZW1lbnQnLFxuICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLFxuICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLFxuICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgfTtcbiAgXG5icmVhaztcbmNhc2UgMTA6XG4gICAgdGhpcy4kID0ge1xuICAgICAgdHlwZTogJ0NvbnRlbnRTdGF0ZW1lbnQnLFxuICAgICAgb3JpZ2luYWw6ICQkWyQwXSxcbiAgICAgIHZhbHVlOiAkJFskMF0sXG4gICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICB9O1xuICBcbmJyZWFrO1xuY2FzZSAxMTp0aGlzLiQgPSB5eS5wcmVwYXJlUmF3QmxvY2soJCRbJDAtMl0sICQkWyQwLTFdLCAkJFskMF0sIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDEyOnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtM10sIHBhcmFtczogJCRbJDAtMl0sIGhhc2g6ICQkWyQwLTFdIH07XG5icmVhaztcbmNhc2UgMTM6dGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwLTNdLCAkJFskMC0yXSwgJCRbJDAtMV0sICQkWyQwXSwgZmFsc2UsIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDE0OnRoaXMuJCA9IHl5LnByZXBhcmVCbG9jaygkJFskMC0zXSwgJCRbJDAtMl0sICQkWyQwLTFdLCAkJFskMF0sIHRydWUsIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDE1OnRoaXMuJCA9IHsgb3BlbjogJCRbJDAtNV0sIHBhdGg6ICQkWyQwLTRdLCBwYXJhbXM6ICQkWyQwLTNdLCBoYXNoOiAkJFskMC0yXSwgYmxvY2tQYXJhbXM6ICQkWyQwLTFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMC01XSwgJCRbJDBdKSB9O1xuYnJlYWs7XG5jYXNlIDE2OnRoaXMuJCA9IHsgcGF0aDogJCRbJDAtNF0sIHBhcmFtczogJCRbJDAtM10sIGhhc2g6ICQkWyQwLTJdLCBibG9ja1BhcmFtczogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTVdLCAkJFskMF0pIH07XG5icmVhaztcbmNhc2UgMTc6dGhpcy4kID0geyBwYXRoOiAkJFskMC00XSwgcGFyYW1zOiAkJFskMC0zXSwgaGFzaDogJCRbJDAtMl0sIGJsb2NrUGFyYW1zOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtNV0sICQkWyQwXSkgfTtcbmJyZWFrO1xuY2FzZSAxODp0aGlzLiQgPSB7IHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTFdLCAkJFskMC0xXSksIHByb2dyYW06ICQkWyQwXSB9O1xuYnJlYWs7XG5jYXNlIDE5OlxuICAgIHZhciBpbnZlcnNlID0geXkucHJlcGFyZUJsb2NrKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCAkJFskMF0sIGZhbHNlLCB0aGlzLl8kKSxcbiAgICAgICAgcHJvZ3JhbSA9IHl5LnByZXBhcmVQcm9ncmFtKFtpbnZlcnNlXSwgJCRbJDAtMV0ubG9jKTtcbiAgICBwcm9ncmFtLmNoYWluZWQgPSB0cnVlO1xuXG4gICAgdGhpcy4kID0geyBzdHJpcDogJCRbJDAtMl0uc3RyaXAsIHByb2dyYW06IHByb2dyYW0sIGNoYWluOiB0cnVlIH07XG4gIFxuYnJlYWs7XG5jYXNlIDIwOnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSAyMTp0aGlzLiQgPSB7cGF0aDogJCRbJDAtMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwLTJdLCAkJFskMF0pfTtcbmJyZWFrO1xuY2FzZSAyMjp0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAtM10sICQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDAtNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAtNF0sICQkWyQwXSksIHRoaXMuXyQpO1xuYnJlYWs7XG5jYXNlIDIzOnRoaXMuJCA9IHl5LnByZXBhcmVNdXN0YWNoZSgkJFskMC0zXSwgJCRbJDAtMl0sICQkWyQwLTFdLCAkJFskMC00XSwgeXkuc3RyaXBGbGFncygkJFskMC00XSwgJCRbJDBdKSwgdGhpcy5fJCk7XG5icmVhaztcbmNhc2UgMjQ6XG4gICAgdGhpcy4kID0ge1xuICAgICAgdHlwZTogJ1BhcnRpYWxTdGF0ZW1lbnQnLFxuICAgICAgbmFtZTogJCRbJDAtM10sXG4gICAgICBwYXJhbXM6ICQkWyQwLTJdLFxuICAgICAgaGFzaDogJCRbJDAtMV0sXG4gICAgICBpbmRlbnQ6ICcnLFxuICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtNF0sICQkWyQwXSksXG4gICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICB9O1xuICBcbmJyZWFrO1xuY2FzZSAyNTp0aGlzLiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwLTJdLCAkJFskMC0xXSwgJCRbJDBdLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSAyNjp0aGlzLiQgPSB7IHBhdGg6ICQkWyQwLTNdLCBwYXJhbXM6ICQkWyQwLTJdLCBoYXNoOiAkJFskMC0xXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAtNF0sICQkWyQwXSkgfTtcbmJyZWFrO1xuY2FzZSAyNzp0aGlzLiQgPSAkJFskMF07XG5icmVhaztcbmNhc2UgMjg6dGhpcy4kID0gJCRbJDBdO1xuYnJlYWs7XG5jYXNlIDI5OlxuICAgIHRoaXMuJCA9IHtcbiAgICAgIHR5cGU6ICdTdWJFeHByZXNzaW9uJyxcbiAgICAgIHBhdGg6ICQkWyQwLTNdLFxuICAgICAgcGFyYW1zOiAkJFskMC0yXSxcbiAgICAgIGhhc2g6ICQkWyQwLTFdLFxuICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgfTtcbiAgXG5icmVhaztcbmNhc2UgMzA6dGhpcy4kID0ge3R5cGU6ICdIYXNoJywgcGFpcnM6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSAzMTp0aGlzLiQgPSB7dHlwZTogJ0hhc2hQYWlyJywga2V5OiB5eS5pZCgkJFskMC0yXSksIHZhbHVlOiAkJFskMF0sIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgMzI6dGhpcy4kID0geXkuaWQoJCRbJDAtMV0pO1xuYnJlYWs7XG5jYXNlIDMzOnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSAzNDp0aGlzLiQgPSAkJFskMF07XG5icmVhaztcbmNhc2UgMzU6dGhpcy4kID0ge3R5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQwXSwgb3JpZ2luYWw6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSAzNjp0aGlzLiQgPSB7dHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVtYmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSAzNzp0aGlzLiQgPSB7dHlwZTogJ0Jvb2xlYW5MaXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmlnaW5hbDogJCRbJDBdID09PSAndHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKX07XG5icmVhaztcbmNhc2UgMzg6dGhpcy4kID0ge3R5cGU6ICdVbmRlZmluZWRMaXRlcmFsJywgb3JpZ2luYWw6IHVuZGVmaW5lZCwgdmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpfTtcbmJyZWFrO1xuY2FzZSAzOTp0aGlzLiQgPSB7dHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCl9O1xuYnJlYWs7XG5jYXNlIDQwOnRoaXMuJCA9ICQkWyQwXTtcbmJyZWFrO1xuY2FzZSA0MTp0aGlzLiQgPSAkJFskMF07XG5icmVhaztcbmNhc2UgNDI6dGhpcy4kID0geXkucHJlcGFyZVBhdGgodHJ1ZSwgJCRbJDBdLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSA0Mzp0aGlzLiQgPSB5eS5wcmVwYXJlUGF0aChmYWxzZSwgJCRbJDBdLCB0aGlzLl8kKTtcbmJyZWFrO1xuY2FzZSA0NDogJCRbJDAtMl0ucHVzaCh7cGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSwgc2VwYXJhdG9yOiAkJFskMC0xXX0pOyB0aGlzLiQgPSAkJFskMC0yXTsgXG5icmVhaztcbmNhc2UgNDU6dGhpcy4kID0gW3twYXJ0OiB5eS5pZCgkJFskMF0pLCBvcmlnaW5hbDogJCRbJDBdfV07XG5icmVhaztcbmNhc2UgNDY6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNDc6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDQ4OnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDQ5OiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA1MDp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA1MTokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgNTg6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNTk6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDY0OnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDY1OiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA3MDp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA3MTokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgNzg6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgNzk6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDgyOnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDgzOiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA4Njp0aGlzLiQgPSBbXTtcbmJyZWFrO1xuY2FzZSA4NzokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgOTA6dGhpcy4kID0gW107XG5icmVhaztcbmNhc2UgOTE6JCRbJDAtMV0ucHVzaCgkJFskMF0pO1xuYnJlYWs7XG5jYXNlIDk0OnRoaXMuJCA9IFtdO1xuYnJlYWs7XG5jYXNlIDk1OiQkWyQwLTFdLnB1c2goJCRbJDBdKTtcbmJyZWFrO1xuY2FzZSA5ODp0aGlzLiQgPSBbJCRbJDBdXTtcbmJyZWFrO1xuY2FzZSA5OTokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbmNhc2UgMTAwOnRoaXMuJCA9IFskJFskMF1dO1xuYnJlYWs7XG5jYXNlIDEwMTokJFskMC0xXS5wdXNoKCQkWyQwXSk7XG5icmVhaztcbn1cbn0sXG50YWJsZTogW3szOjEsNDoyLDU6WzIsNDZdLDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezE6WzNdfSx7NTpbMSw0XX0sezU6WzIsMl0sNzo1LDg6Niw5OjcsMTA6OCwxMTo5LDEyOjEwLDEzOjExLDE0OlsxLDEyXSwxNTpbMSwyMF0sMTY6MTcsMTk6WzEsMjNdLDI0OjE1LDI3OjE2LDI5OlsxLDIxXSwzNDpbMSwyMl0sMzk6WzIsMl0sNDQ6WzIsMl0sNDc6WzIsMl0sNDg6WzEsMTNdLDUxOlsxLDE0XSw1NTpbMSwxOF0sNTk6MTksNjA6WzEsMjRdfSx7MTpbMiwxXX0sezU6WzIsNDddLDE0OlsyLDQ3XSwxNTpbMiw0N10sMTk6WzIsNDddLDI5OlsyLDQ3XSwzNDpbMiw0N10sMzk6WzIsNDddLDQ0OlsyLDQ3XSw0NzpbMiw0N10sNDg6WzIsNDddLDUxOlsyLDQ3XSw1NTpbMiw0N10sNjA6WzIsNDddfSx7NTpbMiwzXSwxNDpbMiwzXSwxNTpbMiwzXSwxOTpbMiwzXSwyOTpbMiwzXSwzNDpbMiwzXSwzOTpbMiwzXSw0NDpbMiwzXSw0NzpbMiwzXSw0ODpbMiwzXSw1MTpbMiwzXSw1NTpbMiwzXSw2MDpbMiwzXX0sezU6WzIsNF0sMTQ6WzIsNF0sMTU6WzIsNF0sMTk6WzIsNF0sMjk6WzIsNF0sMzQ6WzIsNF0sMzk6WzIsNF0sNDQ6WzIsNF0sNDc6WzIsNF0sNDg6WzIsNF0sNTE6WzIsNF0sNTU6WzIsNF0sNjA6WzIsNF19LHs1OlsyLDVdLDE0OlsyLDVdLDE1OlsyLDVdLDE5OlsyLDVdLDI5OlsyLDVdLDM0OlsyLDVdLDM5OlsyLDVdLDQ0OlsyLDVdLDQ3OlsyLDVdLDQ4OlsyLDVdLDUxOlsyLDVdLDU1OlsyLDVdLDYwOlsyLDVdfSx7NTpbMiw2XSwxNDpbMiw2XSwxNTpbMiw2XSwxOTpbMiw2XSwyOTpbMiw2XSwzNDpbMiw2XSwzOTpbMiw2XSw0NDpbMiw2XSw0NzpbMiw2XSw0ODpbMiw2XSw1MTpbMiw2XSw1NTpbMiw2XSw2MDpbMiw2XX0sezU6WzIsN10sMTQ6WzIsN10sMTU6WzIsN10sMTk6WzIsN10sMjk6WzIsN10sMzQ6WzIsN10sMzk6WzIsN10sNDQ6WzIsN10sNDc6WzIsN10sNDg6WzIsN10sNTE6WzIsN10sNTU6WzIsN10sNjA6WzIsN119LHs1OlsyLDhdLDE0OlsyLDhdLDE1OlsyLDhdLDE5OlsyLDhdLDI5OlsyLDhdLDM0OlsyLDhdLDM5OlsyLDhdLDQ0OlsyLDhdLDQ3OlsyLDhdLDQ4OlsyLDhdLDUxOlsyLDhdLDU1OlsyLDhdLDYwOlsyLDhdfSx7NTpbMiw5XSwxNDpbMiw5XSwxNTpbMiw5XSwxOTpbMiw5XSwyOTpbMiw5XSwzNDpbMiw5XSwzOTpbMiw5XSw0NDpbMiw5XSw0NzpbMiw5XSw0ODpbMiw5XSw1MTpbMiw5XSw1NTpbMiw5XSw2MDpbMiw5XX0sezIwOjI1LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjM2LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezQ6MzcsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sMzk6WzIsNDZdLDQ0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NDozOCw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezE1OlsyLDQ4XSwxNzozOSwxODpbMiw0OF19LHsyMDo0MSw1Njo0MCw2NDo0Miw2NTpbMSw0M10sNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NDo0NCw2OjMsMTQ6WzIsNDZdLDE1OlsyLDQ2XSwxOTpbMiw0Nl0sMjk6WzIsNDZdLDM0OlsyLDQ2XSw0NzpbMiw0Nl0sNDg6WzIsNDZdLDUxOlsyLDQ2XSw1NTpbMiw0Nl0sNjA6WzIsNDZdfSx7NTpbMiwxMF0sMTQ6WzIsMTBdLDE1OlsyLDEwXSwxODpbMiwxMF0sMTk6WzIsMTBdLDI5OlsyLDEwXSwzNDpbMiwxMF0sMzk6WzIsMTBdLDQ0OlsyLDEwXSw0NzpbMiwxMF0sNDg6WzIsMTBdLDUxOlsyLDEwXSw1NTpbMiwxMF0sNjA6WzIsMTBdfSx7MjA6NDUsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDYsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDcsNzI6WzEsMzVdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7MjA6NDEsNTY6NDgsNjQ6NDIsNjU6WzEsNDNdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsyLDc4XSw0OTo0OSw2NTpbMiw3OF0sNzI6WzIsNzhdLDgwOlsyLDc4XSw4MTpbMiw3OF0sODI6WzIsNzhdLDgzOlsyLDc4XSw4NDpbMiw3OF0sODU6WzIsNzhdfSx7MjM6WzIsMzNdLDMzOlsyLDMzXSw1NDpbMiwzM10sNjU6WzIsMzNdLDY4OlsyLDMzXSw3MjpbMiwzM10sNzU6WzIsMzNdLDgwOlsyLDMzXSw4MTpbMiwzM10sODI6WzIsMzNdLDgzOlsyLDMzXSw4NDpbMiwzM10sODU6WzIsMzNdfSx7MjM6WzIsMzRdLDMzOlsyLDM0XSw1NDpbMiwzNF0sNjU6WzIsMzRdLDY4OlsyLDM0XSw3MjpbMiwzNF0sNzU6WzIsMzRdLDgwOlsyLDM0XSw4MTpbMiwzNF0sODI6WzIsMzRdLDgzOlsyLDM0XSw4NDpbMiwzNF0sODU6WzIsMzRdfSx7MjM6WzIsMzVdLDMzOlsyLDM1XSw1NDpbMiwzNV0sNjU6WzIsMzVdLDY4OlsyLDM1XSw3MjpbMiwzNV0sNzU6WzIsMzVdLDgwOlsyLDM1XSw4MTpbMiwzNV0sODI6WzIsMzVdLDgzOlsyLDM1XSw4NDpbMiwzNV0sODU6WzIsMzVdfSx7MjM6WzIsMzZdLDMzOlsyLDM2XSw1NDpbMiwzNl0sNjU6WzIsMzZdLDY4OlsyLDM2XSw3MjpbMiwzNl0sNzU6WzIsMzZdLDgwOlsyLDM2XSw4MTpbMiwzNl0sODI6WzIsMzZdLDgzOlsyLDM2XSw4NDpbMiwzNl0sODU6WzIsMzZdfSx7MjM6WzIsMzddLDMzOlsyLDM3XSw1NDpbMiwzN10sNjU6WzIsMzddLDY4OlsyLDM3XSw3MjpbMiwzN10sNzU6WzIsMzddLDgwOlsyLDM3XSw4MTpbMiwzN10sODI6WzIsMzddLDgzOlsyLDM3XSw4NDpbMiwzN10sODU6WzIsMzddfSx7MjM6WzIsMzhdLDMzOlsyLDM4XSw1NDpbMiwzOF0sNjU6WzIsMzhdLDY4OlsyLDM4XSw3MjpbMiwzOF0sNzU6WzIsMzhdLDgwOlsyLDM4XSw4MTpbMiwzOF0sODI6WzIsMzhdLDgzOlsyLDM4XSw4NDpbMiwzOF0sODU6WzIsMzhdfSx7MjM6WzIsMzldLDMzOlsyLDM5XSw1NDpbMiwzOV0sNjU6WzIsMzldLDY4OlsyLDM5XSw3MjpbMiwzOV0sNzU6WzIsMzldLDgwOlsyLDM5XSw4MTpbMiwzOV0sODI6WzIsMzldLDgzOlsyLDM5XSw4NDpbMiwzOV0sODU6WzIsMzldfSx7MjM6WzIsNDNdLDMzOlsyLDQzXSw1NDpbMiw0M10sNjU6WzIsNDNdLDY4OlsyLDQzXSw3MjpbMiw0M10sNzU6WzIsNDNdLDgwOlsyLDQzXSw4MTpbMiw0M10sODI6WzIsNDNdLDgzOlsyLDQzXSw4NDpbMiw0M10sODU6WzIsNDNdLDg3OlsxLDUwXX0sezcyOlsxLDM1XSw4Njo1MX0sezIzOlsyLDQ1XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpbMiw0NV0sNzI6WzIsNDVdLDc1OlsyLDQ1XSw4MDpbMiw0NV0sODE6WzIsNDVdLDgyOlsyLDQ1XSw4MzpbMiw0NV0sODQ6WzIsNDVdLDg1OlsyLDQ1XSw4NzpbMiw0NV19LHs1Mjo1Miw1NDpbMiw4Ml0sNjU6WzIsODJdLDcyOlsyLDgyXSw4MDpbMiw4Ml0sODE6WzIsODJdLDgyOlsyLDgyXSw4MzpbMiw4Ml0sODQ6WzIsODJdLDg1OlsyLDgyXX0sezI1OjUzLDM4OjU1LDM5OlsxLDU3XSw0Mzo1Niw0NDpbMSw1OF0sNDU6NTQsNDc6WzIsNTRdfSx7Mjg6NTksNDM6NjAsNDQ6WzEsNThdLDQ3OlsyLDU2XX0sezEzOjYyLDE1OlsxLDIwXSwxODpbMSw2MV19LHszMzpbMiw4Nl0sNTc6NjMsNjU6WzIsODZdLDcyOlsyLDg2XSw4MDpbMiw4Nl0sODE6WzIsODZdLDgyOlsyLDg2XSw4MzpbMiw4Nl0sODQ6WzIsODZdLDg1OlsyLDg2XX0sezMzOlsyLDQwXSw2NTpbMiw0MF0sNzI6WzIsNDBdLDgwOlsyLDQwXSw4MTpbMiw0MF0sODI6WzIsNDBdLDgzOlsyLDQwXSw4NDpbMiw0MF0sODU6WzIsNDBdfSx7MzM6WzIsNDFdLDY1OlsyLDQxXSw3MjpbMiw0MV0sODA6WzIsNDFdLDgxOlsyLDQxXSw4MjpbMiw0MV0sODM6WzIsNDFdLDg0OlsyLDQxXSw4NTpbMiw0MV19LHsyMDo2NCw3MjpbMSwzNV0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo2NSw0NzpbMSw2Nl19LHszMDo2NywzMzpbMiw1OF0sNjU6WzIsNThdLDcyOlsyLDU4XSw3NTpbMiw1OF0sODA6WzIsNThdLDgxOlsyLDU4XSw4MjpbMiw1OF0sODM6WzIsNThdLDg0OlsyLDU4XSw4NTpbMiw1OF19LHszMzpbMiw2NF0sMzU6NjgsNjU6WzIsNjRdLDcyOlsyLDY0XSw3NTpbMiw2NF0sODA6WzIsNjRdLDgxOlsyLDY0XSw4MjpbMiw2NF0sODM6WzIsNjRdLDg0OlsyLDY0XSw4NTpbMiw2NF19LHsyMTo2OSwyMzpbMiw1MF0sNjU6WzIsNTBdLDcyOlsyLDUwXSw4MDpbMiw1MF0sODE6WzIsNTBdLDgyOlsyLDUwXSw4MzpbMiw1MF0sODQ6WzIsNTBdLDg1OlsyLDUwXX0sezMzOlsyLDkwXSw2MTo3MCw2NTpbMiw5MF0sNzI6WzIsOTBdLDgwOlsyLDkwXSw4MTpbMiw5MF0sODI6WzIsOTBdLDgzOlsyLDkwXSw4NDpbMiw5MF0sODU6WzIsOTBdfSx7MjA6NzQsMzM6WzIsODBdLDUwOjcxLDYzOjcyLDY0Ojc1LDY1OlsxLDQzXSw2OTo3Myw3MDo3Niw3MTo3Nyw3MjpbMSw3OF0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHs3MjpbMSw3OV19LHsyMzpbMiw0Ml0sMzM6WzIsNDJdLDU0OlsyLDQyXSw2NTpbMiw0Ml0sNjg6WzIsNDJdLDcyOlsyLDQyXSw3NTpbMiw0Ml0sODA6WzIsNDJdLDgxOlsyLDQyXSw4MjpbMiw0Ml0sODM6WzIsNDJdLDg0OlsyLDQyXSw4NTpbMiw0Ml0sODc6WzEsNTBdfSx7MjA6NzQsNTM6ODAsNTQ6WzIsODRdLDYzOjgxLDY0Ojc1LDY1OlsxLDQzXSw2OTo4Miw3MDo3Niw3MTo3Nyw3MjpbMSw3OF0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyNjo4Myw0NzpbMSw2Nl19LHs0NzpbMiw1NV19LHs0Ojg0LDY6MywxNDpbMiw0Nl0sMTU6WzIsNDZdLDE5OlsyLDQ2XSwyOTpbMiw0Nl0sMzQ6WzIsNDZdLDM5OlsyLDQ2XSw0NDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezQ3OlsyLDIwXX0sezIwOjg1LDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezQ6ODYsNjozLDE0OlsyLDQ2XSwxNTpbMiw0Nl0sMTk6WzIsNDZdLDI5OlsyLDQ2XSwzNDpbMiw0Nl0sNDc6WzIsNDZdLDQ4OlsyLDQ2XSw1MTpbMiw0Nl0sNTU6WzIsNDZdLDYwOlsyLDQ2XX0sezI2Ojg3LDQ3OlsxLDY2XX0sezQ3OlsyLDU3XX0sezU6WzIsMTFdLDE0OlsyLDExXSwxNTpbMiwxMV0sMTk6WzIsMTFdLDI5OlsyLDExXSwzNDpbMiwxMV0sMzk6WzIsMTFdLDQ0OlsyLDExXSw0NzpbMiwxMV0sNDg6WzIsMTFdLDUxOlsyLDExXSw1NTpbMiwxMV0sNjA6WzIsMTFdfSx7MTU6WzIsNDldLDE4OlsyLDQ5XX0sezIwOjc0LDMzOlsyLDg4XSw1ODo4OCw2Mzo4OSw2NDo3NSw2NTpbMSw0M10sNjk6OTAsNzA6NzYsNzE6NzcsNzI6WzEsNzhdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NjU6WzIsOTRdLDY2OjkxLDY4OlsyLDk0XSw3MjpbMiw5NF0sODA6WzIsOTRdLDgxOlsyLDk0XSw4MjpbMiw5NF0sODM6WzIsOTRdLDg0OlsyLDk0XSw4NTpbMiw5NF19LHs1OlsyLDI1XSwxNDpbMiwyNV0sMTU6WzIsMjVdLDE5OlsyLDI1XSwyOTpbMiwyNV0sMzQ6WzIsMjVdLDM5OlsyLDI1XSw0NDpbMiwyNV0sNDc6WzIsMjVdLDQ4OlsyLDI1XSw1MTpbMiwyNV0sNTU6WzIsMjVdLDYwOlsyLDI1XX0sezIwOjkyLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc0LDMxOjkzLDMzOlsyLDYwXSw2Mzo5NCw2NDo3NSw2NTpbMSw0M10sNjk6OTUsNzA6NzYsNzE6NzcsNzI6WzEsNzhdLDc1OlsyLDYwXSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc0LDMzOlsyLDY2XSwzNjo5Niw2Mzo5Nyw2NDo3NSw2NTpbMSw0M10sNjk6OTgsNzA6NzYsNzE6NzcsNzI6WzEsNzhdLDc1OlsyLDY2XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezIwOjc0LDIyOjk5LDIzOlsyLDUyXSw2MzoxMDAsNjQ6NzUsNjU6WzEsNDNdLDY5OjEwMSw3MDo3Niw3MTo3Nyw3MjpbMSw3OF0sNzg6MjYsNzk6MjcsODA6WzEsMjhdLDgxOlsxLDI5XSw4MjpbMSwzMF0sODM6WzEsMzFdLDg0OlsxLDMyXSw4NTpbMSwzNF0sODY6MzN9LHsyMDo3NCwzMzpbMiw5Ml0sNjI6MTAyLDYzOjEwMyw2NDo3NSw2NTpbMSw0M10sNjk6MTA0LDcwOjc2LDcxOjc3LDcyOlsxLDc4XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsxLDEwNV19LHszMzpbMiw3OV0sNjU6WzIsNzldLDcyOlsyLDc5XSw4MDpbMiw3OV0sODE6WzIsNzldLDgyOlsyLDc5XSw4MzpbMiw3OV0sODQ6WzIsNzldLDg1OlsyLDc5XX0sezMzOlsyLDgxXX0sezIzOlsyLDI3XSwzMzpbMiwyN10sNTQ6WzIsMjddLDY1OlsyLDI3XSw2ODpbMiwyN10sNzI6WzIsMjddLDc1OlsyLDI3XSw4MDpbMiwyN10sODE6WzIsMjddLDgyOlsyLDI3XSw4MzpbMiwyN10sODQ6WzIsMjddLDg1OlsyLDI3XX0sezIzOlsyLDI4XSwzMzpbMiwyOF0sNTQ6WzIsMjhdLDY1OlsyLDI4XSw2ODpbMiwyOF0sNzI6WzIsMjhdLDc1OlsyLDI4XSw4MDpbMiwyOF0sODE6WzIsMjhdLDgyOlsyLDI4XSw4MzpbMiwyOF0sODQ6WzIsMjhdLDg1OlsyLDI4XX0sezIzOlsyLDMwXSwzMzpbMiwzMF0sNTQ6WzIsMzBdLDY4OlsyLDMwXSw3MToxMDYsNzI6WzEsMTA3XSw3NTpbMiwzMF19LHsyMzpbMiw5OF0sMzM6WzIsOThdLDU0OlsyLDk4XSw2ODpbMiw5OF0sNzI6WzIsOThdLDc1OlsyLDk4XX0sezIzOlsyLDQ1XSwzMzpbMiw0NV0sNTQ6WzIsNDVdLDY1OlsyLDQ1XSw2ODpbMiw0NV0sNzI6WzIsNDVdLDczOlsxLDEwOF0sNzU6WzIsNDVdLDgwOlsyLDQ1XSw4MTpbMiw0NV0sODI6WzIsNDVdLDgzOlsyLDQ1XSw4NDpbMiw0NV0sODU6WzIsNDVdLDg3OlsyLDQ1XX0sezIzOlsyLDQ0XSwzMzpbMiw0NF0sNTQ6WzIsNDRdLDY1OlsyLDQ0XSw2ODpbMiw0NF0sNzI6WzIsNDRdLDc1OlsyLDQ0XSw4MDpbMiw0NF0sODE6WzIsNDRdLDgyOlsyLDQ0XSw4MzpbMiw0NF0sODQ6WzIsNDRdLDg1OlsyLDQ0XSw4NzpbMiw0NF19LHs1NDpbMSwxMDldfSx7NTQ6WzIsODNdLDY1OlsyLDgzXSw3MjpbMiw4M10sODA6WzIsODNdLDgxOlsyLDgzXSw4MjpbMiw4M10sODM6WzIsODNdLDg0OlsyLDgzXSw4NTpbMiw4M119LHs1NDpbMiw4NV19LHs1OlsyLDEzXSwxNDpbMiwxM10sMTU6WzIsMTNdLDE5OlsyLDEzXSwyOTpbMiwxM10sMzQ6WzIsMTNdLDM5OlsyLDEzXSw0NDpbMiwxM10sNDc6WzIsMTNdLDQ4OlsyLDEzXSw1MTpbMiwxM10sNTU6WzIsMTNdLDYwOlsyLDEzXX0sezM4OjU1LDM5OlsxLDU3XSw0Mzo1Niw0NDpbMSw1OF0sNDU6MTExLDQ2OjExMCw0NzpbMiw3Nl19LHszMzpbMiw3MF0sNDA6MTEyLDY1OlsyLDcwXSw3MjpbMiw3MF0sNzU6WzIsNzBdLDgwOlsyLDcwXSw4MTpbMiw3MF0sODI6WzIsNzBdLDgzOlsyLDcwXSw4NDpbMiw3MF0sODU6WzIsNzBdfSx7NDc6WzIsMThdfSx7NTpbMiwxNF0sMTQ6WzIsMTRdLDE1OlsyLDE0XSwxOTpbMiwxNF0sMjk6WzIsMTRdLDM0OlsyLDE0XSwzOTpbMiwxNF0sNDQ6WzIsMTRdLDQ3OlsyLDE0XSw0ODpbMiwxNF0sNTE6WzIsMTRdLDU1OlsyLDE0XSw2MDpbMiwxNF19LHszMzpbMSwxMTNdfSx7MzM6WzIsODddLDY1OlsyLDg3XSw3MjpbMiw4N10sODA6WzIsODddLDgxOlsyLDg3XSw4MjpbMiw4N10sODM6WzIsODddLDg0OlsyLDg3XSw4NTpbMiw4N119LHszMzpbMiw4OV19LHsyMDo3NCw2MzoxMTUsNjQ6NzUsNjU6WzEsNDNdLDY3OjExNCw2ODpbMiw5Nl0sNjk6MTE2LDcwOjc2LDcxOjc3LDcyOlsxLDc4XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezMzOlsxLDExN119LHszMjoxMTgsMzM6WzIsNjJdLDc0OjExOSw3NTpbMSwxMjBdfSx7MzM6WzIsNTldLDY1OlsyLDU5XSw3MjpbMiw1OV0sNzU6WzIsNTldLDgwOlsyLDU5XSw4MTpbMiw1OV0sODI6WzIsNTldLDgzOlsyLDU5XSw4NDpbMiw1OV0sODU6WzIsNTldfSx7MzM6WzIsNjFdLDc1OlsyLDYxXX0sezMzOlsyLDY4XSwzNzoxMjEsNzQ6MTIyLDc1OlsxLDEyMF19LHszMzpbMiw2NV0sNjU6WzIsNjVdLDcyOlsyLDY1XSw3NTpbMiw2NV0sODA6WzIsNjVdLDgxOlsyLDY1XSw4MjpbMiw2NV0sODM6WzIsNjVdLDg0OlsyLDY1XSw4NTpbMiw2NV19LHszMzpbMiw2N10sNzU6WzIsNjddfSx7MjM6WzEsMTIzXX0sezIzOlsyLDUxXSw2NTpbMiw1MV0sNzI6WzIsNTFdLDgwOlsyLDUxXSw4MTpbMiw1MV0sODI6WzIsNTFdLDgzOlsyLDUxXSw4NDpbMiw1MV0sODU6WzIsNTFdfSx7MjM6WzIsNTNdfSx7MzM6WzEsMTI0XX0sezMzOlsyLDkxXSw2NTpbMiw5MV0sNzI6WzIsOTFdLDgwOlsyLDkxXSw4MTpbMiw5MV0sODI6WzIsOTFdLDgzOlsyLDkxXSw4NDpbMiw5MV0sODU6WzIsOTFdfSx7MzM6WzIsOTNdfSx7NTpbMiwyMl0sMTQ6WzIsMjJdLDE1OlsyLDIyXSwxOTpbMiwyMl0sMjk6WzIsMjJdLDM0OlsyLDIyXSwzOTpbMiwyMl0sNDQ6WzIsMjJdLDQ3OlsyLDIyXSw0ODpbMiwyMl0sNTE6WzIsMjJdLDU1OlsyLDIyXSw2MDpbMiwyMl19LHsyMzpbMiw5OV0sMzM6WzIsOTldLDU0OlsyLDk5XSw2ODpbMiw5OV0sNzI6WzIsOTldLDc1OlsyLDk5XX0sezczOlsxLDEwOF19LHsyMDo3NCw2MzoxMjUsNjQ6NzUsNjU6WzEsNDNdLDcyOlsxLDM1XSw3ODoyNiw3OToyNyw4MDpbMSwyOF0sODE6WzEsMjldLDgyOlsxLDMwXSw4MzpbMSwzMV0sODQ6WzEsMzJdLDg1OlsxLDM0XSw4NjozM30sezU6WzIsMjNdLDE0OlsyLDIzXSwxNTpbMiwyM10sMTk6WzIsMjNdLDI5OlsyLDIzXSwzNDpbMiwyM10sMzk6WzIsMjNdLDQ0OlsyLDIzXSw0NzpbMiwyM10sNDg6WzIsMjNdLDUxOlsyLDIzXSw1NTpbMiwyM10sNjA6WzIsMjNdfSx7NDc6WzIsMTldfSx7NDc6WzIsNzddfSx7MjA6NzQsMzM6WzIsNzJdLDQxOjEyNiw2MzoxMjcsNjQ6NzUsNjU6WzEsNDNdLDY5OjEyOCw3MDo3Niw3MTo3Nyw3MjpbMSw3OF0sNzU6WzIsNzJdLDc4OjI2LDc5OjI3LDgwOlsxLDI4XSw4MTpbMSwyOV0sODI6WzEsMzBdLDgzOlsxLDMxXSw4NDpbMSwzMl0sODU6WzEsMzRdLDg2OjMzfSx7NTpbMiwyNF0sMTQ6WzIsMjRdLDE1OlsyLDI0XSwxOTpbMiwyNF0sMjk6WzIsMjRdLDM0OlsyLDI0XSwzOTpbMiwyNF0sNDQ6WzIsMjRdLDQ3OlsyLDI0XSw0ODpbMiwyNF0sNTE6WzIsMjRdLDU1OlsyLDI0XSw2MDpbMiwyNF19LHs2ODpbMSwxMjldfSx7NjU6WzIsOTVdLDY4OlsyLDk1XSw3MjpbMiw5NV0sODA6WzIsOTVdLDgxOlsyLDk1XSw4MjpbMiw5NV0sODM6WzIsOTVdLDg0OlsyLDk1XSw4NTpbMiw5NV19LHs2ODpbMiw5N119LHs1OlsyLDIxXSwxNDpbMiwyMV0sMTU6WzIsMjFdLDE5OlsyLDIxXSwyOTpbMiwyMV0sMzQ6WzIsMjFdLDM5OlsyLDIxXSw0NDpbMiwyMV0sNDc6WzIsMjFdLDQ4OlsyLDIxXSw1MTpbMiwyMV0sNTU6WzIsMjFdLDYwOlsyLDIxXX0sezMzOlsxLDEzMF19LHszMzpbMiw2M119LHs3MjpbMSwxMzJdLDc2OjEzMX0sezMzOlsxLDEzM119LHszMzpbMiw2OV19LHsxNTpbMiwxMl0sMTg6WzIsMTJdfSx7MTQ6WzIsMjZdLDE1OlsyLDI2XSwxOTpbMiwyNl0sMjk6WzIsMjZdLDM0OlsyLDI2XSw0NzpbMiwyNl0sNDg6WzIsMjZdLDUxOlsyLDI2XSw1NTpbMiwyNl0sNjA6WzIsMjZdfSx7MjM6WzIsMzFdLDMzOlsyLDMxXSw1NDpbMiwzMV0sNjg6WzIsMzFdLDcyOlsyLDMxXSw3NTpbMiwzMV19LHszMzpbMiw3NF0sNDI6MTM0LDc0OjEzNSw3NTpbMSwxMjBdfSx7MzM6WzIsNzFdLDY1OlsyLDcxXSw3MjpbMiw3MV0sNzU6WzIsNzFdLDgwOlsyLDcxXSw4MTpbMiw3MV0sODI6WzIsNzFdLDgzOlsyLDcxXSw4NDpbMiw3MV0sODU6WzIsNzFdfSx7MzM6WzIsNzNdLDc1OlsyLDczXX0sezIzOlsyLDI5XSwzMzpbMiwyOV0sNTQ6WzIsMjldLDY1OlsyLDI5XSw2ODpbMiwyOV0sNzI6WzIsMjldLDc1OlsyLDI5XSw4MDpbMiwyOV0sODE6WzIsMjldLDgyOlsyLDI5XSw4MzpbMiwyOV0sODQ6WzIsMjldLDg1OlsyLDI5XX0sezE0OlsyLDE1XSwxNTpbMiwxNV0sMTk6WzIsMTVdLDI5OlsyLDE1XSwzNDpbMiwxNV0sMzk6WzIsMTVdLDQ0OlsyLDE1XSw0NzpbMiwxNV0sNDg6WzIsMTVdLDUxOlsyLDE1XSw1NTpbMiwxNV0sNjA6WzIsMTVdfSx7NzI6WzEsMTM3XSw3NzpbMSwxMzZdfSx7NzI6WzIsMTAwXSw3NzpbMiwxMDBdfSx7MTQ6WzIsMTZdLDE1OlsyLDE2XSwxOTpbMiwxNl0sMjk6WzIsMTZdLDM0OlsyLDE2XSw0NDpbMiwxNl0sNDc6WzIsMTZdLDQ4OlsyLDE2XSw1MTpbMiwxNl0sNTU6WzIsMTZdLDYwOlsyLDE2XX0sezMzOlsxLDEzOF19LHszMzpbMiw3NV19LHszMzpbMiwzMl19LHs3MjpbMiwxMDFdLDc3OlsyLDEwMV19LHsxNDpbMiwxN10sMTU6WzIsMTddLDE5OlsyLDE3XSwyOTpbMiwxN10sMzQ6WzIsMTddLDM5OlsyLDE3XSw0NDpbMiwxN10sNDc6WzIsMTddLDQ4OlsyLDE3XSw1MTpbMiwxN10sNTU6WzIsMTddLDYwOlsyLDE3XX1dLFxuZGVmYXVsdEFjdGlvbnM6IHs0OlsyLDFdLDU0OlsyLDU1XSw1NjpbMiwyMF0sNjA6WzIsNTddLDczOlsyLDgxXSw4MjpbMiw4NV0sODY6WzIsMThdLDkwOlsyLDg5XSwxMDE6WzIsNTNdLDEwNDpbMiw5M10sMTEwOlsyLDE5XSwxMTE6WzIsNzddLDExNjpbMiw5N10sMTE5OlsyLDYzXSwxMjI6WzIsNjldLDEzNTpbMiw3NV0sMTM2OlsyLDMyXX0sXG5wYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yIChzdHIsIGhhc2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbn0sXG5wYXJzZTogZnVuY3Rpb24gcGFyc2UoaW5wdXQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsIHN0YWNrID0gWzBdLCB2c3RhY2sgPSBbbnVsbF0sIGxzdGFjayA9IFtdLCB0YWJsZSA9IHRoaXMudGFibGUsIHl5dGV4dCA9IFwiXCIsIHl5bGluZW5vID0gMCwgeXlsZW5nID0gMCwgcmVjb3ZlcmluZyA9IDAsIFRFUlJPUiA9IDIsIEVPRiA9IDE7XG4gICAgdGhpcy5sZXhlci5zZXRJbnB1dChpbnB1dCk7XG4gICAgdGhpcy5sZXhlci55eSA9IHRoaXMueXk7XG4gICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7XG4gICAgdGhpcy55eS5wYXJzZXIgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGhpcy5sZXhlci55eWxsb2MgPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgdGhpcy5sZXhlci55eWxsb2MgPSB7fTtcbiAgICB2YXIgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICBsc3RhY2sucHVzaCh5eWxvYyk7XG4gICAgdmFyIHJhbmdlcyA9IHRoaXMubGV4ZXIub3B0aW9ucyAmJiB0aGlzLmxleGVyLm9wdGlvbnMucmFuZ2VzO1xuICAgIGlmICh0eXBlb2YgdGhpcy55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjtcbiAgICBmdW5jdGlvbiBwb3BTdGFjayhuKSB7XG4gICAgICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNrLmxlbmd0aCAtIDIgKiBuO1xuICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47XG4gICAgICAgIGxzdGFjay5sZW5ndGggPSBsc3RhY2subGVuZ3RoIC0gbjtcbiAgICB9XG4gICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgIHRva2VuID0gc2VsZi5sZXhlci5sZXgoKSB8fCAxO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHNlbGYuc3ltYm9sc19bdG9rZW5dIHx8IHRva2VuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG4gICAgdmFyIHN5bWJvbCwgcHJlRXJyb3JTeW1ib2wsIHN0YXRlLCBhY3Rpb24sIGEsIHIsIHl5dmFsID0ge30sIHAsIGxlbiwgbmV3U3RhdGUsIGV4cGVjdGVkO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHN0YXRlID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5kZWZhdWx0QWN0aW9uc1tzdGF0ZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHN5bWJvbCA9IGxleCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09PSBcInVuZGVmaW5lZFwiIHx8ICFhY3Rpb24ubGVuZ3RoIHx8ICFhY3Rpb25bMF0pIHtcbiAgICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKCFyZWNvdmVyaW5nKSB7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5wdXNoKFwiJ1wiICsgdGhpcy50ZXJtaW5hbHNfW3BdICsgXCInXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGV4ZXIuc2hvd1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gXCJQYXJzZSBlcnJvciBvbiBsaW5lIFwiICsgKHl5bGluZW5vICsgMSkgKyBcIjogVW5leHBlY3RlZCBcIiArIChzeW1ib2wgPT0gMT9cImVuZCBvZiBpbnB1dFwiOlwiJ1wiICsgKHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCkgKyBcIidcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHt0ZXh0OiB0aGlzLmxleGVyLm1hdGNoLCB0b2tlbjogdGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sLCBsaW5lOiB0aGlzLmxleGVyLnl5bGluZW5vLCBsb2M6IHl5bG9jLCBleHBlY3RlZDogZXhwZWN0ZWR9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uWzBdIGluc3RhbmNlb2YgQXJyYXkgJiYgYWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiBcIiArIHN0YXRlICsgXCIsIHRva2VuOiBcIiArIHN5bWJvbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChhY3Rpb25bMF0pIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgc3RhY2sucHVzaChzeW1ib2wpO1xuICAgICAgICAgICAgdnN0YWNrLnB1c2godGhpcy5sZXhlci55eXRleHQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2godGhpcy5sZXhlci55eWxsb2MpO1xuICAgICAgICAgICAgc3RhY2sucHVzaChhY3Rpb25bMV0pO1xuICAgICAgICAgICAgc3ltYm9sID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghcHJlRXJyb3JTeW1ib2wpIHtcbiAgICAgICAgICAgICAgICB5eWxlbmcgPSB0aGlzLmxleGVyLnl5bGVuZztcbiAgICAgICAgICAgICAgICB5eXRleHQgPSB0aGlzLmxleGVyLnl5dGV4dDtcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IHRoaXMubGV4ZXIueXlsaW5lbm87XG4gICAgICAgICAgICAgICAgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICAgICAgICAgICAgICBpZiAocmVjb3ZlcmluZyA+IDApXG4gICAgICAgICAgICAgICAgICAgIHJlY292ZXJpbmctLTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sID0gcHJlRXJyb3JTeW1ib2w7XG4gICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGxlbiA9IHRoaXMucHJvZHVjdGlvbnNfW2FjdGlvblsxXV1bMV07XG4gICAgICAgICAgICB5eXZhbC4kID0gdnN0YWNrW3ZzdGFjay5sZW5ndGggLSBsZW5dO1xuICAgICAgICAgICAgeXl2YWwuXyQgPSB7Zmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbn07XG4gICAgICAgICAgICBpZiAocmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgeXl2YWwuXyQucmFuZ2UgPSBbbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5yYW5nZVswXSwgbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5yYW5nZVsxXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gdGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwoeXl2YWwsIHl5dGV4dCwgeXlsZW5nLCB5eWxpbmVubywgdGhpcy55eSwgYWN0aW9uWzFdLCB2c3RhY2ssIGxzdGFjayk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLnNsaWNlKDAsIC0xICogbGVuICogMik7XG4gICAgICAgICAgICAgICAgdnN0YWNrID0gdnN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgICBsc3RhY2sgPSBsc3RhY2suc2xpY2UoMCwgLTEgKiBsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1thY3Rpb25bMV1dWzBdKTtcbiAgICAgICAgICAgIHZzdGFjay5wdXNoKHl5dmFsLiQpO1xuICAgICAgICAgICAgbHN0YWNrLnB1c2goeXl2YWwuXyQpO1xuICAgICAgICAgICAgbmV3U3RhdGUgPSB0YWJsZVtzdGFja1tzdGFjay5sZW5ndGggLSAyXV1bc3RhY2tbc3RhY2subGVuZ3RoIC0gMV1dO1xuICAgICAgICAgICAgc3RhY2sucHVzaChuZXdTdGF0ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG59O1xuLyogSmlzb24gZ2VuZXJhdGVkIGxleGVyICovXG52YXIgbGV4ZXIgPSAoZnVuY3Rpb24oKXtcbnZhciBsZXhlciA9ICh7RU9GOjEsXG5wYXJzZUVycm9yOmZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgIGlmICh0aGlzLnl5LnBhcnNlcikge1xuICAgICAgICAgICAgdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihzdHIsIGhhc2gpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH1cbiAgICB9LFxuc2V0SW5wdXQ6ZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0aGlzLl9sZXNzID0gdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaCA9ICcnO1xuICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrID0gWydJTklUSUFMJ107XG4gICAgICAgIHRoaXMueXlsbG9jID0ge2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXlsbG9jLnJhbmdlID0gWzAsMF07XG4gICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbmlucHV0OmZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGNoID0gdGhpcy5faW5wdXRbMF07XG4gICAgICAgIHRoaXMueXl0ZXh0ICs9IGNoO1xuICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICB0aGlzLm9mZnNldCsrO1xuICAgICAgICB0aGlzLm1hdGNoICs9IGNoO1xuICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgIHZhciBsaW5lcyA9IGNoLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgaWYgKGxpbmVzKSB7XG4gICAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHRoaXMueXlsbG9jLnJhbmdlWzFdKys7XG5cbiAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG51bnB1dDpmdW5jdGlvbiAoY2gpIHtcbiAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgdmFyIGxpbmVzID0gY2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcblxuICAgICAgICB0aGlzLl9pbnB1dCA9IGNoICsgdGhpcy5faW5wdXQ7XG4gICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aC1sZW4tMSk7XG4gICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuO1xuICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgIHZhciBvbGRMaW5lcyA9IHRoaXMubWF0Y2guc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoLTEpO1xuICAgICAgICB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoZWQuc3Vic3RyKDAsIHRoaXMubWF0Y2hlZC5sZW5ndGgtMSk7XG5cbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aC0xKSB0aGlzLnl5bGluZW5vIC09IGxpbmVzLmxlbmd0aC0xO1xuICAgICAgICB2YXIgciA9IHRoaXMueXlsbG9jLnJhbmdlO1xuXG4gICAgICAgIHRoaXMueXlsbG9jID0ge2ZpcnN0X2xpbmU6IHRoaXMueXlsbG9jLmZpcnN0X2xpbmUsXG4gICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vKzEsXG4gICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgbGFzdF9jb2x1bW46IGxpbmVzID9cbiAgICAgICAgICAgICAgKGxpbmVzLmxlbmd0aCA9PT0gb2xkTGluZXMubGVuZ3RoID8gdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIDogMCkgKyBvbGRMaW5lc1tvbGRMaW5lcy5sZW5ndGggLSBsaW5lcy5sZW5ndGhdLmxlbmd0aCAtIGxpbmVzWzBdLmxlbmd0aDpcbiAgICAgICAgICAgICAgdGhpcy55eWxsb2MuZmlyc3RfY29sdW1uIC0gbGVuXG4gICAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxubW9yZTpmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuX21vcmUgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxubGVzczpmdW5jdGlvbiAobikge1xuICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgIH0sXG5wYXN0SW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcGFzdCA9IHRoaXMubWF0Y2hlZC5zdWJzdHIoMCwgdGhpcy5tYXRjaGVkLmxlbmd0aCAtIHRoaXMubWF0Y2gubGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIChwYXN0Lmxlbmd0aCA+IDIwID8gJy4uLic6JycpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgfSxcbnVwY29taW5nSW5wdXQ6ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgIGlmIChuZXh0Lmxlbmd0aCA8IDIwKSB7XG4gICAgICAgICAgICBuZXh0ICs9IHRoaXMuX2lucHV0LnN1YnN0cigwLCAyMC1uZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChuZXh0LnN1YnN0cigwLDIwKSsobmV4dC5sZW5ndGggPiAyMCA/ICcuLi4nOicnKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgIH0sXG5zaG93UG9zaXRpb246ZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcHJlID0gdGhpcy5wYXN0SW5wdXQoKTtcbiAgICAgICAgdmFyIGMgPSBuZXcgQXJyYXkocHJlLmxlbmd0aCArIDEpLmpvaW4oXCItXCIpO1xuICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYytcIl5cIjtcbiAgICB9LFxubmV4dDpmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLkVPRjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICAgIHZhciB0b2tlbixcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgdGVtcE1hdGNoLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBjb2wsXG4gICAgICAgICAgICBsaW5lcztcbiAgICAgICAgaWYgKCF0aGlzLl9tb3JlKSB7XG4gICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5tYXRjaCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICBmb3IgKHZhciBpPTA7aSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0ZW1wTWF0Y2ggPSB0aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3J1bGVzW2ldXSk7XG4gICAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICBtYXRjaCA9IHRlbXBNYXRjaDtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBsaW5lcyA9IG1hdGNoWzBdLm1hdGNoKC8oPzpcXHJcXG4/fFxcbikuKi9nKTtcbiAgICAgICAgICAgIGlmIChsaW5lcykgdGhpcy55eWxpbmVubyArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHtmaXJzdF9saW5lOiB0aGlzLnl5bGxvYy5sYXN0X2xpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmU6IHRoaXMueXlsaW5lbm8rMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGgtMV0ubGVuZ3RoLWxpbmVzW2xpbmVzLmxlbmd0aC0xXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aH07XG4gICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgIHRoaXMubWF0Y2ggKz0gbWF0Y2hbMF07XG4gICAgICAgICAgICB0aGlzLm1hdGNoZXMgPSBtYXRjaDtcbiAgICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYy5yYW5nZSA9IFt0aGlzLm9mZnNldCwgdGhpcy5vZmZzZXQgKz0gdGhpcy55eWxlbmddO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fbW9yZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZShtYXRjaFswXS5sZW5ndGgpO1xuICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLCB0aGlzLnl5LCB0aGlzLCBydWxlc1tpbmRleF0sdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSk7XG4gICAgICAgICAgICBpZiAodGhpcy5kb25lICYmIHRoaXMuX2lucHV0KSB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgZWxzZSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0ID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCdMZXhpY2FsIGVycm9yIG9uIGxpbmUgJysodGhpcy55eWxpbmVubysxKSsnLiBVbnJlY29nbml6ZWQgdGV4dC5cXG4nK3RoaXMuc2hvd1Bvc2l0aW9uKCksXG4gICAgICAgICAgICAgICAgICAgIHt0ZXh0OiBcIlwiLCB0b2tlbjogbnVsbCwgbGluZTogdGhpcy55eWxpbmVub30pO1xuICAgICAgICB9XG4gICAgfSxcbmxleDpmdW5jdGlvbiBsZXggKCkge1xuICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICBpZiAodHlwZW9mIHIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxleCgpO1xuICAgICAgICB9XG4gICAgfSxcbmJlZ2luOmZ1bmN0aW9uIGJlZ2luIChjb25kaXRpb24pIHtcbiAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGNvbmRpdGlvbik7XG4gICAgfSxcbnBvcFN0YXRlOmZ1bmN0aW9uIHBvcFN0YXRlICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgfSxcbl9jdXJyZW50UnVsZXM6ZnVuY3Rpb24gX2N1cnJlbnRSdWxlcyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM7XG4gICAgfSxcbnRvcFN0YXRlOmZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMl07XG4gICAgfSxcbnB1c2hTdGF0ZTpmdW5jdGlvbiBiZWdpbiAoY29uZGl0aW9uKSB7XG4gICAgICAgIHRoaXMuYmVnaW4oY29uZGl0aW9uKTtcbiAgICB9fSk7XG5sZXhlci5vcHRpb25zID0ge307XG5sZXhlci5wZXJmb3JtQWN0aW9uID0gZnVuY3Rpb24gYW5vbnltb3VzKHl5LHl5XywkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLFlZX1NUQVJUXG4pIHtcblxuXG5mdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7XG4gIHJldHVybiB5eV8ueXl0ZXh0ID0geXlfLnl5dGV4dC5zdWJzdHJpbmcoc3RhcnQsIHl5Xy55eWxlbmcgLSBlbmQgKyBzdGFydCk7XG59XG5cblxudmFyIFlZU1RBVEU9WVlfU1RBUlRcbnN3aXRjaCgkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zKSB7XG5jYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHl5Xy55eXRleHQuc2xpY2UoLTIpID09PSBcIlxcXFxcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcCgwLDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oXCJtdVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcImVtdVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwibXVcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoeXlfLnl5dGV4dCkgcmV0dXJuIDE1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5icmVhaztcbmNhc2UgMTpyZXR1cm4gMTU7XG5icmVhaztcbmNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJyZWFrO1xuY2FzZSAzOnRoaXMuYmVnaW4oJ3JhdycpOyByZXR1cm4gMTU7XG5icmVhaztcbmNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIHVzaW5nIGB0aGlzLnRvcFN0YXRlKClgIGJlbG93LCBidXQgaXQgY3VycmVudGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25kIHRvcCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzc3VlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2l0aHViLmNvbS96YWFjaC9qaXNvbi9pc3N1ZXMvMjkxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0gPT09ICdyYXcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDUsIDkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdFTkRfUkFXX0JMT0NLJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmJyZWFrO1xuY2FzZSA1OiByZXR1cm4gMTU7IFxuYnJlYWs7XG5jYXNlIDY6XG4gIHRoaXMucG9wU3RhdGUoKTtcbiAgcmV0dXJuIDE0O1xuXG5icmVhaztcbmNhc2UgNzpyZXR1cm4gNjU7XG5icmVhaztcbmNhc2UgODpyZXR1cm4gNjg7XG5icmVhaztcbmNhc2UgOTogcmV0dXJuIDE5OyBcbmJyZWFrO1xuY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbigncmF3Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5icmVhaztcbmNhc2UgMTE6cmV0dXJuIDU1O1xuYnJlYWs7XG5jYXNlIDEyOnJldHVybiA2MDtcbmJyZWFrO1xuY2FzZSAxMzpyZXR1cm4gMjk7XG5icmVhaztcbmNhc2UgMTQ6cmV0dXJuIDQ3O1xuYnJlYWs7XG5jYXNlIDE1OnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQ0O1xuYnJlYWs7XG5jYXNlIDE2OnRoaXMucG9wU3RhdGUoKTsgcmV0dXJuIDQ0O1xuYnJlYWs7XG5jYXNlIDE3OnJldHVybiAzNDtcbmJyZWFrO1xuY2FzZSAxODpyZXR1cm4gMzk7XG5icmVhaztcbmNhc2UgMTk6cmV0dXJuIDUxO1xuYnJlYWs7XG5jYXNlIDIwOnJldHVybiA0ODtcbmJyZWFrO1xuY2FzZSAyMTpcbiAgdGhpcy51bnB1dCh5eV8ueXl0ZXh0KTtcbiAgdGhpcy5wb3BTdGF0ZSgpO1xuICB0aGlzLmJlZ2luKCdjb20nKTtcblxuYnJlYWs7XG5jYXNlIDIyOlxuICB0aGlzLnBvcFN0YXRlKCk7XG4gIHJldHVybiAxNDtcblxuYnJlYWs7XG5jYXNlIDIzOnJldHVybiA0ODtcbmJyZWFrO1xuY2FzZSAyNDpyZXR1cm4gNzM7XG5icmVhaztcbmNhc2UgMjU6cmV0dXJuIDcyO1xuYnJlYWs7XG5jYXNlIDI2OnJldHVybiA3MjtcbmJyZWFrO1xuY2FzZSAyNzpyZXR1cm4gODc7XG5icmVhaztcbmNhc2UgMjg6Ly8gaWdub3JlIHdoaXRlc3BhY2VcbmJyZWFrO1xuY2FzZSAyOTp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiA1NDtcbmJyZWFrO1xuY2FzZSAzMDp0aGlzLnBvcFN0YXRlKCk7IHJldHVybiAzMztcbmJyZWFrO1xuY2FzZSAzMTp5eV8ueXl0ZXh0ID0gc3RyaXAoMSwyKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKTsgcmV0dXJuIDgwO1xuYnJlYWs7XG5jYXNlIDMyOnl5Xy55eXRleHQgPSBzdHJpcCgxLDIpLnJlcGxhY2UoL1xcXFwnL2csXCInXCIpOyByZXR1cm4gODA7XG5icmVhaztcbmNhc2UgMzM6cmV0dXJuIDg1O1xuYnJlYWs7XG5jYXNlIDM0OnJldHVybiA4MjtcbmJyZWFrO1xuY2FzZSAzNTpyZXR1cm4gODI7XG5icmVhaztcbmNhc2UgMzY6cmV0dXJuIDgzO1xuYnJlYWs7XG5jYXNlIDM3OnJldHVybiA4NDtcbmJyZWFrO1xuY2FzZSAzODpyZXR1cm4gODE7XG5icmVhaztcbmNhc2UgMzk6cmV0dXJuIDc1O1xuYnJlYWs7XG5jYXNlIDQwOnJldHVybiA3NztcbmJyZWFrO1xuY2FzZSA0MTpyZXR1cm4gNzI7XG5icmVhaztcbmNhc2UgNDI6eXlfLnl5dGV4dCA9IHl5Xy55eXRleHQucmVwbGFjZSgvXFxcXChbXFxcXFxcXV0pL2csJyQxJyk7IHJldHVybiA3MjtcbmJyZWFrO1xuY2FzZSA0MzpyZXR1cm4gJ0lOVkFMSUQnO1xuYnJlYWs7XG5jYXNlIDQ0OnJldHVybiA1O1xuYnJlYWs7XG59XG59O1xubGV4ZXIucnVsZXMgPSBbL14oPzpbXlxceDAwXSo/KD89KFxce1xceykpKS8sL14oPzpbXlxceDAwXSspLywvXig/OlteXFx4MDBdezIsfT8oPz0oXFx7XFx7fFxcXFxcXHtcXHt8XFxcXFxcXFxcXHtcXHt8JCkpKS8sL14oPzpcXHtcXHtcXHtcXHsoPz1bXlxcL10pKS8sL14oPzpcXHtcXHtcXHtcXHtcXC9bXlxccyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0rKD89Wz19XFxzXFwvLl0pXFx9XFx9XFx9XFx9KS8sL14oPzpbXlxceDAwXSs/KD89KFxce1xce1xce1xceykpKS8sL14oPzpbXFxzXFxTXSo/LS0ofik/XFx9XFx9KS8sL14oPzpcXCgpLywvXig/OlxcKSkvLC9eKD86XFx7XFx7XFx7XFx7KS8sL14oPzpcXH1cXH1cXH1cXH0pLywvXig/Olxce1xceyh+KT8+KS8sL14oPzpcXHtcXHsofik/Iz4pLywvXig/Olxce1xceyh+KT8jXFwqPykvLC9eKD86XFx7XFx7KH4pP1xcLykvLC9eKD86XFx7XFx7KH4pP1xcXlxccyoofik/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFxzKmVsc2VcXHMqKH4pP1xcfVxcfSkvLC9eKD86XFx7XFx7KH4pP1xcXikvLC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxiKS8sL14oPzpcXHtcXHsofik/XFx7KS8sL14oPzpcXHtcXHsofik/JikvLC9eKD86XFx7XFx7KH4pPyEtLSkvLC9eKD86XFx7XFx7KH4pPyFbXFxzXFxTXSo/XFx9XFx9KS8sL14oPzpcXHtcXHsofik/XFwqPykvLC9eKD86PSkvLC9eKD86XFwuXFwuKS8sL14oPzpcXC4oPz0oWz1+fVxcc1xcLy4pfF0pKSkvLC9eKD86W1xcLy5dKS8sL14oPzpcXHMrKS8sL14oPzpcXH0ofik/XFx9XFx9KS8sL14oPzoofik/XFx9XFx9KS8sL14oPzpcIihcXFxcW1wiXXxbXlwiXSkqXCIpLywvXig/OicoXFxcXFsnXXxbXiddKSonKS8sL14oPzpAKS8sL14oPzp0cnVlKD89KFt+fVxccyldKSkpLywvXig/OmZhbHNlKD89KFt+fVxccyldKSkpLywvXig/OnVuZGVmaW5lZCg/PShbfn1cXHMpXSkpKS8sL14oPzpudWxsKD89KFt+fVxccyldKSkpLywvXig/Oi0/WzAtOV0rKD86XFwuWzAtOV0rKT8oPz0oW359XFxzKV0pKSkvLC9eKD86YXNcXHMrXFx8KS8sL14oPzpcXHwpLywvXig/OihbXlxccyFcIiMlLSxcXC5cXC87LT5AXFxbLVxcXmBcXHstfl0rKD89KFs9fn1cXHNcXC8uKXxdKSkpKS8sL14oPzpcXFsoXFxcXFxcXXxbXlxcXV0pKlxcXSkvLC9eKD86LikvLC9eKD86JCkvXTtcbmxleGVyLmNvbmRpdGlvbnMgPSB7XCJtdVwiOntcInJ1bGVzXCI6WzcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0XSxcImluY2x1c2l2ZVwiOmZhbHNlfSxcImVtdVwiOntcInJ1bGVzXCI6WzJdLFwiaW5jbHVzaXZlXCI6ZmFsc2V9LFwiY29tXCI6e1wicnVsZXNcIjpbNl0sXCJpbmNsdXNpdmVcIjpmYWxzZX0sXCJyYXdcIjp7XCJydWxlc1wiOlszLDQsNV0sXCJpbmNsdXNpdmVcIjpmYWxzZX0sXCJJTklUSUFMXCI6e1wicnVsZXNcIjpbMCwxLDQ0XSxcImluY2x1c2l2ZVwiOnRydWV9fTtcbnJldHVybiBsZXhlcjt9KSgpXG5wYXJzZXIubGV4ZXIgPSBsZXhlcjtcbmZ1bmN0aW9uIFBhcnNlciAoKSB7IHRoaXMueXkgPSB7fTsgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbnJldHVybiBuZXcgUGFyc2VyO1xufSkoKTtleHBvcnQgZGVmYXVsdCBoYW5kbGViYXJzO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _visitor = require('./visitor');\n\nvar _visitor2 = _interopRequireDefault(_visitor);\n\nfunction WhitespaceControl() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.options = options;\n}\nWhitespaceControl.prototype = new _visitor2['default']();\n\nWhitespaceControl.prototype.Program = function (program) {\n var doStandalone = !this.options.ignoreStandalone;\n\n var isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n var body = program.body;\n for (var i = 0, l = body.length; i < l; i++) {\n var current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n var program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n var strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n var inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {\n /* istanbul ignore next */\n var strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n var prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(prev.original);\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n var next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(next.original);\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n var current = body[i == null ? 0 : i + 1];\n if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {\n return;\n }\n\n var original = current.value;\n current.value = current.value.replace(multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/, '');\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n var current = body[i == null ? body.length - 1 : i - 1];\n if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n var original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexports['default'] = WhitespaceControl;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL3doaXRlc3BhY2UtY29udHJvbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3VCQUFvQixXQUFXOzs7O0FBRS9CLFNBQVMsaUJBQWlCLEdBQWU7TUFBZCxPQUFPLHlEQUFHLEVBQUU7O0FBQ3JDLE1BQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0NBQ3hCO0FBQ0QsaUJBQWlCLENBQUMsU0FBUyxHQUFHLDBCQUFhLENBQUM7O0FBRTVDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBUyxPQUFPLEVBQUU7QUFDdEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDOztBQUVwRCxNQUFJLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDOUIsTUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7O0FBRXZCLE1BQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDeEIsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25CLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztBQUUvQixRQUFJLENBQUMsS0FBSyxFQUFFO0FBQ1YsZUFBUztLQUNWOztBQUVELFFBQUksaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDdkQsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7UUFDckQsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksaUJBQWlCO1FBQzFE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QUFDLE9BQU8sSUFDUixPQUFPLENBQUMsSUFBSSxLQUFLLGtCQUFrQixJQUNsQyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsWUFBWSxBQUFDLEVBQ25DO0FBQ0EsV0FBTztHQUNSOzs7QUFHRCxNQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQzdCLFNBQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekUsU0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUNsRCxTQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUM7Q0FDN0I7O3FCQUVjLGlCQUFpQiIsImZpbGUiOiJ3aGl0ZXNwYWNlLWNvbnRyb2wuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVmlzaXRvciBmcm9tICcuL3Zpc2l0b3InO1xuXG5mdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbChvcHRpb25zID0ge30pIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbn1cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZSA9IG5ldyBWaXNpdG9yKCk7XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24ocHJvZ3JhbSkge1xuICBjb25zdCBkb1N0YW5kYWxvbmUgPSAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmU7XG5cbiAgbGV0IGlzUm9vdCA9ICF0aGlzLmlzUm9vdFNlZW47XG4gIHRoaXMuaXNSb290U2VlbiA9IHRydWU7XG5cbiAgbGV0IGJvZHkgPSBwcm9ncmFtLmJvZHk7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgY3VycmVudCA9IGJvZHlbaV0sXG4gICAgICBzdHJpcCA9IHRoaXMuYWNjZXB0KGN1cnJlbnQpO1xuXG4gICAgaWYgKCFzdHJpcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IF9pc1ByZXZXaGl0ZXNwYWNlID0gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpLFxuICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksXG4gICAgICBvcGVuU3RhbmRhbG9uZSA9IHN0cmlwLm9wZW5TdGFuZGFsb25lICYmIF9pc1ByZXZXaGl0ZXNwYWNlLFxuICAgICAgY2xvc2VTdGFuZGFsb25lID0gc3RyaXAuY2xvc2VTdGFuZGFsb25lICYmIF9pc05leHRXaGl0ZXNwYWNlLFxuICAgICAgaW5saW5lU3RhbmRhbG9uZSA9XG4gICAgICAgIHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7XG5cbiAgICBpZiAoc3RyaXAuY2xvc2UpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgaW5saW5lU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhbmRhbG9uZSBub2RlLCBzYXZlIHRoZSBpbmRlbnQgaW5mbyBmb3IgcGFydGlhbHNcbiAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZVxuICAgICAgICAgIGN1cnJlbnQuaW5kZW50ID0gLyhbIFxcdF0rJCkvLmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgb3BlblN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7XG5cbiAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mgd2hpdGVzcGFjZSBvbmx5XG4gICAgICBvbWl0TGVmdChib2R5LCBpKTtcbiAgICB9XG4gICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHtcbiAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlXG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSk7XG5cbiAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihcbiAgYmxvY2tcbikge1xuICB0aGlzLmFjY2VwdChibG9jay5wcm9ncmFtKTtcbiAgdGhpcy5hY2NlcHQoYmxvY2suaW52ZXJzZSk7XG5cbiAgLy8gRmluZCB0aGUgaW52ZXJzZSBwcm9ncmFtIHRoYXQgaXMgaW52b2xlZCB3aXRoIHdoaXRlc3BhY2Ugc3RyaXBwaW5nLlxuICBsZXQgcHJvZ3JhbSA9IGJsb2NrLnByb2dyYW0gfHwgYmxvY2suaW52ZXJzZSxcbiAgICBpbnZlcnNlID0gYmxvY2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLFxuICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UsXG4gICAgbGFzdEludmVyc2UgPSBpbnZlcnNlO1xuXG4gIGlmIChpbnZlcnNlICYmIGludmVyc2UuY2hhaW5lZCkge1xuICAgIGZpcnN0SW52ZXJzZSA9IGludmVyc2UuYm9keVswXS5wcm9ncmFtO1xuXG4gICAgLy8gV2FsayB0aGUgaW52ZXJzZSBjaGFpbiB0byBmaW5kIHRoZSBsYXN0IGludmVyc2UgdGhhdCBpcyBhY3R1YWxseSBpbiB0aGUgY2hhaW4uXG4gICAgd2hpbGUgKGxhc3RJbnZlcnNlLmNoYWluZWQpIHtcbiAgICAgIGxhc3RJbnZlcnNlID0gbGFzdEludmVyc2UuYm9keVtsYXN0SW52ZXJzZS5ib2R5Lmxlbmd0aCAtIDFdLnByb2dyYW07XG4gICAgfVxuICB9XG5cbiAgbGV0IHN0cmlwID0ge1xuICAgIG9wZW46IGJsb2NrLm9wZW5TdHJpcC5vcGVuLFxuICAgIGNsb3NlOiBibG9jay5jbG9zZVN0cmlwLmNsb3NlLFxuXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBzdGFuZGFsb25lIGNhbmRpYWN5LiBCYXNpY2FsbHkgZmxhZyBvdXIgY29udGVudCBhcyBiZWluZyBwb3NzaWJseSBzdGFuZGFsb25lXG4gICAgLy8gc28gb3VyIHBhcmVudCBjYW4gZGV0ZXJtaW5lIGlmIHdlIGFjdHVhbGx5IGFyZSBzdGFuZGFsb25lXG4gICAgb3BlblN0YW5kYWxvbmU6IGlzTmV4dFdoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSxcbiAgICBjbG9zZVN0YW5kYWxvbmU6IGlzUHJldldoaXRlc3BhY2UoKGZpcnN0SW52ZXJzZSB8fCBwcm9ncmFtKS5ib2R5KVxuICB9O1xuXG4gIGlmIChibG9jay5vcGVuU3RyaXAuY2xvc2UpIHtcbiAgICBvbWl0UmlnaHQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgfVxuXG4gIGlmIChpbnZlcnNlKSB7XG4gICAgbGV0IGludmVyc2VTdHJpcCA9IGJsb2NrLmludmVyc2VTdHJpcDtcblxuICAgIGlmIChpbnZlcnNlU3RyaXAub3Blbikge1xuICAgICAgb21pdExlZnQocHJvZ3JhbS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoaW52ZXJzZVN0cmlwLmNsb3NlKSB7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHksIG51bGwsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoYmxvY2suY2xvc2VTdHJpcC5vcGVuKSB7XG4gICAgICBvbWl0TGVmdChsYXN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBGaW5kIHN0YW5kYWxvbmUgZWxzZSBzdGF0bWVudHNcbiAgICBpZiAoXG4gICAgICAhdGhpcy5vcHRpb25zLmlnbm9yZVN0YW5kYWxvbmUgJiZcbiAgICAgIGlzUHJldldoaXRlc3BhY2UocHJvZ3JhbS5ib2R5KSAmJlxuICAgICAgaXNOZXh0V2hpdGVzcGFjZShmaXJzdEludmVyc2UuYm9keSlcbiAgICApIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKFxuICBtdXN0YWNoZVxuKSB7XG4gIHJldHVybiBtdXN0YWNoZS5zdHJpcDtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsU3RhdGVtZW50ID0gV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkNvbW1lbnRTdGF0ZW1lbnQgPSBmdW5jdGlvbihcbiAgbm9kZVxuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCBzdHJpcCA9IG5vZGUuc3RyaXAgfHwge307XG4gIHJldHVybiB7XG4gICAgaW5saW5lU3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBvcGVuOiBzdHJpcC5vcGVuLFxuICAgIGNsb3NlOiBzdHJpcC5jbG9zZVxuICB9O1xufTtcblxuZnVuY3Rpb24gaXNQcmV2V2hpdGVzcGFjZShib2R5LCBpLCBpc1Jvb3QpIHtcbiAgaWYgKGkgPT09IHVuZGVmaW5lZCkge1xuICAgIGkgPSBib2R5Lmxlbmd0aDtcbiAgfVxuXG4gIC8vIE5vZGVzIHRoYXQgZW5kIHdpdGggbmV3bGluZXMgYXJlIGNvbnNpZGVyZWQgd2hpdGVzcGFjZSAoYnV0IGFyZSBzcGVjaWFsXG4gIC8vIGNhc2VkIGZvciBzdHJpcCBvcGVyYXRpb25zKVxuICBsZXQgcHJldiA9IGJvZHlbaSAtIDFdLFxuICAgIHNpYmxpbmcgPSBib2R5W2kgLSAyXTtcbiAgaWYgKCFwcmV2KSB7XG4gICAgcmV0dXJuIGlzUm9vdDtcbiAgfVxuXG4gIGlmIChwcmV2LnR5cGUgPT09ICdDb250ZW50U3RhdGVtZW50Jykge1xuICAgIHJldHVybiAoc2libGluZyB8fCAhaXNSb290ID8gL1xccj9cXG5cXHMqPyQvIDogLyhefFxccj9cXG4pXFxzKj8kLykudGVzdChcbiAgICAgIHByZXYub3JpZ2luYWxcbiAgICApO1xuICB9XG59XG5mdW5jdGlvbiBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IC0xO1xuICB9XG5cbiAgbGV0IG5leHQgPSBib2R5W2kgKyAxXSxcbiAgICBzaWJsaW5nID0gYm9keVtpICsgMl07XG4gIGlmICghbmV4dCkge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAobmV4dC50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/IC9eXFxzKj9cXHI/XFxuLyA6IC9eXFxzKj8oXFxyP1xcbnwkKS8pLnRlc3QoXG4gICAgICBuZXh0Lm9yaWdpbmFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgcmlnaHQgb2YgdGhlIHBvc2l0aW9uIGFzIG9taXR0ZWQuXG4vLyBJLmUuIHt7Zm9vfX0nICcgd2lsbCBtYXJrIHRoZSAnICcgbm9kZSBhcyBvbWl0dGVkLlxuLy9cbi8vIElmIGkgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRSaWdodChib2R5LCBpLCBtdWx0aXBsZSkge1xuICBsZXQgY3VycmVudCA9IGJvZHlbaSA9PSBudWxsID8gMCA6IGkgKyAxXTtcbiAgaWYgKFxuICAgICFjdXJyZW50IHx8XG4gICAgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHxcbiAgICAoIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZClcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IG9yaWdpbmFsID0gY3VycmVudC52YWx1ZTtcbiAgY3VycmVudC52YWx1ZSA9IGN1cnJlbnQudmFsdWUucmVwbGFjZShcbiAgICBtdWx0aXBsZSA/IC9eXFxzKy8gOiAvXlsgXFx0XSpcXHI/XFxuPy8sXG4gICAgJydcbiAgKTtcbiAgY3VycmVudC5yaWdodFN0cmlwcGVkID0gY3VycmVudC52YWx1ZSAhPT0gb3JpZ2luYWw7XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSBsZWZ0IG9mIHRoZSBwb3NpdGlvbiBhcyBvbWl0dGVkLlxuLy8gSS5lLiAnICd7e2Zvb319IHdpbGwgbWFyayB0aGUgJyAnIG5vZGUgYXMgb21pdHRlZC5cbi8vXG4vLyBJZiBpIGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBsYXN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdExlZnQoYm9keSwgaSwgbXVsdGlwbGUpIHtcbiAgbGV0IGN1cnJlbnQgPSBib2R5W2kgPT0gbnVsbCA/IGJvZHkubGVuZ3RoIC0gMSA6IGkgLSAxXTtcbiAgaWYgKFxuICAgICFjdXJyZW50IHx8XG4gICAgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHxcbiAgICAoIW11bHRpcGxlICYmIGN1cnJlbnQubGVmdFN0cmlwcGVkKVxuICApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuXG4gIGxldCBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXFxzKyQvIDogL1sgXFx0XSskLywgJycpO1xuICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xuICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFdoaXRlc3BhY2VDb250cm9sO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.SourceLocation = SourceLocation;\nexports.id = id;\nexports.stripFlags = stripFlags;\nexports.stripComment = stripComment;\nexports.preparePath = preparePath;\nexports.prepareMustache = prepareMustache;\nexports.prepareRawBlock = prepareRawBlock;\nexports.prepareBlock = prepareBlock;\nexports.prepareProgram = prepareProgram;\nexports.preparePartialBlock = preparePartialBlock;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n var errorNode = { loc: open.path.loc };\n\n throw new _exception2['default'](open.path.original + \" doesn't match \" + close, errorNode);\n }\n}\n\nfunction SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nfunction id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nfunction stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nfunction stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nfunction preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n var original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i].part,\n\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new _exception2['default']('Invalid path: ' + original, { loc: loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data: data,\n depth: depth,\n parts: dig,\n original: original,\n loc: loc\n };\n}\n\nfunction prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n var escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n var decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: escaped,\n strip: strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nfunction prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n var program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program: program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nfunction prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n var decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n var inverse = undefined,\n inverseStrip = undefined;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program: program,\n inverse: inverse,\n openStrip: openBlock.strip,\n inverseStrip: inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nfunction prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n var firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nfunction preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program: program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBQXNCLGNBQWM7Ozs7QUFFcEMsU0FBUyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNsQyxPQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7O0FBRWpELE1BQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO0FBQ2hDLFFBQUksU0FBUyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7O0FBRXZDLFVBQU0sMkJBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQWlCLEdBQUcsS0FBSyxFQUM5QyxTQUFTLENBQ1YsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUM5QyxNQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNyQixNQUFJLENBQUMsS0FBSyxHQUFHO0FBQ1gsUUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO0FBQ3hCLFVBQU0sRUFBRSxPQUFPLENBQUMsWUFBWTtHQUM3QixDQUFDO0FBQ0YsTUFBSSxDQUFDLEdBQUcsR0FBRztBQUNULFFBQUksRUFBRSxPQUFPLENBQUMsU0FBUztBQUN2QixVQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVc7R0FDNUIsQ0FBQztDQUNIOztBQUVNLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRTtBQUN4QixNQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDMUIsV0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzdD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R0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7OztBQUdsRCxRQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUU7QUFDdkIsU0FBRyxHQUFHO0FBQ0osY0FBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0FBQ3ZCLGFBQUssRUFBRTtBQUNMLGNBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUk7QUFDekIsZ0JBQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU07U0FDOUI7QUFDRCxXQUFHLEVBQUU7QUFDSCxjQUFJLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ3RCLGdCQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNO1NBQzNCO09BQ0YsQ0FBQztLQUNIO0dBQ0Y7O0FBRUQsU0FBTztBQUNMLFFBQUksRUFBRSxTQUFTO0FBQ2YsUUFBSSxFQUFFLFVBQVU7QUFDaEIsU0FBSyxFQUFFLEVBQUU7QUFDVCxPQUFHLEVBQUUsR0FBRztHQUNULENBQUM7Q0FDSDs7QUFFTSxTQUFTLG1CQUFtQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUNqRSxlQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDOztBQUUzQixTQUFPO0FBQ0wsUUFBSSxFQUFFLHVCQUF1QjtBQUM3QixRQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixVQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07QUFDbkIsUUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2YsV0FBTyxFQUFQLE9BQU87QUFDUCxhQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUs7QUFDckIsY0FBVSxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSztBQUNoQyxPQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7R0FDM0IsQ0FBQztDQUNIIiwiZmlsZSI6ImhlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpIHtcbiAgY2xvc2UgPSBjbG9zZS5wYXRoID8gY2xvc2UucGF0aC5vcmlnaW5hbCA6IGNsb3NlO1xuXG4gIGlmIChvcGVuLnBhdGgub3JpZ2luYWwgIT09IGNsb3NlKSB7XG4gICAgbGV0IGVycm9yTm9kZSA9IHsgbG9jOiBvcGVuLnBhdGgubG9jIH07XG5cbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgb3Blbi5wYXRoLm9yaWdpbmFsICsgXCIgZG9lc24ndCBtYXRjaCBcIiArIGNsb3NlLFxuICAgICAgZXJyb3JOb2RlXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gU291cmNlTG9jYXRpb24oc291cmNlLCBsb2NJbmZvKSB7XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnN0YXJ0ID0ge1xuICAgIGxpbmU6IGxvY0luZm8uZmlyc3RfbGluZSxcbiAgICBjb2x1bW46IGxvY0luZm8uZmlyc3RfY29sdW1uXG4gIH07XG4gIHRoaXMuZW5kID0ge1xuICAgIGxpbmU6IGxvY0luZm8ubGFzdF9saW5lLFxuICAgIGNvbHVtbjogbG9jSW5mby5sYXN0X2NvbHVtblxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEZsYWdzKG9wZW4sIGNsb3NlKSB7XG4gIHJldHVybiB7XG4gICAgb3Blbjogb3Blbi5jaGFyQXQoMikgPT09ICd+JyxcbiAgICBjbG9zZTogY2xvc2UuY2hhckF0KGNsb3NlLmxlbmd0aCAtIDMpID09PSAnfidcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQ29tbWVudChjb21tZW50KSB7XG4gIHJldHVybiBjb21tZW50LnJlcGxhY2UoL15cXHtcXHt+PyEtPy0/LywgJycpLnJlcGxhY2UoLy0/LT9+P1xcfVxcfSQvLCAnJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUGF0aChkYXRhLCBwYXJ0cywgbG9jKSB7XG4gIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpO1xuXG4gIGxldCBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJyxcbiAgICBkaWcgPSBbXSxcbiAgICBkZXB0aCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBsZXQgcGFydCA9IHBhcnRzW2ldLnBhcnQsXG4gICAgICAvLyBJZiB3ZSBoYXZlIFtdIHN5bnRheCB0aGVuIHdlIGRvIG5vdCB0cmVhdCBwYXRoIHJlZmVyZW5jZXMgYXMgb3BlcmF0b3JzLFxuICAgICAgLy8gaS5lLiBmb28uW3RoaXNdIHJlc29sdmVzIHRvIGFwcHJveGltYXRlbHkgY29udGV4dC5mb29bJ3RoaXMnXVxuICAgICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7XG4gICAgb3JpZ2luYWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0O1xuXG4gICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHtcbiAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbnZhbGlkIHBhdGg6ICcgKyBvcmlnaW5hbCwgeyBsb2MgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlnLnB1c2gocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIGRhdGEsXG4gICAgZGVwdGgsXG4gICAgcGFydHM6IGRpZyxcbiAgICBvcmlnaW5hbCxcbiAgICBsb2NcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICBsZXQgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgIGVzY2FwZWQgPSBlc2NhcGVGbGFnICE9PSAneycgJiYgZXNjYXBlRmxhZyAhPT0gJyYnO1xuXG4gIGxldCBkZWNvcmF0b3IgPSAvXFwqLy50ZXN0KG9wZW4pO1xuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3InIDogJ011c3RhY2hlU3RhdGVtZW50JyxcbiAgICBwYXRoLFxuICAgIHBhcmFtcyxcbiAgICBoYXNoLFxuICAgIGVzY2FwZWQsXG4gICAgc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbylcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVSYXdCbG9jayhvcGVuUmF3QmxvY2ssIGNvbnRlbnRzLCBjbG9zZSwgbG9jSW5mbykge1xuICB2YWxpZGF0ZUNsb3NlKG9wZW5SYXdCbG9jaywgY2xvc2UpO1xuXG4gIGxvY0luZm8gPSB0aGlzLmxvY0luZm8obG9jSW5mbyk7XG4gIGxldCBwcm9ncmFtID0ge1xuICAgIHR5cGU6ICdQcm9ncmFtJyxcbiAgICBib2R5OiBjb250ZW50cyxcbiAgICBzdHJpcDoge30sXG4gICAgbG9jOiBsb2NJbmZvXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IG9wZW5SYXdCbG9jay5wYXRoLFxuICAgIHBhcmFtczogb3BlblJhd0Jsb2NrLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuUmF3QmxvY2suaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIG9wZW5TdHJpcDoge30sXG4gICAgaW52ZXJzZVN0cmlwOiB7fSxcbiAgICBjbG9zZVN0cmlwOiB7fSxcbiAgICBsb2M6IGxvY0luZm9cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmVCbG9jayhcbiAgb3BlbkJsb2NrLFxuICBwcm9ncmFtLFxuICBpbnZlcnNlQW5kUHJvZ3JhbSxcbiAgY2xvc2UsXG4gIGludmVydGVkLFxuICBsb2NJbmZvXG4pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgbGV0IGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgbGV0IGludmVyc2UsIGludmVyc2VTdHJpcDtcblxuICBpZiAoaW52ZXJzZUFuZFByb2dyYW0pIHtcbiAgICBpZiAoZGVjb3JhdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVW5leHBlY3RlZCBpbnZlcnNlIGJsb2NrIG9uIGRlY29yYXRvcicsXG4gICAgICAgIGludmVyc2VBbmRQcm9ncmFtXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChpbnZlcnNlQW5kUHJvZ3JhbS5jaGFpbikge1xuICAgICAgaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbS5ib2R5WzBdLmNsb3NlU3RyaXAgPSBjbG9zZS5zdHJpcDtcbiAgICB9XG5cbiAgICBpbnZlcnNlU3RyaXAgPSBpbnZlcnNlQW5kUHJvZ3JhbS5zdHJpcDtcbiAgICBpbnZlcnNlID0gaW52ZXJzZUFuZFByb2dyYW0ucHJvZ3JhbTtcbiAgfVxuXG4gIGlmIChpbnZlcnRlZCkge1xuICAgIGludmVydGVkID0gaW52ZXJzZTtcbiAgICBpbnZlcnNlID0gcHJvZ3JhbTtcbiAgICBwcm9ncmFtID0gaW52ZXJ0ZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGRlY29yYXRvciA/ICdEZWNvcmF0b3JCbG9jaycgOiAnQmxvY2tTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IG9wZW5CbG9jay5wYXRoLFxuICAgIHBhcmFtczogb3BlbkJsb2NrLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuQmxvY2suaGFzaCxcbiAgICBwcm9ncmFtLFxuICAgIGludmVyc2UsXG4gICAgb3BlblN0cmlwOiBvcGVuQmxvY2suc3RyaXAsXG4gICAgaW52ZXJzZVN0cmlwLFxuICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLFxuICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHtcbiAgaWYgKCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHtcbiAgICBjb25zdCBmaXJzdExvYyA9IHN0YXRlbWVudHNbMF0ubG9jLFxuICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7XG4gICAgICBsb2MgPSB7XG4gICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgbGluZTogbGFzdExvYy5lbmQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IHN0YXRlbWVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlUGFydGlhbEJsb2NrKG9wZW4sIHByb2dyYW0sIGNsb3NlLCBsb2NJbmZvKSB7XG4gIHZhbGlkYXRlQ2xvc2Uob3BlbiwgY2xvc2UpO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1BhcnRpYWxCbG9ja1N0YXRlbWVudCcsXG4gICAgbmFtZTogb3Blbi5wYXRoLFxuICAgIHBhcmFtczogb3Blbi5wYXJhbXMsXG4gICAgaGFzaDogb3Blbi5oYXNoLFxuICAgIHByb2dyYW0sXG4gICAgb3BlblN0cmlwOiBvcGVuLnN0cmlwLFxuICAgIGNsb3NlU3RyaXA6IGNsb3NlICYmIGNsb3NlLnN0cmlwLFxuICAgIGxvYzogdGhpcy5sb2NJbmZvKGxvY0luZm8pXG4gIH07XG59XG4iXX0=\n","/* eslint-disable new-cap */\n\n'use strict';\n\nexports.__esModule = true;\nexports.Compiler = Compiler;\nexports.precompile = precompile;\nexports.compile = compile;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _utils = require('../utils');\n\nvar _ast = require('./ast');\n\nvar _ast2 = _interopRequireDefault(_ast);\n\nvar slice = [].slice;\n\nfunction Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function equals(other) {\n var len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (var i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function compile(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = _utils.extend(Object.create(null), {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n 'if': true,\n unless: true,\n 'with': true,\n log: true,\n lookup: true\n }, options.knownHelpers);\n\n return this.accept(program);\n },\n\n compileProgram: function compileProgram(program) {\n var childCompiler = new this.compiler(),\n // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function accept(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new _exception2['default']('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n var ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function Program(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n var body = program.body,\n bodyLength = body.length;\n for (var i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function BlockStatement(block) {\n transformLiteralToPath(block);\n\n var program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n var type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock: function DecoratorBlock(decorator) {\n var program = decorator.program && this.compileProgram(decorator.program);\n var params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function PartialStatement(partial) {\n this.usePartial = true;\n\n var program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n var params = partial.params;\n if (params.length > 1) {\n throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n var partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n var indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function PartialBlockStatement(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function MustacheStatement(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator: function Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function ContentStatement(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function CommentStatement() {},\n\n SubExpression: function SubExpression(sexpr) {\n transformLiteralToPath(sexpr);\n var type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {\n var path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function simpleSexpr(sexpr) {\n var path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function helperSexpr(sexpr, program, inverse) {\n var params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));\n }\n },\n\n PathExpression: function PathExpression(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n var name = path.parts[0],\n scoped = _ast2['default'].helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);\n }\n },\n\n StringLiteral: function StringLiteral(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function NumberLiteral(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function BooleanLiteral(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function UndefinedLiteral() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function NullLiteral() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function Hash(hash) {\n var pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function opcode(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function addDepth(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function classifySexpr(sexpr) {\n var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);\n\n var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n var isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n var _name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[_name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function pushParams(params) {\n for (var i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function pushParam(val) {\n var value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n var blockParamIndex = undefined;\n if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n var blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value.replace(/^this(?:\\.|$)/, '').replace(/^\\.\\//, '').replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {\n var params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function blockParamIndex(name) {\n for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {\n var blockParams = this.options.blockParams[depth],\n param = blockParams && _utils.indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nfunction precompile(input, options, env) {\n if (input == null || typeof input !== 'string' && input.type !== 'Program') {\n throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n var ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nfunction compile(input, options, env) {\n if (options === undefined) options = {};\n\n if (input == null || typeof input !== 'string' && input.type !== 'Program') {\n throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);\n }\n\n options = _utils.extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n var compiled = undefined;\n\n function compileInput() {\n var ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function (setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function (i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {\n for (var i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n var literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozt5QkFFc0IsY0FBYzs7OztxQkFDSyxVQUFVOzttQkFDbkMsT0FBTzs7OztBQUV2QixJQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDOztBQUVoQixTQUFTLFFBQVEsR0FBRyxFQUFFOzs7Ozs7O0FBTzdCLFFBQVEsQ0FBQyxTQUFTLEdBQUc7QUFDbkIsVUFBUSxFQUFFLFFBQVE7O0FBRWxCLFFBQU0sRUFBRSxnQkFBUyxLQUFLLEVBQUU7QUFDdEIsUUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDOUIsUUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUU7QUFDaEMsYUFBTyxLQUFLLENBQUM7S0FDZDs7QUFFRCxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzVCLFVBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1VBQzFCLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLFVBQ0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxJQUNwQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFDekM7QUFDQSxlQUFPLEtBQUssQ0FBQztPQUNkO0tBQ0Y7Ozs7QUFJRCxPQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDM0IsU0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QixVQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEs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LENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUMxQixlQUFPLEtBQUssQ0FBQztPQUNkO0tBQ0Y7QUFDRCxXQUFPLElBQUksQ0FBQztHQUNiO0NBQ0Y7O0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7QUFDckMsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3JCLFFBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7OztBQUd6QixTQUFLLENBQUMsSUFBSSxHQUFHO0FBQ1gsVUFBSSxFQUFFLGdCQUFnQjtBQUN0QixVQUFJLEVBQUUsS0FBSztBQUNYLFdBQUssRUFBRSxDQUFDO0FBQ1IsV0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDOUIsY0FBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsRUFBRTtBQUMvQixTQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7S0FDakIsQ0FBQztHQUNIO0NBQ0YiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovXG5cbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcbmltcG9ydCB7IGlzQXJyYXksIGluZGV4T2YsIGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBBU1QgZnJvbSAnLi9hc3QnO1xuXG5jb25zdCBzbGljZSA9IFtdLnNsaWNlO1xuXG5leHBvcnQgZnVuY3Rpb24gQ29tcGlsZXIoKSB7fVxuXG4vLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYVxuLy8gZnVuY3Rpb24gaW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0eSwgd2hpY2hcbi8vIHJlcXVpcmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5nLFxuLy8gYW5kIHRoZW4gcHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hlbHBlck1pc3NpbmcuXG5cbkNvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgY29tcGlsZXI6IENvbXBpbGVyLFxuXG4gIGVxdWFsczogZnVuY3Rpb24ob3RoZXIpIHtcbiAgICBsZXQgbGVuID0gdGhpcy5vcGNvZGVzLmxlbmd0aDtcbiAgICBpZiAob3RoZXIub3Bjb2Rlcy5sZW5ndGggIT09IGxlbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBvcGNvZGUgPSB0aGlzLm9wY29kZXNbaV0sXG4gICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTtcbiAgICAgIGlmIChcbiAgICAgICAgb3Bjb2RlLm9wY29kZSAhPT0gb3RoZXJPcGNvZGUub3Bjb2RlIHx8XG4gICAgICAgICFhcmdFcXVhbHMob3Bjb2RlLmFyZ3MsIG90aGVyT3Bjb2RlLmFyZ3MpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWRcbiAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLlxuICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBndWlkOiAwLFxuXG4gIGNvbXBpbGU6IGZ1bmN0aW9uKHByb2dyYW0sIG9wdGlvbnMpIHtcbiAgICB0aGlzLnNvdXJjZU5vZGUgPSBbXTtcbiAgICB0aGlzLm9wY29kZXMgPSBbXTtcbiAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLnN0cmluZ1BhcmFtcyA9IG9wdGlvbnMuc3RyaW5nUGFyYW1zO1xuICAgIHRoaXMudHJhY2tJZHMgPSBvcHRpb25zLnRyYWNrSWRzO1xuXG4gICAgb3B0aW9ucy5ibG9ja1BhcmFtcyA9IG9wdGlvbnMuYmxvY2tQYXJhbXMgfHwgW107XG5cbiAgICBvcHRpb25zLmtub3duSGVscGVycyA9IGV4dGVuZChcbiAgICAgIE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICB7XG4gICAgICAgIGhlbHBlck1pc3Npbmc6IHRydWUsXG4gICAgICAgIGJsb2NrSGVscGVyTWlzc2luZzogdHJ1ZSxcbiAgICAgICAgZWFjaDogdHJ1ZSxcbiAgICAgICAgaWY6IHRydWUsXG4gICAgICAgIHVubGVzczogdHJ1ZSxcbiAgICAgICAgd2l0aDogdHJ1ZSxcbiAgICAgICAgbG9nOiB0cnVlLFxuICAgICAgICBsb29rdXA6IHRydWVcbiAgICAgIH0sXG4gICAgICBvcHRpb25zLmtub3duSGVscGVyc1xuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7XG4gIH0sXG5cbiAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgICBsZXQgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICAgICAgcmVzdWx0ID0gY2hpbGRDb21waWxlci5jb21waWxlKHByb2dyYW0sIHRoaXMub3B0aW9ucyksXG4gICAgICBndWlkID0gdGhpcy5ndWlkKys7XG5cbiAgICB0aGlzLnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7XG5cbiAgICB0aGlzLmNoaWxkcmVuW2d1aWRdID0gcmVzdWx0O1xuICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRocztcblxuICAgIHJldHVybiBndWlkO1xuICB9LFxuXG4gIGFjY2VwdDogZnVuY3Rpb24obm9kZSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiBTYW5pdHkgY29kZSAqL1xuICAgIGlmICghdGhpc1tub2RlLnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHR5cGU6ICcgKyBub2RlLnR5cGUsIG5vZGUpO1xuICAgIH1cblxuICAgIHRoaXMuc291cmNlTm9kZS51bnNoaWZ0KG5vZGUpO1xuICAgIGxldCByZXQgPSB0aGlzW25vZGUudHlwZV0obm9kZSk7XG4gICAgdGhpcy5zb3VyY2VOb2RlLnNoaWZ0KCk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbihwcm9ncmFtKSB7XG4gICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnVuc2hpZnQocHJvZ3JhbS5ibG9ja1BhcmFtcyk7XG5cbiAgICBsZXQgYm9keSA9IHByb2dyYW0uYm9keSxcbiAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJvZHlMZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7XG5cbiAgICB0aGlzLmlzU2ltcGxlID0gYm9keUxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoIDogMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbihibG9jaykge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoYmxvY2spO1xuXG4gICAgbGV0IHByb2dyYW0gPSBibG9jay5wcm9ncmFtLFxuICAgICAgaW52ZXJzZSA9IGJsb2NrLmludmVyc2U7XG5cbiAgICBwcm9ncmFtID0gcHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKHByb2dyYW0pO1xuICAgIGludmVyc2UgPSBpbnZlcnNlICYmIHRoaXMuY29tcGlsZVByb2dyYW0oaW52ZXJzZSk7XG5cbiAgICBsZXQgdHlwZSA9IHRoaXMuY2xhc3NpZnlTZXhwcihibG9jayk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2hlbHBlcicpIHtcbiAgICAgIHRoaXMuaGVscGVyU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuc2ltcGxlU2V4cHIoYmxvY2spO1xuXG4gICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvXG4gICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2BcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7XG4gICAgICB0aGlzLm9wY29kZSgnYmxvY2tWYWx1ZScsIGJsb2NrLnBhdGgub3JpZ2luYWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFtYmlndW91c1NleHByKGJsb2NrLCBwcm9ncmFtLCBpbnZlcnNlKTtcblxuICAgICAgLy8gbm93IHRoYXQgdGhlIHNpbXBsZSBtdXN0YWNoZSBpcyByZXNvbHZlZCwgd2UgbmVlZCB0b1xuICAgICAgLy8gZXZhbHVhdGUgaXQgYnkgZXhlY3V0aW5nIGBibG9ja0hlbHBlck1pc3NpbmdgXG4gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FtYmlndW91c0Jsb2NrVmFsdWUnKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7XG4gIH0sXG5cbiAgRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKSB7XG4gICAgbGV0IHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRlY29yYXRvci5wcm9ncmFtKTtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHByb2dyYW0sIHVuZGVmaW5lZCksXG4gICAgICBwYXRoID0gZGVjb3JhdG9yLnBhdGg7XG5cbiAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuICAgIHRoaXMub3Bjb2RlKCdyZWdpc3RlckRlY29yYXRvcicsIHBhcmFtcy5sZW5ndGgsIHBhdGgub3JpZ2luYWwpO1xuICB9LFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IGZ1bmN0aW9uKHBhcnRpYWwpIHtcbiAgICB0aGlzLnVzZVBhcnRpYWwgPSB0cnVlO1xuXG4gICAgbGV0IHByb2dyYW0gPSBwYXJ0aWFsLnByb2dyYW07XG4gICAgaWYgKHByb2dyYW0pIHtcbiAgICAgIHByb2dyYW0gPSB0aGlzLmNvbXBpbGVQcm9ncmFtKHBhcnRpYWwucHJvZ3JhbSk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IHBhcnRpYWwucGFyYW1zO1xuICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1Vuc3VwcG9ydGVkIG51bWJlciBvZiBwYXJ0aWFsIGFyZ3VtZW50czogJyArIHBhcmFtcy5sZW5ndGgsXG4gICAgICAgIHBhcnRpYWxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5leHBsaWNpdFBhcnRpYWxDb250ZXh0KSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICd1bmRlZmluZWQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKHsgdHlwZTogJ1BhdGhFeHByZXNzaW9uJywgcGFydHM6IFtdLCBkZXB0aDogMCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcGFydGlhbE5hbWUgPSBwYXJ0aWFsLm5hbWUub3JpZ2luYWwsXG4gICAgICBpc0R5bmFtaWMgPSBwYXJ0aWFsLm5hbWUudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nO1xuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHBhcnRpYWwubmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhwYXJ0aWFsLCBwcm9ncmFtLCB1bmRlZmluZWQsIHRydWUpO1xuXG4gICAgbGV0IGluZGVudCA9IHBhcnRpYWwuaW5kZW50IHx8ICcnO1xuICAgIGlmICh0aGlzLm9wdGlvbnMucHJldmVudEluZGVudCAmJiBpbmRlbnQpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRDb250ZW50JywgaW5kZW50KTtcbiAgICAgIGluZGVudCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdpbnZva2VQYXJ0aWFsJywgaXNEeW5hbWljLCBwYXJ0aWFsTmFtZSwgaW5kZW50KTtcbiAgICB0aGlzLm9wY29kZSgnYXBwZW5kJyk7XG4gIH0sXG4gIFBhcnRpYWxCbG9ja1N0YXRlbWVudDogZnVuY3Rpb24ocGFydGlhbEJsb2NrKSB7XG4gICAgdGhpcy5QYXJ0aWFsU3RhdGVtZW50KHBhcnRpYWxCbG9jayk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gICAgdGhpcy5TdWJFeHByZXNzaW9uKG11c3RhY2hlKTtcblxuICAgIGlmIChtdXN0YWNoZS5lc2NhcGVkICYmICF0aGlzLm9wdGlvbnMubm9Fc2NhcGUpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmRFc2NhcGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTtcbiAgICB9XG4gIH0sXG4gIERlY29yYXRvcihkZWNvcmF0b3IpIHtcbiAgICB0aGlzLkRlY29yYXRvckJsb2NrKGRlY29yYXRvcik7XG4gIH0sXG5cbiAgQ29udGVudFN0YXRlbWVudDogZnVuY3Rpb24oY29udGVudCkge1xuICAgIGlmIChjb250ZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbigpIHt9LFxuXG4gIFN1YkV4cHJlc3Npb246IGZ1bmN0aW9uKHNleHByKSB7XG4gICAgdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcik7XG4gICAgbGV0IHR5cGUgPSB0aGlzLmNsYXNzaWZ5U2V4cHIoc2V4cHIpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdzaW1wbGUnKSB7XG4gICAgICB0aGlzLnNpbXBsZVNleHByKHNleHByKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdoZWxwZXInKSB7XG4gICAgICB0aGlzLmhlbHBlclNleHByKHNleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hbWJpZ3VvdXNTZXhwcihzZXhwcik7XG4gICAgfVxuICB9LFxuICBhbWJpZ3VvdXNTZXhwcjogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2UpIHtcbiAgICBsZXQgcGF0aCA9IHNleHByLnBhdGgsXG4gICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgIGlzQmxvY2sgPSBwcm9ncmFtICE9IG51bGwgfHwgaW52ZXJzZSAhPSBudWxsO1xuXG4gICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTtcblxuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuXG4gICAgcGF0aC5zdHJpY3QgPSB0cnVlO1xuICAgIHRoaXMuYWNjZXB0KHBhdGgpO1xuXG4gICAgdGhpcy5vcGNvZGUoJ2ludm9rZUFtYmlndW91cycsIG5hbWUsIGlzQmxvY2spO1xuICB9LFxuXG4gIHNpbXBsZVNleHByOiBmdW5jdGlvbihzZXhwcikge1xuICAgIGxldCBwYXRoID0gc2V4cHIucGF0aDtcbiAgICBwYXRoLnN0cmljdCA9IHRydWU7XG4gICAgdGhpcy5hY2NlcHQocGF0aCk7XG4gICAgdGhpcy5vcGNvZGUoJ3Jlc29sdmVQb3NzaWJsZUxhbWJkYScpO1xuICB9LFxuXG4gIGhlbHBlclNleHByOiBmdW5jdGlvbihzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSkge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnNldHVwRnVsbE11c3RhY2hlUGFyYW1zKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSxcbiAgICAgIHBhdGggPSBzZXhwci5wYXRoLFxuICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUtub3duSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICcgKyBuYW1lLFxuICAgICAgICBzZXhwclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aC5zdHJpY3QgPSB0cnVlO1xuICAgICAgcGF0aC5mYWxzeSA9IHRydWU7XG5cbiAgICAgIHRoaXMuYWNjZXB0KHBhdGgpO1xuICAgICAgdGhpcy5vcGNvZGUoXG4gICAgICAgICdpbnZva2VIZWxwZXInLFxuICAgICAgICBwYXJhbXMubGVuZ3RoLFxuICAgICAgICBwYXRoLm9yaWdpbmFsLFxuICAgICAgICBBU1QuaGVscGVycy5zaW1wbGVJZChwYXRoKVxuICAgICAgKTtcbiAgICB9XG4gIH0sXG5cbiAgUGF0aEV4cHJlc3Npb246IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICB0aGlzLmFkZERlcHRoKHBhdGguZGVwdGgpO1xuICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgcGF0aC5kZXB0aCk7XG5cbiAgICBsZXQgbmFtZSA9IHBhdGgucGFydHNbMF0sXG4gICAgICBzY29wZWQgPSBBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSxcbiAgICAgIGJsb2NrUGFyYW1JZCA9ICFwYXRoLmRlcHRoICYmICFzY29wZWQgJiYgdGhpcy5ibG9ja1BhcmFtSW5kZXgobmFtZSk7XG5cbiAgICBpZiAoYmxvY2tQYXJhbUlkKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbG9va3VwQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JZCwgcGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIGlmICghbmFtZSkge1xuICAgICAgLy8gQ29udGV4dCByZWZlcmVuY2UsIGkuZS4gYHt7Zm9vIC59fWAgb3IgYHt7Zm9vIC4ufX1gXG4gICAgICB0aGlzLm9wY29kZSgncHVzaENvbnRleHQnKTtcbiAgICB9IGVsc2UgaWYgKHBhdGguZGF0YSkge1xuICAgICAgdGhpcy5vcHRpb25zLmRhdGEgPSB0cnVlO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cERhdGEnLCBwYXRoLmRlcHRoLCBwYXRoLnBhcnRzLCBwYXRoLnN0cmljdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKFxuICAgICAgICAnbG9va3VwT25Db250ZXh0JyxcbiAgICAgICAgcGF0aC5wYXJ0cyxcbiAgICAgICAgcGF0aC5mYWxzeSxcbiAgICAgICAgcGF0aC5zdHJpY3QsXG4gICAgICAgIHNjb3BlZFxuICAgICAgKTtcbiAgICB9XG4gIH0sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpO1xuICB9LFxuXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uKG51bWJlcikge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIG51bWJlci52YWx1ZSk7XG4gIH0sXG5cbiAgQm9vbGVhbkxpdGVyYWw6IGZ1bmN0aW9uKGJvb2wpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCBib29sLnZhbHVlKTtcbiAgfSxcblxuICBVbmRlZmluZWRMaXRlcmFsOiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAndW5kZWZpbmVkJyk7XG4gIH0sXG5cbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsICdudWxsJyk7XG4gIH0sXG5cbiAgSGFzaDogZnVuY3Rpb24oaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgICBpID0gMCxcbiAgICAgIGwgPSBwYWlycy5sZW5ndGg7XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaEhhc2gnKTtcblxuICAgIGZvciAoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLnB1c2hQYXJhbShwYWlyc1tpXS52YWx1ZSk7XG4gICAgfVxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdhc3NpZ25Ub0hhc2gnLCBwYWlyc1tpXS5rZXkpO1xuICAgIH1cbiAgICB0aGlzLm9wY29kZSgncG9wSGFzaCcpO1xuICB9LFxuXG4gIC8vIEhFTFBFUlNcbiAgb3Bjb2RlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgdGhpcy5vcGNvZGVzLnB1c2goe1xuICAgICAgb3Bjb2RlOiBuYW1lLFxuICAgICAgYXJnczogc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpLFxuICAgICAgbG9jOiB0aGlzLnNvdXJjZU5vZGVbMF0ubG9jXG4gICAgfSk7XG4gIH0sXG5cbiAgYWRkRGVwdGg6IGZ1bmN0aW9uKGRlcHRoKSB7XG4gICAgaWYgKCFkZXB0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudXNlRGVwdGhzID0gdHJ1ZTtcbiAgfSxcblxuICBjbGFzc2lmeVNleHByOiBmdW5jdGlvbihzZXhwcikge1xuICAgIGxldCBpc1NpbXBsZSA9IEFTVC5oZWxwZXJzLnNpbXBsZUlkKHNleHByLnBhdGgpO1xuXG4gICAgbGV0IGlzQmxvY2tQYXJhbSA9IGlzU2ltcGxlICYmICEhdGhpcy5ibG9ja1BhcmFtSW5kZXgoc2V4cHIucGF0aC5wYXJ0c1swXSk7XG5cbiAgICAvLyBhIG11c3RhY2hlIGlzIGFuIGVsaWdpYmxlIGhlbHBlciBpZjpcbiAgICAvLyAqIGl0cyBpZCBpcyBzaW1wbGUgKGEgc2luZ2xlIHBhcnQsIG5vdCBgdGhpc2Agb3IgYC4uYClcbiAgICBsZXQgaXNIZWxwZXIgPSAhaXNCbG9ja1BhcmFtICYmIEFTVC5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oc2V4cHIpO1xuXG4gICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBhIGRlZmluaXRlXG4gICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXJcbiAgICAvLyBwYXNzIG9yIGF0IHJ1bnRpbWUuXG4gICAgbGV0IGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1NpbXBsZSk7XG5cbiAgICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93XG4gICAgLy8gQW4gZWxpZ2libGUgaGVscGVyIGlzIG9uZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjb21wbGV4IHBhdGgsIGkuZS4gYHRoaXMuZm9vYCwgYC4uL2Zvb2AgZXRjLlxuICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikge1xuICAgICAgbGV0IG5hbWUgPSBzZXhwci5wYXRoLnBhcnRzWzBdLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzW25hbWVdKSB7XG4gICAgICAgIGlzSGVscGVyID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5rbm93bkhlbHBlcnNPbmx5KSB7XG4gICAgICAgIGlzRWxpZ2libGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNIZWxwZXIpIHtcbiAgICAgIHJldHVybiAnaGVscGVyJztcbiAgICB9IGVsc2UgaWYgKGlzRWxpZ2libGUpIHtcbiAgICAgIHJldHVybiAnYW1iaWd1b3VzJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdzaW1wbGUnO1xuICAgIH1cbiAgfSxcblxuICBwdXNoUGFyYW1zOiBmdW5jdGlvbihwYXJhbXMpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tpXSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2hQYXJhbTogZnVuY3Rpb24odmFsKSB7XG4gICAgbGV0IHZhbHVlID0gdmFsLnZhbHVlICE9IG51bGwgPyB2YWwudmFsdWUgOiB2YWwub3JpZ2luYWwgfHwgJyc7XG5cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXihcXC4/XFwuXFwvKSovZywgJycpLnJlcGxhY2UoL1xcLy9nLCAnLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsLmRlcHRoKSB7XG4gICAgICAgIHRoaXMuYWRkRGVwdGgodmFsLmRlcHRoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3Bjb2RlKCdnZXRDb250ZXh0JywgdmFsLmRlcHRoIHx8IDApO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmdQYXJhbScsIHZhbHVlLCB2YWwudHlwZSk7XG5cbiAgICAgIGlmICh2YWwudHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICAgIC8vIFN1YkV4cHJlc3Npb25zIGdldCBldmFsdWF0ZWQgYW5kIHBhc3NlZCBpblxuICAgICAgICAvLyBpbiBzdHJpbmcgcGFyYW1zIG1vZGUuXG4gICAgICAgIHRoaXMuYWNjZXB0KHZhbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICAgIGxldCBibG9ja1BhcmFtSW5kZXg7XG4gICAgICAgIGlmICh2YWwucGFydHMgJiYgIUFTVC5oZWxwZXJzLnNjb3BlZElkKHZhbCkgJiYgIXZhbC5kZXB0aCkge1xuICAgICAgICAgIGJsb2NrUGFyYW1JbmRleCA9IHRoaXMuYmxvY2tQYXJhbUluZGV4KHZhbC5wYXJ0c1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJsb2NrUGFyYW1JbmRleCkge1xuICAgICAgICAgIGxldCBibG9ja1BhcmFtQ2hpbGQgPSB2YWwucGFydHMuc2xpY2UoMSkuam9pbignLicpO1xuICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCAnQmxvY2tQYXJhbScsIGJsb2NrUGFyYW1JbmRleCwgYmxvY2tQYXJhbUNoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IHZhbC5vcmlnaW5hbCB8fCB2YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUucmVwbGFjZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgICAgICAgICAucmVwbGFjZSgvXnRoaXMoPzpcXC58JCkvLCAnJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL15cXC5cXC8vLCAnJylcbiAgICAgICAgICAgICAgLnJlcGxhY2UoL15cXC4kLywgJycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMub3Bjb2RlKCdwdXNoSWQnLCB2YWwudHlwZSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmFjY2VwdCh2YWwpO1xuICAgIH1cbiAgfSxcblxuICBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtczogZnVuY3Rpb24oc2V4cHIsIHByb2dyYW0sIGludmVyc2UsIG9taXRFbXB0eSkge1xuICAgIGxldCBwYXJhbXMgPSBzZXhwci5wYXJhbXM7XG4gICAgdGhpcy5wdXNoUGFyYW1zKHBhcmFtcyk7XG5cbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBwcm9ncmFtKTtcbiAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcblxuICAgIGlmIChzZXhwci5oYXNoKSB7XG4gICAgICB0aGlzLmFjY2VwdChzZXhwci5oYXNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ2VtcHR5SGFzaCcsIG9taXRFbXB0eSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfSxcblxuICBibG9ja1BhcmFtSW5kZXg6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBmb3IgKFxuICAgICAgbGV0IGRlcHRoID0gMCwgbGVuID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLmxlbmd0aDtcbiAgICAgIGRlcHRoIDwgbGVuO1xuICAgICAgZGVwdGgrK1xuICAgICkge1xuICAgICAgbGV0IGJsb2NrUGFyYW1zID0gdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zW2RlcHRoXSxcbiAgICAgICAgcGFyYW0gPSBibG9ja1BhcmFtcyAmJiBpbmRleE9mKGJsb2NrUGFyYW1zLCBuYW1lKTtcbiAgICAgIGlmIChibG9ja1BhcmFtcyAmJiBwYXJhbSA+PSAwKSB7XG4gICAgICAgIHJldHVybiBbZGVwdGgsIHBhcmFtXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBlbnYpIHtcbiAgaWYgKFxuICAgIGlucHV0ID09IG51bGwgfHxcbiAgICAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpXG4gICkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLnByZWNvbXBpbGUuIFlvdSBwYXNzZWQgJyArXG4gICAgICAgIGlucHV0XG4gICAgKTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBpZiAoISgnZGF0YScgaW4gb3B0aW9ucykpIHtcbiAgICBvcHRpb25zLmRhdGEgPSB0cnVlO1xuICB9XG4gIGlmIChvcHRpb25zLmNvbXBhdCkge1xuICAgIG9wdGlvbnMudXNlRGVwdGhzID0gdHJ1ZTtcbiAgfVxuXG4gIGxldCBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLFxuICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlKGlucHV0LCBvcHRpb25zID0ge30sIGVudikge1xuICBpZiAoXG4gICAgaW5wdXQgPT0gbnVsbCB8fFxuICAgICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnICYmIGlucHV0LnR5cGUgIT09ICdQcm9ncmFtJylcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICdZb3UgbXVzdCBwYXNzIGEgc3RyaW5nIG9yIEhhbmRsZWJhcnMgQVNUIHRvIEhhbmRsZWJhcnMuY29tcGlsZS4gWW91IHBhc3NlZCAnICtcbiAgICAgICAgaW5wdXRcbiAgICApO1xuICB9XG5cbiAgb3B0aW9ucyA9IGV4dGVuZCh7fSwgb3B0aW9ucyk7XG4gIGlmICghKCdkYXRhJyBpbiBvcHRpb25zKSkge1xuICAgIG9wdGlvbnMuZGF0YSA9IHRydWU7XG4gIH1cbiAgaWYgKG9wdGlvbnMuY29tcGF0KSB7XG4gICAgb3B0aW9ucy51c2VEZXB0aHMgPSB0cnVlO1xuICB9XG5cbiAgbGV0IGNvbXBpbGVkO1xuXG4gIGZ1bmN0aW9uIGNvbXBpbGVJbnB1dCgpIHtcbiAgICBsZXQgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSxcbiAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKSxcbiAgICAgIHRlbXBsYXRlU3BlYyA9IG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICByZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICAvLyBUZW1wbGF0ZSBpcyBvbmx5IGNvbXBpbGVkIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGVkIGFmdGVyIHRoYXQgcG9pbnQuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTtcbiAgfVxuICByZXQuX3NldHVwID0gZnVuY3Rpb24oc2V0dXBPcHRpb25zKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLl9zZXR1cChzZXR1cE9wdGlvbnMpO1xuICB9O1xuICByZXQuX2NoaWxkID0gZnVuY3Rpb24oaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5fY2hpbGQoaSwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGFyZ0VxdWFscyhhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoaXNBcnJheShhKSAmJiBpc0FycmF5KGIpICYmIGEubGVuZ3RoID09PSBiLmxlbmd0aCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFhcmdFcXVhbHMoYVtpXSwgYltpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1MaXRlcmFsVG9QYXRoKHNleHByKSB7XG4gIGlmICghc2V4cHIucGF0aC5wYXJ0cykge1xuICAgIGxldCBsaXRlcmFsID0gc2V4cHIucGF0aDtcbiAgICAvLyBDYXN0aW5nIHRvIHN0cmluZyBoZXJlIHRvIG1ha2UgZmFsc2UgYW5kIDAgbGl0ZXJhbCB2YWx1ZXMgcGxheSBuaWNlbHkgd2l0aCB0aGUgcmVzdFxuICAgIC8vIG9mIHRoZSBzeXN0ZW0uXG4gICAgc2V4cHIucGF0aCA9IHtcbiAgICAgIHR5cGU6ICdQYXRoRXhwcmVzc2lvbicsXG4gICAgICBkYXRhOiBmYWxzZSxcbiAgICAgIGRlcHRoOiAwLFxuICAgICAgcGFydHM6IFtsaXRlcmFsLm9yaWdpbmFsICsgJyddLFxuICAgICAgb3JpZ2luYWw6IGxpdGVyYWwub3JpZ2luYWwgKyAnJyxcbiAgICAgIGxvYzogbGl0ZXJhbC5sb2NcbiAgICB9O1xuICB9XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _base = require('../base');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _utils = require('../utils');\n\nvar _codeGen = require('./code-gen');\n\nvar _codeGen2 = _interopRequireDefault(_codeGen);\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function nameLookup(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function depthedLookup(name) {\n return [this.aliasable('container.lookup'), '(depths, \"', name, '\")'];\n },\n\n compilerInfo: function compilerInfo() {\n var revision = _base.COMPILER_REVISION,\n versions = _base.REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function appendToBuffer(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!_utils.isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function initializeBuffer() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function internalNameLookup(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function compile(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n var opcodes = environment.opcodes,\n opcode = undefined,\n firstLoc = undefined,\n i = undefined,\n l = undefined;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new _exception2['default']('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\\n']);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);\n } else {\n this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\\n');\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n var fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n var ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n var _context = this.context;\n var programs = _context.programs;\n var decorators = _context.decorators;\n\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function preamble() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new _codeGen2['default'](this.options.srcName);\n this.decorators = new _codeGen2['default'](this.options.srcName);\n },\n\n createFunctionContext: function createFunctionContext(asObject) {\n // istanbul ignore next\n\n var _this = this;\n\n var varDeclarations = '';\n\n var locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n var aliasCount = 0;\n Object.keys(this.aliases).forEach(function (alias) {\n var node = _this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n var params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n var source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap(['function(', params.join(','), ') {\\n ', source, '}']);\n }\n },\n mergeSource: function mergeSource(varDeclarations) {\n var isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst = undefined,\n sourceSeen = undefined,\n bufferStart = undefined,\n bufferEnd = undefined;\n this.source.each(function (line) {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n'));\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {\n return '\\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\\n return parent[propertyName];\\n }\\n return undefined\\n }\\n '.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function blockValue(name) {\n var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n var blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function ambiguousBlockValue() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n var current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function appendContent(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function append() {\n if (this.isInline()) {\n this.replaceStack(function (current) {\n return [' != null ? ', current, ' : \"\"'];\n });\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n var local = this.popStack();\n this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);\n if (this.environment.isSimple) {\n this.pushSource(['else { ', this.appendToBuffer(\"''\", undefined, true), ' }']);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function appendEscaped() {\n this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function getContext(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function pushContext() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {\n var i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function lookupBlockParam(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function lookupData(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function resolvePath(type, parts, i, falsy, strict) {\n // istanbul ignore next\n\n var _this2 = this;\n\n if (this.options.strict || this.options.assumeObjects) {\n this.push(strictLookup(this.options.strict && strict, this, parts, type));\n return;\n }\n\n var len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(function (current) {\n var lookup = _this2.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function resolvePossibleLambda() {\n this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function pushStringParam(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function emptyHash(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function pushHash() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function popHash() {\n var hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function pushString(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function pushLiteral(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function pushProgram(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator: function registerDecorator(paramSize, name) {\n var foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function invokeHelper(paramSize, name, isSimple) {\n var nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n var possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing'));\n }\n\n var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')'];\n var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams);\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function itemsSeparatedBy(items, separator) {\n var result = [];\n result.push(items[0]);\n for (var i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function invokeKnownHelper(paramSize, name) {\n var helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function invokeAmbiguous(name, helperCall) {\n this.useRegister('helper');\n\n var nonHelper = this.popStack();\n\n this.emptyHash();\n var helper = this.setupHelper(0, name, helperCall);\n\n var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');\n\n var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing'));\n }\n\n this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('\"function\"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function invokePartial(isDynamic, name, indent) {\n var params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function assignToHash(key) {\n var value = this.popStack(),\n context = undefined,\n type = undefined,\n id = undefined;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n var hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function pushId(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function compileChildren(environment, options) {\n var children = environment.children,\n child = undefined,\n compiler = undefined;\n\n for (var i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n var existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n var index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function matchExistingProgram(child) {\n for (var i = 0, len = this.context.environments.length; i < len; i++) {\n var environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function programExpression(guid) {\n var child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function useRegister(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function push(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function pushStackLiteral(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function pushSource(source) {\n if (this.pendingContent) {\n this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function replaceStack(callback) {\n var prefix = ['('],\n stack = undefined,\n createdStack = undefined,\n usedLiteral = undefined;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new _exception2['default']('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n var top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n var _name = this.incrStack();\n\n prefix = ['((', this.push(_name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n var item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function incrStack() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function topStackName() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function flushInline() {\n var inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (var i = 0, len = inlineStack.length; i < len; i++) {\n var entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n var stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function isInline() {\n return this.inlineStack.length;\n },\n\n popStack: function popStack(wrapped) {\n var inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new _exception2['default']('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function topStack() {\n var stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function contextName(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function quotedString(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function objectLiteral(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function aliasable(name) {\n var ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function setupHelper(paramSize, name, blockHelper) {\n var params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n var foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function setupParams(helper, paramSize, params) {\n var options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param = undefined;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n var inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n var i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {\n var options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function () {\n var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');\n\n var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n\n for (var i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function (name) {\n return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, type) {\n var stack = compiler.popStack(),\n i = 0,\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];\n } else {\n return stack;\n }\n}\n\nexports['default'] = JavaScriptCompiler;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2phdmFzY3JpcHQtY29tcGlsZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztvQkFBb0QsU0FBUzs7eUJBQ3ZDLGNBQWM7Ozs7cUJBQ1osVUFBVTs7dUJBQ2QsWUFBWTs7OztBQUVoQyxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDdEIsTUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Q0FDcEI7O0FBRUQsU0FBUyxrQkFBa0IsR0FBRyxFQUFFOztBQUVoQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUc7OztBQUc3QixZQUFVLEVBQUUsb0JBQVMsTUFBTSxFQUFFLElBQUksZUFBZTtBQUM5QyxXQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDOUM7QUFDRCxlQUFhLEVBQUUsdUJBQVMsSUFBSSxFQUFFO0FBQzVCLFdBQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztHQUN2RTs7QUFFRCxjQUFZLEVBQUUsd0JBQVc7QUFDdkIsUUFBTSxRQUFRLDBCQUFvQjtRQUNoQyxRQUFRLEdBQUcsdUJBQWlCLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLFdBQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7R0FDN0I7O0FBRUQsZ0JBQWMsRUFBRSx3QkFBUyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTs7QUFFbkQsUUFBSSxDQUFDLGVBQVEsTUFBTSxDQUFDLEVBQUU7QUFDcEIsWUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDbkI7QUFDRCxVQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDOztBQUU1QyxRQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFB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LENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7R0FDcEQ7O0FBRUQsTUFBSSxlQUFlLEVBQUU7QUFDbkIsV0FBTyxDQUNMLFFBQVEsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFDdEMsR0FBRyxFQUNILEtBQUssRUFDTCxJQUFJLEVBQ0osUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDL0IsSUFBSSxFQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFDL0MsSUFBSSxDQUNMLENBQUM7R0FDSCxNQUFNO0FBQ0wsV0FBTyxLQUFLLENBQUM7R0FDZDtDQUNGOztxQkFFYyxrQkFBa0IiLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTVBJTEVSX1JFVklTSU9OLCBSRVZJU0lPTl9DSEFOR0VTIH0gZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IENvZGVHZW4gZnJvbSAnLi9jb2RlLWdlbic7XG5cbmZ1bmN0aW9uIExpdGVyYWwodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBKYXZhU2NyaXB0Q29tcGlsZXIoKSB7fVxuXG5KYXZhU2NyaXB0Q29tcGlsZXIucHJvdG90eXBlID0ge1xuICAvLyBQVUJMSUMgQVBJOiBZb3UgY2FuIG92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgaW4gYSBzdWJjbGFzcyB0byBwcm92aWRlXG4gIC8vIGFsdGVybmF0aXZlIGNvbXBpbGVkIGZvcm1zIGZvciBuYW1lIGxvb2t1cCBhbmQgYnVmZmVyaW5nIHNlbWFudGljc1xuICBuYW1lTG9va3VwOiBmdW5jdGlvbihwYXJlbnQsIG5hbWUgLyosICB0eXBlICovKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxOYW1lTG9va3VwKHBhcmVudCwgbmFtZSk7XG4gIH0sXG4gIGRlcHRoZWRMb29rdXA6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCBcIicsIG5hbWUsICdcIiknXTtcbiAgfSxcblxuICBjb21waWxlckluZm86IGZ1bmN0aW9uKCkge1xuICAgIGNvbnN0IHJldmlzaW9uID0gQ09NUElMRVJfUkVWSVNJT04sXG4gICAgICB2ZXJzaW9ucyA9IFJFVklTSU9OX0NIQU5HRVNbcmV2aXNpb25dO1xuICAgIHJldHVybiBbcmV2aXNpb24sIHZlcnNpb25zXTtcbiAgfSxcblxuICBhcHBlbmRUb0J1ZmZlcjogZnVuY3Rpb24oc291cmNlLCBsb2NhdGlvbiwgZXhwbGljaXQpIHtcbiAgICAvLyBGb3JjZSBhIHNvdXJjZSBhcyB0aGlzIHNpbXBsaWZpZXMgdGhlIG1lcmdlIGxvZ2ljLlxuICAgIGlmICghaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICBzb3VyY2UgPSBbc291cmNlXTtcbiAgICB9XG4gICAgc291cmNlID0gdGhpcy5zb3VyY2Uud3JhcChzb3VyY2UsIGxvY2F0aW9uKTtcblxuICAgIGlmICh0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlKSB7XG4gICAgICByZXR1cm4gWydyZXR1cm4gJywgc291cmNlLCAnOyddO1xuICAgIH0gZWxzZSBpZiAoZXhwbGljaXQpIHtcbiAgICAgIC8vIFRoaXMgaXMgYSBjYXNlIHdoZXJlIHRoZSBidWZmZXIgb3BlcmF0aW9uIG9jY3VycyBhcyBhIGNoaWxkIG9mIGFub3RoZXJcbiAgICAgIC8vIGNvbnN0cnVjdCwgZ2VuZXJhbGx5IGJyYWNlcy4gV2UgaGF2ZSB0byBleHBsaWNpdGx5IG91dHB1dCB0aGVzZSBidWZmZXJcbiAgICAgIC8vIG9wZXJhdGlvbnMgdG8gZW5zdXJlIHRoYXQgdGhlIGVtaXR0ZWQgY29kZSBnb2VzIGluIHRoZSBjb3JyZWN0IGxvY2F0aW9uLlxuICAgICAgcmV0dXJuIFsnYnVmZmVyICs9ICcsIHNvdXJjZSwgJzsnXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc291cmNlLmFwcGVuZFRvQnVmZmVyID0gdHJ1ZTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuICB9LFxuXG4gIGluaXRpYWxpemVCdWZmZXI6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnF1b3RlZFN0cmluZygnJyk7XG4gIH0sXG4gIC8vIEVORCBQVUJMSUMgQVBJXG4gIGludGVybmFsTmFtZUxvb2t1cDogZnVuY3Rpb24ocGFyZW50LCBuYW1lKSB7XG4gICAgdGhpcy5sb29rdXBQcm9wZXJ0eUZ1bmN0aW9uSXNVc2VkID0gdHJ1ZTtcbiAgICByZXR1cm4gWydsb29rdXBQcm9wZXJ0eSgnLCBwYXJlbnQsICcsJywgSlNPTi5zdHJpbmdpZnkobmFtZSksICcpJ107XG4gIH0sXG5cbiAgbG9va3VwUHJvcGVydHlGdW5jdGlvbklzVXNlZDogZmFsc2UsXG5cbiAgY29tcGlsZTogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMsIGNvbnRleHQsIGFzT2JqZWN0KSB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5zdHJpbmdQYXJhbXMgPSB0aGlzLm9wdGlvbnMuc3RyaW5nUGFyYW1zO1xuICAgIHRoaXMudHJhY2tJZHMgPSB0aGlzLm9wdGlvbnMudHJhY2tJZHM7XG4gICAgdGhpcy5wcmVjb21waWxlID0gIWFzT2JqZWN0O1xuXG4gICAgdGhpcy5uYW1lID0gdGhpcy5lbnZpcm9ubWVudC5uYW1lO1xuICAgIHRoaXMuaXNDaGlsZCA9ICEhY29udGV4dDtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0IHx8IHtcbiAgICAgIGRlY29yYXRvcnM6IFtdLFxuICAgICAgcHJvZ3JhbXM6IFtdLFxuICAgICAgZW52aXJvbm1lbnRzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnByZWFtYmxlKCk7XG5cbiAgICB0aGlzLnN0YWNrU2xvdCA9IDA7XG4gICAgdGhpcy5zdGFja1ZhcnMgPSBbXTtcbiAgICB0aGlzLmFsaWFzZXMgPSB7fTtcbiAgICB0aGlzLnJlZ2lzdGVycyA9IHsgbGlzdDogW10gfTtcbiAgICB0aGlzLmhhc2hlcyA9IFtdO1xuICAgIHRoaXMuY29tcGlsZVN0YWNrID0gW107XG4gICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdO1xuICAgIHRoaXMuYmxvY2tQYXJhbXMgPSBbXTtcblxuICAgIHRoaXMuY29tcGlsZUNoaWxkcmVuKGVudmlyb25tZW50LCBvcHRpb25zKTtcblxuICAgIHRoaXMudXNlRGVwdGhzID1cbiAgICAgIHRoaXMudXNlRGVwdGhzIHx8XG4gICAgICBlbnZpcm9ubWVudC51c2VEZXB0aHMgfHxcbiAgICAgIGVudmlyb25tZW50LnVzZURlY29yYXRvcnMgfHxcbiAgICAgIHRoaXMub3B0aW9ucy5jb21wYXQ7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsXG4gICAgICBvcGNvZGUsXG4gICAgICBmaXJzdExvYyxcbiAgICAgIGksXG4gICAgICBsO1xuXG4gICAgZm9yIChpID0gMCwgbCA9IG9wY29kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBvcGNvZGUgPSBvcGNvZGVzW2ldO1xuXG4gICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSBvcGNvZGUubG9jO1xuICAgICAgZmlyc3RMb2MgPSBmaXJzdExvYyB8fCBvcGNvZGUubG9jO1xuICAgICAgdGhpc1tvcGNvZGUub3Bjb2RlXS5hcHBseSh0aGlzLCBvcGNvZGUuYXJncyk7XG4gICAgfVxuXG4gICAgLy8gRmx1c2ggYW55IHRyYWlsaW5nIGNvbnRlbnQgdGhhdCBtaWdodCBiZSBwZW5kaW5nLlxuICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IGZpcnN0TG9jO1xuICAgIHRoaXMucHVzaFNvdXJjZSgnJyk7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLnN0YWNrU2xvdCB8fCB0aGlzLmlubGluZVN0YWNrLmxlbmd0aCB8fCB0aGlzLmNvbXBpbGVTdGFjay5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZChbXG4gICAgICAgICd2YXIgZGVjb3JhdG9ycyA9IGNvbnRhaW5lci5kZWNvcmF0b3JzLCAnLFxuICAgICAgICB0aGlzLmxvb2t1cFByb3BlcnR5RnVuY3Rpb25WYXJEZWNsYXJhdGlvbigpLFxuICAgICAgICAnO1xcbidcbiAgICAgIF0pO1xuICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTtcblxuICAgICAgaWYgKGFzT2JqZWN0KSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRoaXMsIFtcbiAgICAgICAgICAnZm4nLFxuICAgICAgICAgICdwcm9wcycsXG4gICAgICAgICAgJ2NvbnRhaW5lcicsXG4gICAgICAgICAgJ2RlcHRoMCcsXG4gICAgICAgICAgJ2RhdGEnLFxuICAgICAgICAgICdibG9ja1BhcmFtcycsXG4gICAgICAgICAgJ2RlcHRocycsXG4gICAgICAgICAgdGhpcy5kZWNvcmF0b3JzLm1lcmdlKClcbiAgICAgICAgXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZChcbiAgICAgICAgICAnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIGRlcHRoMCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xcbidcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ31cXG4nKTtcbiAgICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdGhpcy5kZWNvcmF0b3JzLm1lcmdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgZm4gPSB0aGlzLmNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCk7XG4gICAgaWYgKCF0aGlzLmlzQ2hpbGQpIHtcbiAgICAgIGxldCByZXQgPSB7XG4gICAgICAgIGNvbXBpbGVyOiB0aGlzLmNvbXBpbGVySW5mbygpLFxuICAgICAgICBtYWluOiBmblxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuZGVjb3JhdG9ycykge1xuICAgICAgICByZXQubWFpbl9kID0gdGhpcy5kZWNvcmF0b3JzOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZVxuICAgICAgICByZXQudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGxldCB7IHByb2dyYW1zLCBkZWNvcmF0b3JzIH0gPSB0aGlzLmNvbnRleHQ7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gcHJvZ3JhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChwcm9ncmFtc1tpXSkge1xuICAgICAgICAgIHJldFtpXSA9IHByb2dyYW1zW2ldO1xuICAgICAgICAgIGlmIChkZWNvcmF0b3JzW2ldKSB7XG4gICAgICAgICAgICByZXRbaSArICdfZCddID0gZGVjb3JhdG9yc1tpXTtcbiAgICAgICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQudXNlUGFydGlhbCkge1xuICAgICAgICByZXQudXNlUGFydGlhbCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgICAgcmV0LnVzZURhdGEgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICAgIHJldC51c2VEZXB0aHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcmV0LnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY29tcGF0KSB7XG4gICAgICAgIHJldC5jb21wYXQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFzT2JqZWN0KSB7XG4gICAgICAgIHJldC5jb21waWxlciA9IEpTT04uc3RyaW5naWZ5KHJldC5jb21waWxlcik7XG5cbiAgICAgICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0geyBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDAgfSB9O1xuICAgICAgICByZXQgPSB0aGlzLm9iamVjdExpdGVyYWwocmV0KTtcblxuICAgICAgICBpZiAob3B0aW9ucy5zcmNOYW1lKSB7XG4gICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7IGZpbGU6IG9wdGlvbnMuZGVzdE5hbWUgfSk7XG4gICAgICAgICAgcmV0Lm1hcCA9IHJldC5tYXAgJiYgcmV0Lm1hcC50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldCA9IHJldC50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXQuY29tcGlsZXJPcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZm47XG4gICAgfVxuICB9LFxuXG4gIHByZWFtYmxlOiBmdW5jdGlvbigpIHtcbiAgICAvLyB0cmFjayB0aGUgbGFzdCBjb250ZXh0IHB1c2hlZCBpbnRvIHBsYWNlIHRvIGFsbG93IHNraXBwaW5nIHRoZVxuICAgIC8vIGdldENvbnRleHQgb3Bjb2RlIHdoZW4gaXQgd291bGQgYmUgYSBub29wXG4gICAgdGhpcy5sYXN0Q29udGV4dCA9IDA7XG4gICAgdGhpcy5zb3VyY2UgPSBuZXcgQ29kZUdlbih0aGlzLm9wdGlvbnMuc3JjTmFtZSk7XG4gICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IENvZGVHZW4odGhpcy5vcHRpb25zLnNyY05hbWUpO1xuICB9LFxuXG4gIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dDogZnVuY3Rpb24oYXNPYmplY3QpIHtcbiAgICBsZXQgdmFyRGVjbGFyYXRpb25zID0gJyc7XG5cbiAgICBsZXQgbG9jYWxzID0gdGhpcy5zdGFja1ZhcnMuY29uY2F0KHRoaXMucmVnaXN0ZXJzLmxpc3QpO1xuICAgIGlmIChsb2NhbHMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsICcgKyBsb2NhbHMuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBtaW5pbWl6ZXIgYWxpYXMgbWFwcGluZ3NcbiAgICAvL1xuICAgIC8vIFdoZW4gdXNpbmcgdHJ1ZSBTb3VyY2VOb2RlcywgdGhpcyB3aWxsIHVwZGF0ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZ2l2ZW4gYWxpYXNcbiAgICAvLyBhcyB0aGUgc291cmNlIG5vZGVzIGFyZSByZXVzZWQgaW4gc2l0dS4gRm9yIHRoZSBub24tc291cmNlIG5vZGUgY29tcGlsYXRpb24gbW9kZSxcbiAgICAvLyBhbGlhc2VzIHdpbGwgbm90IGJlIHVzZWQsIGJ1dCB0aGlzIGNhc2UgaXMgYWxyZWFkeSBiZWluZyBydW4gb24gdGhlIGNsaWVudCBhbmRcbiAgICAvLyB3ZSBhcmVuJ3QgY29uY2VybiBhYm91dCBtaW5pbWl6aW5nIHRoZSB0ZW1wbGF0ZSBzaXplLlxuICAgIGxldCBhbGlhc0NvdW50ID0gMDtcbiAgICBPYmplY3Qua2V5cyh0aGlzLmFsaWFzZXMpLmZvckVhY2goYWxpYXMgPT4ge1xuICAgICAgbGV0IG5vZGUgPSB0aGlzLmFsaWFzZXNbYWxpYXNdO1xuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5yZWZlcmVuY2VDb3VudCA+IDEpIHtcbiAgICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsIGFsaWFzJyArICsrYWxpYXNDb3VudCArICc9JyArIGFsaWFzO1xuICAgICAgICBub2RlLmNoaWxkcmVuWzBdID0gJ2FsaWFzJyArIGFsaWFzQ291bnQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5sb29rdXBQcm9wZXJ0eUZ1bmN0aW9uSXNVc2VkKSB7XG4gICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgJyArIHRoaXMubG9va3VwUHJvcGVydHlGdW5jdGlvblZhckRlY2xhcmF0aW9uKCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IFsnY29udGFpbmVyJywgJ2RlcHRoMCcsICdoZWxwZXJzJywgJ3BhcnRpYWxzJywgJ2RhdGEnXTtcblxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwYXJhbXMucHVzaCgnZGVwdGhzJyk7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBhIHNlY29uZCBwYXNzIG92ZXIgdGhlIG91dHB1dCB0byBtZXJnZSBjb250ZW50IHdoZW4gcG9zc2libGVcbiAgICBsZXQgc291cmNlID0gdGhpcy5tZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMpO1xuXG4gICAgaWYgKGFzT2JqZWN0KSB7XG4gICAgICBwYXJhbXMucHVzaChzb3VyY2UpO1xuXG4gICAgICByZXR1cm4gRnVuY3Rpb24uYXBwbHkodGhpcywgcGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlLndyYXAoW1xuICAgICAgICAnZnVuY3Rpb24oJyxcbiAgICAgICAgcGFyYW1zLmpvaW4oJywnKSxcbiAgICAgICAgJykge1xcbiAgJyxcbiAgICAgICAgc291cmNlLFxuICAgICAgICAnfSdcbiAgICAgIF0pO1xuICAgIH1cbiAgfSxcbiAgbWVyZ2VTb3VyY2U6IGZ1bmN0aW9uKHZhckRlY2xhcmF0aW9ucykge1xuICAgIGxldCBpc1NpbXBsZSA9IHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUsXG4gICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9yY2VCdWZmZXIsXG4gICAgICBhcHBlbmRGaXJzdCxcbiAgICAgIHNvdXJjZVNlZW4sXG4gICAgICBidWZmZXJTdGFydCxcbiAgICAgIGJ1ZmZlckVuZDtcbiAgICB0aGlzLnNvdXJjZS5lYWNoKGxpbmUgPT4ge1xuICAgICAgaWYgKGxpbmUuYXBwZW5kVG9CdWZmZXIpIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgbGluZS5wcmVwZW5kKCcgICsgJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYnVmZmVyU3RhcnQgPSBsaW5lO1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlckVuZCA9IGxpbmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgICBpZiAoIXNvdXJjZVNlZW4pIHtcbiAgICAgICAgICAgIGFwcGVuZEZpcnN0ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgnYnVmZmVyICs9ICcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICAgICAgYnVmZmVyU3RhcnQgPSBidWZmZXJFbmQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBzb3VyY2VTZWVuID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFpc1NpbXBsZSkge1xuICAgICAgICAgIGFwcGVuZE9ubHkgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFwcGVuZE9ubHkpIHtcbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZVNlZW4pIHtcbiAgICAgICAgdGhpcy5zb3VyY2UucHVzaCgncmV0dXJuIFwiXCI7Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPVxuICAgICAgICAnLCBidWZmZXIgPSAnICsgKGFwcGVuZEZpcnN0ID8gJycgOiB0aGlzLmluaXRpYWxpemVCdWZmZXIoKSk7XG5cbiAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICBidWZmZXJTdGFydC5wcmVwZW5kKCdyZXR1cm4gYnVmZmVyICsgJyk7XG4gICAgICAgIGJ1ZmZlckVuZC5hZGQoJzsnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBidWZmZXI7Jyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhckRlY2xhcmF0aW9ucykge1xuICAgICAgdGhpcy5zb3VyY2UucHJlcGVuZChcbiAgICAgICAgJ3ZhciAnICsgdmFyRGVjbGFyYXRpb25zLnN1YnN0cmluZygyKSArIChhcHBlbmRGaXJzdCA/ICcnIDogJztcXG4nKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zb3VyY2UubWVyZ2UoKTtcbiAgfSxcblxuICBsb29rdXBQcm9wZXJ0eUZ1bmN0aW9uVmFyRGVjbGFyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBgXG4gICAgICBsb29rdXBQcm9wZXJ0eSA9IGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eSB8fCBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmVudCwgcHJvcGVydHlOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGAudHJpbSgpO1xuICB9LFxuXG4gIC8vIFtibG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmdcbiAgLy9cbiAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtXG4gIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmRcbiAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5XG4gIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy5cbiAgYmxvY2tWYWx1ZTogZnVuY3Rpb24obmFtZSkge1xuICAgIGxldCBibG9ja0hlbHBlck1pc3NpbmcgPSB0aGlzLmFsaWFzYWJsZShcbiAgICAgICAgJ2NvbnRhaW5lci5ob29rcy5ibG9ja0hlbHBlck1pc3NpbmcnXG4gICAgICApLFxuICAgICAgcGFyYW1zID0gW3RoaXMuY29udGV4dE5hbWUoMCldO1xuICAgIHRoaXMuc2V0dXBIZWxwZXJBcmdzKG5hbWUsIDAsIHBhcmFtcyk7XG5cbiAgICBsZXQgYmxvY2tOYW1lID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgYmxvY2tOYW1lKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFthbWJpZ3VvdXNCbG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBDb21waWxlciB2YWx1ZSwgYmVmb3JlOiBsYXN0SGVscGVyPXZhbHVlIG9mIGxhc3QgZm91bmQgaGVscGVyLCBpZiBhbnlcbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBubyBsYXN0SGVscGVyOiBzYW1lIGFzIFtibG9ja1ZhbHVlXVxuICAvLyBPbiBzdGFjaywgYWZ0ZXIsIGlmIGxhc3RIZWxwZXI6IHZhbHVlXG4gIGFtYmlndW91c0Jsb2NrVmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjXG4gICAgbGV0IGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKFxuICAgICAgICAnY29udGFpbmVyLmhvb2tzLmJsb2NrSGVscGVyTWlzc2luZydcbiAgICAgICksXG4gICAgICBwYXJhbXMgPSBbdGhpcy5jb250ZXh0TmFtZSgwKV07XG4gICAgdGhpcy5zZXR1cEhlbHBlckFyZ3MoJycsIDAsIHBhcmFtcywgdHJ1ZSk7XG5cbiAgICB0aGlzLmZsdXNoSW5saW5lKCk7XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMudG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGN1cnJlbnQpO1xuXG4gICAgdGhpcy5wdXNoU291cmNlKFtcbiAgICAgICdpZiAoIScsXG4gICAgICB0aGlzLmxhc3RIZWxwZXIsXG4gICAgICAnKSB7ICcsXG4gICAgICBjdXJyZW50LFxuICAgICAgJyA9ICcsXG4gICAgICB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoYmxvY2tIZWxwZXJNaXNzaW5nLCAnY2FsbCcsIHBhcmFtcyksXG4gICAgICAnfSdcbiAgICBdKTtcbiAgfSxcblxuICAvLyBbYXBwZW5kQ29udGVudF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEFwcGVuZHMgdGhlIHN0cmluZyB2YWx1ZSBvZiBgY29udGVudGAgdG8gdGhlIGN1cnJlbnQgYnVmZmVyXG4gIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uKGNvbnRlbnQpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkge1xuICAgICAgY29udGVudCA9IHRoaXMucGVuZGluZ0NvbnRlbnQgKyBjb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmdMb2NhdGlvbiA9IHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLnBlbmRpbmdDb250ZW50ID0gY29udGVudDtcbiAgfSxcblxuICAvLyBbYXBwZW5kXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIENvZXJjZXMgYHZhbHVlYCB0byBhIFN0cmluZyBhbmQgYXBwZW5kcyBpdCB0byB0aGUgY3VycmVudCBidWZmZXIuXG4gIC8vXG4gIC8vIElmIGB2YWx1ZWAgaXMgdHJ1dGh5LCBvciAwLCBpdCBpcyBjb2VyY2VkIGludG8gYSBzdHJpbmcgYW5kIGFwcGVuZGVkXG4gIC8vIE90aGVyd2lzZSwgdGhlIGVtcHR5IHN0cmluZyBpcyBhcHBlbmRlZFxuICBhcHBlbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGN1cnJlbnQgPT4gWycgIT0gbnVsbCA/ICcsIGN1cnJlbnQsICcgOiBcIlwiJ10pO1xuXG4gICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGxvY2FsID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgdGhpcy5wdXNoU291cmNlKFtcbiAgICAgICAgJ2lmICgnLFxuICAgICAgICBsb2NhbCxcbiAgICAgICAgJyAhPSBudWxsKSB7ICcsXG4gICAgICAgIHRoaXMuYXBwZW5kVG9CdWZmZXIobG9jYWwsIHVuZGVmaW5lZCwgdHJ1ZSksXG4gICAgICAgICcgfSdcbiAgICAgIF0pO1xuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFtcbiAgICAgICAgICAnZWxzZSB7ICcsXG4gICAgICAgICAgdGhpcy5hcHBlbmRUb0J1ZmZlcihcIicnXCIsIHVuZGVmaW5lZCwgdHJ1ZSksXG4gICAgICAgICAgJyB9J1xuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLy8gW2FwcGVuZEVzY2FwZWRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gRXNjYXBlIGB2YWx1ZWAgYW5kIGFwcGVuZCBpdCB0byB0aGUgYnVmZmVyXG4gIGFwcGVuZEVzY2FwZWQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucHVzaFNvdXJjZShcbiAgICAgIHRoaXMuYXBwZW5kVG9CdWZmZXIoW1xuICAgICAgICB0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSxcbiAgICAgICAgJygnLFxuICAgICAgICB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAgICcpJ1xuICAgICAgXSlcbiAgICApO1xuICB9LFxuXG4gIC8vIFtnZXRDb250ZXh0XVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGFmdGVyOiBsYXN0Q29udGV4dD1kZXB0aFxuICAvL1xuICAvLyBTZXQgdGhlIHZhbHVlIG9mIHRoZSBgbGFzdENvbnRleHRgIGNvbXBpbGVyIHZhbHVlIHRvIHRoZSBkZXB0aFxuICBnZXRDb250ZXh0OiBmdW5jdGlvbihkZXB0aCkge1xuICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDtcbiAgfSxcblxuICAvLyBbcHVzaENvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLlxuICBwdXNoQ29udGV4dDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBPbkNvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24ocGFydHMsIGZhbHN5LCBzdHJpY3QsIHNjb3BlZCkge1xuICAgIGxldCBpID0gMDtcblxuICAgIGlmICghc2NvcGVkICYmIHRoaXMub3B0aW9ucy5jb21wYXQgJiYgIXRoaXMubGFzdENvbnRleHQpIHtcbiAgICAgIC8vIFRoZSBkZXB0aGVkIHF1ZXJ5IGlzIGV4cGVjdGVkIHRvIGhhbmRsZSB0aGUgdW5kZWZpbmVkIGxvZ2ljIGZvciB0aGUgcm9vdCBsZXZlbCB0aGF0XG4gICAgICAvLyBpcyBpbXBsZW1lbnRlZCBiZWxvdywgc28gd2UgZXZhbHVhdGUgdGhhdCBkaXJlY3RseSBpbiBjb21wYXQgbW9kZVxuICAgICAgdGhpcy5wdXNoKHRoaXMuZGVwdGhlZExvb2t1cChwYXJ0c1tpKytdKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaENvbnRleHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBCbG9ja1BhcmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBibG9ja1BhcmFtW25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBwYXJ0c2Agb24gdGhlIGdpdmVuIGJsb2NrIHBhcmFtIGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cEJsb2NrUGFyYW06IGZ1bmN0aW9uKGJsb2NrUGFyYW1JZCwgcGFydHMpIHtcbiAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcblxuICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTtcbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBEYXRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3JcbiAgbG9va3VwRGF0YTogZnVuY3Rpb24oZGVwdGgsIHBhcnRzLCBzdHJpY3QpIHtcbiAgICBpZiAoIWRlcHRoKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2RhdGEnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdjb250YWluZXIuZGF0YShkYXRhLCAnICsgZGVwdGggKyAnKScpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb2x2ZVBhdGgoJ2RhdGEnLCBwYXJ0cywgMCwgdHJ1ZSwgc3RyaWN0KTtcbiAgfSxcblxuICByZXNvbHZlUGF0aDogZnVuY3Rpb24odHlwZSwgcGFydHMsIGksIGZhbHN5LCBzdHJpY3QpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnN0cmljdCB8fCB0aGlzLm9wdGlvbnMuYXNzdW1lT2JqZWN0cykge1xuICAgICAgdGhpcy5wdXNoKHN0cmljdExvb2t1cCh0aGlzLm9wdGlvbnMuc3RyaWN0ICYmIHN0cmljdCwgdGhpcywgcGFydHMsIHR5cGUpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbGVuID0gcGFydHMubGVuZ3RoO1xuICAgIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgICAgdGhpcy5yZXBsYWNlU3RhY2soY3VycmVudCA9PiB7XG4gICAgICAgIGxldCBsb29rdXAgPSB0aGlzLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpO1xuICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKVxuICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuXG4gICAgICAgIGlmICghZmFsc3kpIHtcbiAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmdcbiAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIH1cbiAgfSxcblxuICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLlxuICAvL1xuICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnlcbiAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhXG4gIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5wdXNoKFtcbiAgICAgIHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubGFtYmRhJyksXG4gICAgICAnKCcsXG4gICAgICB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAnLCAnLFxuICAgICAgdGhpcy5jb250ZXh0TmFtZSgwKSxcbiAgICAgICcpJ1xuICAgIF0pO1xuICB9LFxuXG4gIC8vIFtwdXNoU3RyaW5nUGFyYW1dXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHN0cmluZywgY3VycmVudENvbnRleHQsIC4uLlxuICAvL1xuICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0cmluZyBtb2RlLCB3aGljaFxuICAvLyBwcm92aWRlcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgcGFyYW1ldGVyIGFsb25nIHdpdGggaXRzXG4gIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBpdCBpbW1lZGlhdGVseS5cbiAgcHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbihzdHJpbmcsIHR5cGUpIHtcbiAgICB0aGlzLnB1c2hDb250ZXh0KCk7XG4gICAgdGhpcy5wdXNoU3RyaW5nKHR5cGUpO1xuXG4gICAgLy8gSWYgaXQncyBhIHN1YmV4cHJlc3Npb24sIHRoZSBzdHJpbmcgcmVzdWx0XG4gICAgLy8gd2lsbCBiZSBwdXNoZWQgYWZ0ZXIgdGhpcyBvcGNvZGUuXG4gICAgaWYgKHR5cGUgIT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMucHVzaFN0cmluZyhzdHJpbmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGVtcHR5SGFzaDogZnVuY3Rpb24ob21pdEVtcHR5KSB7XG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaElkc1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaENvbnRleHRzXG4gICAgICB0aGlzLnB1c2goJ3t9Jyk7IC8vIGhhc2hUeXBlc1xuICAgIH1cbiAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwob21pdEVtcHR5ID8gJ3VuZGVmaW5lZCcgOiAne30nKTtcbiAgfSxcbiAgcHVzaEhhc2g6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmhhc2gpIHtcbiAgICAgIHRoaXMuaGFzaGVzLnB1c2godGhpcy5oYXNoKTtcbiAgICB9XG4gICAgdGhpcy5oYXNoID0geyB2YWx1ZXM6IHt9LCB0eXBlczogW10sIGNvbnRleHRzOiBbXSwgaWRzOiBbXSB9O1xuICB9LFxuICBwb3BIYXNoOiBmdW5jdGlvbigpIHtcbiAgICBsZXQgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICB0aGlzLmhhc2ggPSB0aGlzLmhhc2hlcy5wb3AoKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2guaWRzKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmNvbnRleHRzKSk7XG4gICAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudHlwZXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2godGhpcy5vYmplY3RMaXRlcmFsKGhhc2gudmFsdWVzKSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hTdHJpbmddXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHF1b3RlZFN0cmluZyhzdHJpbmcpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHF1b3RlZCB2ZXJzaW9uIG9mIGBzdHJpbmdgIG9udG8gdGhlIHN0YWNrXG4gIHB1c2hTdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTtcbiAgfSxcblxuICAvLyBbcHVzaExpdGVyYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRoaXMgb3BlcmF0aW9uIHByZXZlbnRzXG4gIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGRcbiAgLy8gaXQuXG4gIHB1c2hMaXRlcmFsOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hQcm9ncmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlc1xuICAvLyBhIGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3NpYmxlXG4gIC8vIGV4cHJlc3Npb24uXG4gIHB1c2hQcm9ncmFtOiBmdW5jdGlvbihndWlkKSB7XG4gICAgaWYgKGd1aWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZWdpc3RlckRlY29yYXRvcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvcixcbiAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3JzIGxpc3QuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBmb3VuZERlY29yYXRvciA9IHRoaXMubmFtZUxvb2t1cCgnZGVjb3JhdG9ycycsIG5hbWUsICdkZWNvcmF0b3InKSxcbiAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUpO1xuXG4gICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goW1xuICAgICAgJ2ZuID0gJyxcbiAgICAgIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoZm91bmREZWNvcmF0b3IsICcnLCBbXG4gICAgICAgICdmbicsXG4gICAgICAgICdwcm9wcycsXG4gICAgICAgICdjb250YWluZXInLFxuICAgICAgICBvcHRpb25zXG4gICAgICBdKSxcbiAgICAgICcgfHwgZm47J1xuICAgIF0pO1xuICB9LFxuXG4gIC8vIFtpbnZva2VIZWxwZXJdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGhlbHBlciBpbnZvY2F0aW9uXG4gIC8vXG4gIC8vIFBvcHMgb2ZmIHRoZSBoZWxwZXIncyBwYXJhbWV0ZXJzLCBpbnZva2VzIHRoZSBoZWxwZXIsXG4gIC8vIGFuZCBwdXNoZXMgdGhlIGhlbHBlcidzIHJldHVybiB2YWx1ZSBvbnRvIHRoZSBzdGFjay5cbiAgLy9cbiAgLy8gSWYgdGhlIGhlbHBlciBpcyBub3QgZm91bmQsIGBoZWxwZXJNaXNzaW5nYCBpcyBjYWxsZWQuXG4gIGludm9rZUhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBuYW1lLCBpc1NpbXBsZSkge1xuICAgIGxldCBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7XG5cbiAgICBsZXQgcG9zc2libGVGdW5jdGlvbkNhbGxzID0gW107XG5cbiAgICBpZiAoaXNTaW1wbGUpIHtcbiAgICAgIC8vIGRpcmVjdCBjYWxsIHRvIGhlbHBlclxuICAgICAgcG9zc2libGVGdW5jdGlvbkNhbGxzLnB1c2goaGVscGVyLm5hbWUpO1xuICAgIH1cbiAgICAvLyBjYWxsIGEgZnVuY3Rpb24gZnJvbSB0aGUgaW5wdXQgb2JqZWN0XG4gICAgcG9zc2libGVGdW5jdGlvbkNhbGxzLnB1c2gobm9uSGVscGVyKTtcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIHBvc3NpYmxlRnVuY3Rpb25DYWxscy5wdXNoKFxuICAgICAgICB0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmhvb2tzLmhlbHBlck1pc3NpbmcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgZnVuY3Rpb25Mb29rdXBDb2RlID0gW1xuICAgICAgJygnLFxuICAgICAgdGhpcy5pdGVtc1NlcGFyYXRlZEJ5KHBvc3NpYmxlRnVuY3Rpb25DYWxscywgJ3x8JyksXG4gICAgICAnKSdcbiAgICBdO1xuICAgIGxldCBmdW5jdGlvbkNhbGwgPSB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoXG4gICAgICBmdW5jdGlvbkxvb2t1cENvZGUsXG4gICAgICAnY2FsbCcsXG4gICAgICBoZWxwZXIuY2FsbFBhcmFtc1xuICAgICk7XG4gICAgdGhpcy5wdXNoKGZ1bmN0aW9uQ2FsbCk7XG4gIH0sXG5cbiAgaXRlbXNTZXBhcmF0ZWRCeTogZnVuY3Rpb24oaXRlbXMsIHNlcGFyYXRvcikge1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQucHVzaChpdGVtc1swXSk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0LnB1c2goc2VwYXJhdG9yLCBpdGVtc1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIC8vIFtpbnZva2VLbm93bkhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIHRoZSBoZWxwZXIgaXMga25vd24gdG8gZXhpc3QsXG4gIC8vIHNvIGEgYGhlbHBlck1pc3NpbmdgIGZhbGxiYWNrIGlzIG5vdCByZXF1aXJlZC5cbiAgaW52b2tlS25vd25IZWxwZXI6IGZ1bmN0aW9uKHBhcmFtU2l6ZSwgbmFtZSkge1xuICAgIGxldCBoZWxwZXIgPSB0aGlzLnNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSk7XG4gICAgdGhpcy5wdXNoKHRoaXMuc291cmNlLmZ1bmN0aW9uQ2FsbChoZWxwZXIubmFtZSwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFtpbnZva2VBbWJpZ3VvdXNdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGhhc2gsIGludmVyc2UsIHByb2dyYW0sIHBhcmFtcy4uLiwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzdWx0IG9mIGRpc2FtYmlndWF0aW9uXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGlzIHVzZWQgd2hlbiBhbiBleHByZXNzaW9uIGxpa2UgYHt7Zm9vfX1gXG4gIC8vIGlzIHByb3ZpZGVkLCBidXQgd2UgZG9uJ3Qga25vdyBhdCBjb21waWxlLXRpbWUgd2hldGhlciBpdFxuICAvLyBpcyBhIGhlbHBlciBvciBhIHBhdGguXG4gIC8vXG4gIC8vIFRoaXMgb3BlcmF0aW9uIGVtaXRzIG1vcmUgY29kZSB0aGFuIHRoZSBvdGhlciBvcHRpb25zLFxuICAvLyBhbmQgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyB0aGUgYGtub3duSGVscGVyc2AgYW5kXG4gIC8vIGBrbm93bkhlbHBlcnNPbmx5YCBmbGFncyBhdCBjb21waWxlLXRpbWUuXG4gIGludm9rZUFtYmlndW91czogZnVuY3Rpb24obmFtZSwgaGVscGVyQ2FsbCkge1xuICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpO1xuXG4gICAgbGV0IG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIHRoaXMuZW1wdHlIYXNoKCk7XG4gICAgbGV0IGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7XG5cbiAgICBsZXQgaGVscGVyTmFtZSA9ICh0aGlzLmxhc3RIZWxwZXIgPSB0aGlzLm5hbWVMb29rdXAoXG4gICAgICAnaGVscGVycycsXG4gICAgICBuYW1lLFxuICAgICAgJ2hlbHBlcidcbiAgICApKTtcblxuICAgIGxldCBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSddO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnO1xuICAgICAgbG9va3VwLnB1c2goXG4gICAgICAgICcgIT0gbnVsbCA/IGhlbHBlciA6ICcsXG4gICAgICAgIHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuaG9va3MuaGVscGVyTWlzc2luZycpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChbXG4gICAgICAnKCcsXG4gICAgICBsb29rdXAsXG4gICAgICBoZWxwZXIucGFyYW1zSW5pdCA/IFsnKSwoJywgaGVscGVyLnBhcmFtc0luaXRdIDogW10sXG4gICAgICAnKSwnLFxuICAgICAgJyh0eXBlb2YgaGVscGVyID09PSAnLFxuICAgICAgdGhpcy5hbGlhc2FibGUoJ1wiZnVuY3Rpb25cIicpLFxuICAgICAgJyA/ICcsXG4gICAgICB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLFxuICAgICAgJyA6IGhlbHBlcikpJ1xuICAgIF0pO1xuICB9LFxuXG4gIC8vIFtpbnZva2VQYXJ0aWFsXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBjb250ZXh0LCAuLi5cbiAgLy8gT24gc3RhY2sgYWZ0ZXI6IHJlc3VsdCBvZiBwYXJ0aWFsIGludm9jYXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gcG9wcyBvZmYgYSBjb250ZXh0LCBpbnZva2VzIGEgcGFydGlhbCB3aXRoIHRoYXQgY29udGV4dCxcbiAgLy8gYW5kIHB1c2hlcyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZvY2F0aW9uIGJhY2suXG4gIGludm9rZVBhcnRpYWw6IGZ1bmN0aW9uKGlzRHluYW1pYywgbmFtZSwgaW5kZW50KSB7XG4gICAgbGV0IHBhcmFtcyA9IFtdLFxuICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMobmFtZSwgMSwgcGFyYW1zKTtcblxuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBkZWxldGUgb3B0aW9ucy5uYW1lO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnQpIHtcbiAgICAgIG9wdGlvbnMuaW5kZW50ID0gSlNPTi5zdHJpbmdpZnkoaW5kZW50KTtcbiAgICB9XG4gICAgb3B0aW9ucy5oZWxwZXJzID0gJ2hlbHBlcnMnO1xuICAgIG9wdGlvbnMucGFydGlhbHMgPSAncGFydGlhbHMnO1xuICAgIG9wdGlvbnMuZGVjb3JhdG9ycyA9ICdjb250YWluZXIuZGVjb3JhdG9ycyc7XG5cbiAgICBpZiAoIWlzRHluYW1pYykge1xuICAgICAgcGFyYW1zLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMudW5zaGlmdChuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkge1xuICAgICAgb3B0aW9ucy5kZXB0aHMgPSAnZGVwdGhzJztcbiAgICB9XG4gICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTtcbiAgICBwYXJhbXMucHVzaChvcHRpb25zKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2NvbnRhaW5lci5pbnZva2VQYXJ0aWFsJywgJycsIHBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFthc3NpZ25Ub0hhc2hdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uXG4gIC8vXG4gIC8vIFBvcHMgYSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2hcbiAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbihrZXkpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICBjb250ZXh0LFxuICAgICAgdHlwZSxcbiAgICAgIGlkO1xuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIGlkID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIHR5cGUgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBjb250ZXh0ID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cblxuICAgIGxldCBoYXNoID0gdGhpcy5oYXNoO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBoYXNoLmNvbnRleHRzW2tleV0gPSBjb250ZXh0O1xuICAgIH1cbiAgICBpZiAodHlwZSkge1xuICAgICAgaGFzaC50eXBlc1trZXldID0gdHlwZTtcbiAgICB9XG4gICAgaWYgKGlkKSB7XG4gICAgICBoYXNoLmlkc1trZXldID0gaWQ7XG4gICAgfVxuICAgIGhhc2gudmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgfSxcblxuICBwdXNoSWQ6IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIGNoaWxkKSB7XG4gICAgaWYgKHR5cGUgPT09ICdCbG9ja1BhcmFtJykge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKFxuICAgICAgICAnYmxvY2tQYXJhbXNbJyArXG4gICAgICAgICAgbmFtZVswXSArXG4gICAgICAgICAgJ10ucGF0aFsnICtcbiAgICAgICAgICBuYW1lWzFdICtcbiAgICAgICAgICAnXScgK1xuICAgICAgICAgIChjaGlsZCA/ICcgKyAnICsgSlNPTi5zdHJpbmdpZnkoJy4nICsgY2hpbGQpIDogJycpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1BhdGhFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5wdXNoU3RyaW5nKG5hbWUpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1N1YkV4cHJlc3Npb24nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ3RydWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCdudWxsJyk7XG4gICAgfVxuICB9LFxuXG4gIC8vIEhFTFBFUlNcblxuICBjb21waWxlcjogSmF2YVNjcmlwdENvbXBpbGVyLFxuXG4gIGNvbXBpbGVDaGlsZHJlbjogZnVuY3Rpb24oZW52aXJvbm1lbnQsIG9wdGlvbnMpIHtcbiAgICBsZXQgY2hpbGRyZW4gPSBlbnZpcm9ubWVudC5jaGlsZHJlbixcbiAgICAgIGNoaWxkLFxuICAgICAgY29tcGlsZXI7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cbiAgICAgIGxldCBleGlzdGluZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNlaG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlblxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoO1xuICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgaW5kZXg7XG4gICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKFxuICAgICAgICAgIGNoaWxkLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICF0aGlzLnByZWNvbXBpbGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlY29yYXRvcnNbaW5kZXhdID0gY29tcGlsZXIuZGVjb3JhdG9ycztcbiAgICAgICAgdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpbmRleF0gPSBjaGlsZDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGNvbXBpbGVyLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgY29tcGlsZXIudXNlQmxvY2tQYXJhbXM7XG4gICAgICAgIGNoaWxkLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzO1xuICAgICAgICBjaGlsZC51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZC5pbmRleCA9IGV4aXN0aW5nLmluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgZXhpc3RpbmcuaW5kZXg7XG5cbiAgICAgICAgdGhpcy51c2VEZXB0aHMgPSB0aGlzLnVzZURlcHRocyB8fCBleGlzdGluZy51c2VEZXB0aHM7XG4gICAgICAgIHRoaXMudXNlQmxvY2tQYXJhbXMgPSB0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IGV4aXN0aW5nLnVzZUJsb2NrUGFyYW1zO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWF0Y2hFeGlzdGluZ1Byb2dyYW06IGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGxldCBlbnZpcm9ubWVudCA9IHRoaXMuY29udGV4dC5lbnZpcm9ubWVudHNbaV07XG4gICAgICBpZiAoZW52aXJvbm1lbnQgJiYgZW52aXJvbm1lbnQuZXF1YWxzKGNoaWxkKSkge1xuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHByb2dyYW1FeHByZXNzaW9uOiBmdW5jdGlvbihndWlkKSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5lbnZpcm9ubWVudC5jaGlsZHJlbltndWlkXSxcbiAgICAgIHByb2dyYW1QYXJhbXMgPSBbY2hpbGQuaW5kZXgsICdkYXRhJywgY2hpbGQuYmxvY2tQYXJhbXNdO1xuXG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgdGhpcy51c2VEZXB0aHMpIHtcbiAgICAgIHByb2dyYW1QYXJhbXMucHVzaCgnYmxvY2tQYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2RlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiAnY29udGFpbmVyLnByb2dyYW0oJyArIHByb2dyYW1QYXJhbXMuam9pbignLCAnKSArICcpJztcbiAgfSxcblxuICB1c2VSZWdpc3RlcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGlmICghdGhpcy5yZWdpc3RlcnNbbmFtZV0pIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJzW25hbWVdID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVnaXN0ZXJzLmxpc3QucHVzaChuYW1lKTtcbiAgICB9XG4gIH0sXG5cbiAgcHVzaDogZnVuY3Rpb24oZXhwcikge1xuICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkge1xuICAgICAgZXhwciA9IHRoaXMuc291cmNlLndyYXAoZXhwcik7XG4gICAgfVxuXG4gICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpO1xuICAgIHJldHVybiBleHByO1xuICB9LFxuXG4gIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGlzLnB1c2gobmV3IExpdGVyYWwoaXRlbSkpO1xuICB9LFxuXG4gIHB1c2hTb3VyY2U6IGZ1bmN0aW9uKHNvdXJjZSkge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7XG4gICAgICB0aGlzLnNvdXJjZS5wdXNoKFxuICAgICAgICB0aGlzLmFwcGVuZFRvQnVmZmVyKFxuICAgICAgICAgIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSxcbiAgICAgICAgICB0aGlzLnBlbmRpbmdMb2NhdGlvblxuICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy5wZW5kaW5nQ29udGVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc291cmNlKSB7XG4gICAgICB0aGlzLnNvdXJjZS5wdXNoKHNvdXJjZSk7XG4gICAgfVxuICB9LFxuXG4gIHJlcGxhY2VTdGFjazogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICBsZXQgcHJlZml4ID0gWycoJ10sXG4gICAgICBzdGFjayxcbiAgICAgIGNyZWF0ZWRTdGFjayxcbiAgICAgIHVzZWRMaXRlcmFsO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBpZiAoIXRoaXMuaXNJbmxpbmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigncmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTtcbiAgICB9XG5cbiAgICAvLyBXZSB3YW50IHRvIG1lcmdlIHRoZSBpbmxpbmUgc3RhdGVtZW50IGludG8gdGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywnXG4gICAgbGV0IHRvcCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7XG5cbiAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8gYmUgaW5saW5lZFxuICAgICAgc3RhY2sgPSBbdG9wLnZhbHVlXTtcbiAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTtcbiAgICAgIHVzZWRMaXRlcmFsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZVxuICAgICAgY3JlYXRlZFN0YWNrID0gdHJ1ZTtcbiAgICAgIGxldCBuYW1lID0gdGhpcy5pbmNyU3RhY2soKTtcblxuICAgICAgcHJlZml4ID0gWycoKCcsIHRoaXMucHVzaChuYW1lKSwgJyA9ICcsIHRvcCwgJyknXTtcbiAgICAgIHN0YWNrID0gdGhpcy50b3BTdGFjaygpO1xuICAgIH1cblxuICAgIGxldCBpdGVtID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdGFjayk7XG5cbiAgICBpZiAoIXVzZWRMaXRlcmFsKSB7XG4gICAgICB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmIChjcmVhdGVkU3RhY2spIHtcbiAgICAgIHRoaXMuc3RhY2tTbG90LS07XG4gICAgfVxuICAgIHRoaXMucHVzaChwcmVmaXguY29uY2F0KGl0ZW0sICcpJykpO1xuICB9LFxuXG4gIGluY3JTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdGFja1Nsb3QrKztcbiAgICBpZiAodGhpcy5zdGFja1Nsb3QgPiB0aGlzLnN0YWNrVmFycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudG9wU3RhY2tOYW1lKCk7XG4gIH0sXG4gIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICdzdGFjaycgKyB0aGlzLnN0YWNrU2xvdDtcbiAgfSxcbiAgZmx1c2hJbmxpbmU6IGZ1bmN0aW9uKCkge1xuICAgIGxldCBpbmxpbmVTdGFjayA9IHRoaXMuaW5saW5lU3RhY2s7XG4gICAgdGhpcy5pbmxpbmVTdGFjayA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBpbmxpbmVTdGFjay5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgbGV0IGVudHJ5ID0gaW5saW5lU3RhY2tbaV07XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmIChlbnRyeSBpbnN0YW5jZW9mIExpdGVyYWwpIHtcbiAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChlbnRyeSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLmluY3JTdGFjaygpO1xuICAgICAgICB0aGlzLnB1c2hTb3VyY2UoW3N0YWNrLCAnID0gJywgZW50cnksICc7J10pO1xuICAgICAgICB0aGlzLmNvbXBpbGVTdGFjay5wdXNoKHN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGlzSW5saW5lOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbmxpbmVTdGFjay5sZW5ndGg7XG4gIH0sXG5cbiAgcG9wU3RhY2s6IGZ1bmN0aW9uKHdyYXBwZWQpIHtcbiAgICBsZXQgaW5saW5lID0gdGhpcy5pc0lubGluZSgpLFxuICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpO1xuXG4gICAgaWYgKCF3cmFwcGVkICYmIGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ludmFsaWQgc3RhY2sgcG9wJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgfSxcblxuICB0b3BTdGFjazogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHN0YWNrID0gdGhpcy5pc0lubGluZSgpID8gdGhpcy5pbmxpbmVTdGFjayA6IHRoaXMuY29tcGlsZVN0YWNrLFxuICAgICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9LFxuXG4gIGNvbnRleHROYW1lOiBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzICYmIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2RlcHRoJyArIGNvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIHF1b3RlZFN0cmluZzogZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyhzdHIpO1xuICB9LFxuXG4gIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uKG9iaikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7XG4gIH0sXG5cbiAgYWxpYXNhYmxlOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgbGV0IHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXQucmVmZXJlbmNlQ291bnQrKztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuXG4gICAgcmV0ID0gdGhpcy5hbGlhc2VzW25hbWVdID0gdGhpcy5zb3VyY2Uud3JhcChuYW1lKTtcbiAgICByZXQuYWxpYXNhYmxlID0gdHJ1ZTtcbiAgICByZXQucmVmZXJlbmNlQ291bnQgPSAxO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBzZXR1cEhlbHBlcjogZnVuY3Rpb24ocGFyYW1TaXplLCBuYW1lLCBibG9ja0hlbHBlcikge1xuICAgIGxldCBwYXJhbXMgPSBbXSxcbiAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpO1xuICAgIGxldCBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSxcbiAgICAgIGNhbGxDb250ZXh0ID0gdGhpcy5hbGlhc2FibGUoXG4gICAgICAgIGAke3RoaXMuY29udGV4dE5hbWUoMCl9ICE9IG51bGwgPyAke3RoaXMuY29udGV4dE5hbWUoXG4gICAgICAgICAgMFxuICAgICAgICApfSA6IChjb250YWluZXIubnVsbENvbnRleHQgfHwge30pYFxuICAgICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHBhcmFtc0luaXQ6IHBhcmFtc0luaXQsXG4gICAgICBuYW1lOiBmb3VuZEhlbHBlcixcbiAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcylcbiAgICB9O1xuICB9LFxuXG4gIHNldHVwUGFyYW1zOiBmdW5jdGlvbihoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB7fSxcbiAgICAgIGNvbnRleHRzID0gW10sXG4gICAgICB0eXBlcyA9IFtdLFxuICAgICAgaWRzID0gW10sXG4gICAgICBvYmplY3RBcmdzID0gIXBhcmFtcyxcbiAgICAgIHBhcmFtO1xuXG4gICAgaWYgKG9iamVjdEFyZ3MpIHtcbiAgICAgIHBhcmFtcyA9IFtdO1xuICAgIH1cblxuICAgIG9wdGlvbnMubmFtZSA9IHRoaXMucXVvdGVkU3RyaW5nKGhlbHBlcik7XG4gICAgb3B0aW9ucy5oYXNoID0gdGhpcy5wb3BTdGFjaygpO1xuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIG9wdGlvbnMuaGFzaElkcyA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBvcHRpb25zLmhhc2hUeXBlcyA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIG9wdGlvbnMuaGFzaENvbnRleHRzID0gdGhpcy5wb3BTdGFjaygpO1xuICAgIH1cblxuICAgIGxldCBpbnZlcnNlID0gdGhpcy5wb3BTdGFjaygpLFxuICAgICAgcHJvZ3JhbSA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93c1xuICAgIC8vIGhlbHBlcnMgdG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWBcbiAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7XG4gICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgICAgb3B0aW9ucy5pbnZlcnNlID0gaW52ZXJzZSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgIH1cblxuICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpXG4gICAgLy8gc28gd2UgbmVlZCB0byBwb3AgdGhlbSBvZmYgdGhlIHN0YWNrIGluIHJldmVyc2Ugb3JkZXJcbiAgICBsZXQgaSA9IHBhcmFtU2l6ZTtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBwYXJhbSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHBhcmFtc1tpXSA9IHBhcmFtO1xuXG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICBpZHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgICAgdHlwZXNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTtcbiAgICAgIG9wdGlvbnMuY29udGV4dHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGNvbnRleHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9ICdkYXRhJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuYmxvY2tQYXJhbXMgPSAnYmxvY2tQYXJhbXMnO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSxcblxuICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0aW9uKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMsIHVzZVJlZ2lzdGVyKSB7XG4gICAgbGV0IG9wdGlvbnMgPSB0aGlzLnNldHVwUGFyYW1zKGhlbHBlciwgcGFyYW1TaXplLCBwYXJhbXMpO1xuICAgIG9wdGlvbnMubG9jID0gSlNPTi5zdHJpbmdpZnkodGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uKTtcbiAgICBvcHRpb25zID0gdGhpcy5vYmplY3RMaXRlcmFsKG9wdGlvbnMpO1xuICAgIGlmICh1c2VSZWdpc3Rlcikge1xuICAgICAgdGhpcy51c2VSZWdpc3Rlcignb3B0aW9ucycpO1xuICAgICAgcGFyYW1zLnB1c2goJ29wdGlvbnMnKTtcbiAgICAgIHJldHVybiBbJ29wdGlvbnM9Jywgb3B0aW9uc107XG4gICAgfSBlbHNlIGlmIChwYXJhbXMpIHtcbiAgICAgIHBhcmFtcy5wdXNoKG9wdGlvbnMpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG4gIH1cbn07XG5cbihmdW5jdGlvbigpIHtcbiAgY29uc3QgcmVzZXJ2ZWRXb3JkcyA9IChcbiAgICAnYnJlYWsgZWxzZSBuZXcgdmFyJyArXG4gICAgJyBjYXNlIGZpbmFsbHkgcmV0dXJuIHZvaWQnICtcbiAgICAnIGNhdGNoIGZvciBzd2l0Y2ggd2hpbGUnICtcbiAgICAnIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgK1xuICAgICcgZGVmYXVsdCBpZiB0aHJvdycgK1xuICAgICcgZGVsZXRlIGluIHRyeScgK1xuICAgICcgZG8gaW5zdGFuY2VvZiB0eXBlb2YnICtcbiAgICAnIGFic3RyYWN0IGVudW0gaW50IHNob3J0JyArXG4gICAgJyBib29sZWFuIGV4cG9ydCBpbnRlcmZhY2Ugc3RhdGljJyArXG4gICAgJyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlcicgK1xuICAgICcgY2hhciBmaW5hbCBuYXRpdmUgc3luY2hyb25pemVkJyArXG4gICAgJyBjbGFzcyBmbG9hdCBwYWNrYWdlIHRocm93cycgK1xuICAgICcgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVudCcgK1xuICAgICcgZGVidWdnZXIgaW1wbGVtZW50cyBwcm90ZWN0ZWQgdm9sYXRpbGUnICtcbiAgICAnIGRvdWJsZSBpbXBvcnQgcHVibGljIGxldCB5aWVsZCBhd2FpdCcgK1xuICAgICcgbnVsbCB0cnVlIGZhbHNlJ1xuICApLnNwbGl0KCcgJyk7XG5cbiAgY29uc3QgY29tcGlsZXJXb3JkcyA9IChKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFMgPSB7fSk7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSByZXNlcnZlZFdvcmRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbXBpbGVyV29yZHNbcmVzZXJ2ZWRXb3Jkc1tpXV0gPSB0cnVlO1xuICB9XG59KSgpO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIE1heSBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb25cbiAqL1xuSmF2YVNjcmlwdENvbXBpbGVyLmlzVmFsaWRKYXZhU2NyaXB0VmFyaWFibGVOYW1lID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKFxuICAgICFKYXZhU2NyaXB0Q29tcGlsZXIuUkVTRVJWRURfV09SRFNbbmFtZV0gJiZcbiAgICAvXlthLXpBLVpfJF1bMC05YS16QS1aXyRdKiQvLnRlc3QobmFtZSlcbiAgKTtcbn07XG5cbmZ1bmN0aW9uIHN0cmljdExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkge1xuICBsZXQgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLFxuICAgIGkgPSAwLFxuICAgIGxlbiA9IHBhcnRzLmxlbmd0aDtcbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIGxlbi0tO1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHN0YWNrID0gY29tcGlsZXIubmFtZUxvb2t1cChzdGFjaywgcGFydHNbaV0sIHR5cGUpO1xuICB9XG5cbiAgaWYgKHJlcXVpcmVUZXJtaW5hbCkge1xuICAgIHJldHVybiBbXG4gICAgICBjb21waWxlci5hbGlhc2FibGUoJ2NvbnRhaW5lci5zdHJpY3QnKSxcbiAgICAgICcoJyxcbiAgICAgIHN0YWNrLFxuICAgICAgJywgJyxcbiAgICAgIGNvbXBpbGVyLnF1b3RlZFN0cmluZyhwYXJ0c1tpXSksXG4gICAgICAnLCAnLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY29tcGlsZXIuc291cmNlLmN1cnJlbnRMb2NhdGlvbiksXG4gICAgICAnICknXG4gICAgXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSmF2YVNjcmlwdENvbXBpbGVyO1xuIl19\n","/* global define */\n'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nvar SourceNode = undefined;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we asusme that\n // they are running on the browser and thus have no need for the source-map library.\n var SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {}\n/* NOP */\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function (line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function add(chunks) {\n if (_utils.isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function prepend(chunks) {\n if (_utils.isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function toStringWithSourceMap() {\n return { code: this.toString() };\n },\n toString: function toString() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (_utils.isArray(chunk)) {\n var ret = [];\n\n for (var i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty: function isEmpty() {\n return !this.source.length;\n },\n prepend: function prepend(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function push(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function merge() {\n var source = this.empty();\n this.each(function (line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function each(iter) {\n for (var i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function empty() {\n var loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function wrap(chunk) {\n var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1];\n\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);\n },\n\n functionCall: function functionCall(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function quotedString(str) {\n return '\"' + (str + '').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') + '\"';\n },\n\n objectLiteral: function objectLiteral(obj) {\n // istanbul ignore next\n\n var _this = this;\n\n var pairs = [];\n\n Object.keys(obj).forEach(function (key) {\n var value = castChunk(obj[key], _this);\n if (value !== 'undefined') {\n pairs.push([_this.quotedString(key), ':', value]);\n }\n });\n\n var ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function generateList(entries) {\n var ret = this.empty();\n\n for (var i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function generateArray(entries) {\n var ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexports['default'] = CodeGen;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUN3QixVQUFVOztBQUVsQyxJQUFJLFVBQVUsWUFBQSxDQUFDOztBQUVmLElBQUk7O0FBRUYsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFOzs7QUFHL0MsUUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3RDLGNBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0dBQ25DO0NBQ0YsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUViOzs7O0FBQUEsQUFHRCxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsWUFBVSxHQUFHLFVBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQ25ELFFBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2QsUUFBSSxNQUFNLEVBQUU7QUFDVixVQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2xCO0dBQ0YsQ0FBQzs7QUFFRixZQUFVLENBQUMsU0FBUyxHQUFHO0FBQ3JCLE9BQUcsRUFBRSxhQUFTLE1BQU0sRUFBRTtBQUNwQixVQUFJLGVBQVEsTUFBTSxDQUFDLEVBQUU7QUFDbkIsY0FBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7T0FDMUI7QUFDRCxVQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQztLQUNwQjtBQUNELFdBQU8sRUFBRSxpQkFBUyxNQUFNLEVBQUU7QUFDeEIsVUFBSSxlQUFRLE1BQU0sQ0FBQyxFQUFFO0FBQ25CLGNBQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO09BQzFCO0FBQ0QsVUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztL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QUcsQ0FBQyxDQUFDO0FBQ2pCLE9BQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7O0FBRWIsV0FBTyxHQUFHLENBQUM7R0FDWjtDQUNGLENBQUM7O3FCQUVhLE9BQU8iLCJmaWxlIjoiY29kZS1nZW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgZGVmaW5lICovXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5sZXQgU291cmNlTm9kZTtcblxudHJ5IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicgfHwgIWRlZmluZS5hbWQpIHtcbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IHRoaXMgaW4gQU1EIGVudmlyb25tZW50cy4gRm9yIHRoZXNlIGVudmlyb25tZW50cywgd2UgYXN1c21lIHRoYXRcbiAgICAvLyB0aGV5IGFyZSBydW5uaW5nIG9uIHRoZSBicm93c2VyIGFuZCB0aHVzIGhhdmUgbm8gbmVlZCBmb3IgdGhlIHNvdXJjZS1tYXAgbGlicmFyeS5cbiAgICBsZXQgU291cmNlTWFwID0gcmVxdWlyZSgnc291cmNlLW1hcCcpO1xuICAgIFNvdXJjZU5vZGUgPSBTb3VyY2VNYXAuU291cmNlTm9kZTtcbiAgfVxufSBjYXRjaCAoZXJyKSB7XG4gIC8qIE5PUCAqL1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRlc3RlZCBidXQgbm90IGNvdmVyZWQgaW4gaXN0YW5idWwgZHVlIHRvIGRpc3QgYnVpbGQgICovXG5pZiAoIVNvdXJjZU5vZGUpIHtcbiAgU291cmNlTm9kZSA9IGZ1bmN0aW9uKGxpbmUsIGNvbHVtbiwgc3JjRmlsZSwgY2h1bmtzKSB7XG4gICAgdGhpcy5zcmMgPSAnJztcbiAgICBpZiAoY2h1bmtzKSB7XG4gICAgICB0aGlzLmFkZChjaHVua3MpO1xuICAgIH1cbiAgfTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgU291cmNlTm9kZS5wcm90b3R5cGUgPSB7XG4gICAgYWRkOiBmdW5jdGlvbihjaHVua3MpIHtcbiAgICAgIGlmIChpc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzO1xuICAgIH0sXG4gICAgcHJlcGVuZDogZnVuY3Rpb24oY2h1bmtzKSB7XG4gICAgICBpZiAoaXNBcnJheShjaHVua3MpKSB7XG4gICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5zcmM7XG4gICAgfSxcbiAgICB0b1N0cmluZ1dpdGhTb3VyY2VNYXA6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHsgY29kZTogdGhpcy50b1N0cmluZygpIH07XG4gICAgfSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcmM7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjYXN0Q2h1bmsoY2h1bmssIGNvZGVHZW4sIGxvYykge1xuICBpZiAoaXNBcnJheShjaHVuaykpIHtcbiAgICBsZXQgcmV0ID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gY2h1bmsubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHJldC5wdXNoKGNvZGVHZW4ud3JhcChjaHVua1tpXSwgbG9jKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIGNodW5rID09PSAnbnVtYmVyJykge1xuICAgIC8vIEhhbmRsZSBwcmltaXRpdmVzIHRoYXQgdGhlIFNvdXJjZU5vZGUgd2lsbCB0aHJvdyB1cCBvblxuICAgIHJldHVybiBjaHVuayArICcnO1xuICB9XG4gIHJldHVybiBjaHVuaztcbn1cblxuZnVuY3Rpb24gQ29kZUdlbihzcmNGaWxlKSB7XG4gIHRoaXMuc3JjRmlsZSA9IHNyY0ZpbGU7XG4gIHRoaXMuc291cmNlID0gW107XG59XG5cbkNvZGVHZW4ucHJvdG90eXBlID0ge1xuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiAhdGhpcy5zb3VyY2UubGVuZ3RoO1xuICB9LFxuICBwcmVwZW5kOiBmdW5jdGlvbihzb3VyY2UsIGxvYykge1xuICAgIHRoaXMuc291cmNlLnVuc2hpZnQodGhpcy53cmFwKHNvdXJjZSwgbG9jKSk7XG4gIH0sXG4gIHB1c2g6IGZ1bmN0aW9uKHNvdXJjZSwgbG9jKSB7XG4gICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTtcbiAgfSxcblxuICBtZXJnZTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IHNvdXJjZSA9IHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLmVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgc291cmNlLmFkZChbJyAgJywgbGluZSwgJ1xcbiddKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc291cmNlO1xuICB9LFxuXG4gIGVhY2g6IGZ1bmN0aW9uKGl0ZXIpIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGl0ZXIodGhpcy5zb3VyY2VbaV0pO1xuICAgIH1cbiAgfSxcblxuICBlbXB0eTogZnVuY3Rpb24oKSB7XG4gICAgbGV0IGxvYyA9IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH07XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpO1xuICB9LFxuICB3cmFwOiBmdW5jdGlvbihjaHVuaywgbG9jID0gdGhpcy5jdXJyZW50TG9jYXRpb24gfHwgeyBzdGFydDoge30gfSkge1xuICAgIGlmIChjaHVuayBpbnN0YW5jZW9mIFNvdXJjZU5vZGUpIHtcbiAgICAgIHJldHVybiBjaHVuaztcbiAgICB9XG5cbiAgICBjaHVuayA9IGNhc3RDaHVuayhjaHVuaywgdGhpcywgbG9jKTtcblxuICAgIHJldHVybiBuZXcgU291cmNlTm9kZShcbiAgICAgIGxvYy5zdGFydC5saW5lLFxuICAgICAgbG9jLnN0YXJ0LmNvbHVtbixcbiAgICAgIHRoaXMuc3JjRmlsZSxcbiAgICAgIGNodW5rXG4gICAgKTtcbiAgfSxcblxuICBmdW5jdGlvbkNhbGw6IGZ1bmN0aW9uKGZuLCB0eXBlLCBwYXJhbXMpIHtcbiAgICBwYXJhbXMgPSB0aGlzLmdlbmVyYXRlTGlzdChwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTtcbiAgfSxcblxuICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiAoXG4gICAgICAnXCInICtcbiAgICAgIChzdHIgKyAnJylcbiAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKVxuICAgICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJylcbiAgICAgICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpIC8vIFBlciBFY21hLTI2MiA3LjMgKyA3LjguNFxuICAgICAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5JykgK1xuICAgICAgJ1wiJ1xuICAgICk7XG4gIH0sXG5cbiAgb2JqZWN0TGl0ZXJhbDogZnVuY3Rpb24ob2JqKSB7XG4gICAgbGV0IHBhaXJzID0gW107XG5cbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGNhc3RDaHVuayhvYmpba2V5XSwgdGhpcyk7XG4gICAgICBpZiAodmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHBhaXJzLnB1c2goW3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7XG4gICAgcmV0LnByZXBlbmQoJ3snKTtcbiAgICByZXQuYWRkKCd9Jyk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uKGVudHJpZXMpIHtcbiAgICBsZXQgcmV0ID0gdGhpcy5lbXB0eSgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGVudHJpZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmIChpKSB7XG4gICAgICAgIHJldC5hZGQoJywnKTtcbiAgICAgIH1cblxuICAgICAgcmV0LmFkZChjYXN0Q2h1bmsoZW50cmllc1tpXSwgdGhpcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgZ2VuZXJhdGVBcnJheTogZnVuY3Rpb24oZW50cmllcykge1xuICAgIGxldCByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChlbnRyaWVzKTtcbiAgICByZXQucHJlcGVuZCgnWycpO1xuICAgIHJldC5hZGQoJ10nKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvZGVHZW47XG4iXX0=\n","/**\r\n * You can customize the initial state of the module from the editor initialization\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * keymaps: {\r\n * // Object of keymaps\r\n * defaults: {\r\n * 'your-namespace:keymap-name' {\r\n * keys: '⌘+z, ctrl+z',\r\n * handler: 'some-command-id'\r\n * },\r\n * ...\r\n * }\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const keymaps = editor.Keymaps;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getAll)\r\n * * [remove](#remove)\r\n * * [removeAll](#removeall)\r\n *\r\n * @module Keymaps\r\n */\r\n\r\nimport { isString } from 'underscore';\r\nimport keymaster from 'keymaster';\r\n\r\nexport default () => {\r\n let em;\r\n let config;\r\n const keymaps = {};\r\n const configDef = {\r\n defaults: {\r\n 'core:undo': {\r\n keys: '⌘+z, ctrl+z',\r\n handler: 'core:undo'\r\n },\r\n 'core:redo': {\r\n keys: '⌘+shift+z, ctrl+shift+z',\r\n handler: 'core:redo'\r\n },\r\n 'core:copy': {\r\n keys: '⌘+c, ctrl+c',\r\n handler: 'core:copy'\r\n },\r\n 'core:paste': {\r\n keys: '⌘+v, ctrl+v',\r\n handler: 'core:paste'\r\n },\r\n 'core:component-next': {\r\n keys: 's',\r\n handler: 'core:component-next'\r\n },\r\n 'core:component-prev': {\r\n keys: 'w',\r\n handler: 'core:component-prev'\r\n },\r\n 'core:component-enter': {\r\n keys: 'd',\r\n handler: 'core:component-enter'\r\n },\r\n 'core:component-exit': {\r\n keys: 'a',\r\n handler: 'core:component-exit'\r\n },\r\n 'core:component-delete': {\r\n keys: 'backspace, delete',\r\n handler: 'core:component-delete'\r\n }\r\n }\r\n };\r\n\r\n return {\r\n keymaster,\r\n\r\n name: 'Keymaps',\r\n\r\n /**\r\n * Get module configurations\r\n * @return {Object} Configuration object\r\n */\r\n getConfig() {\r\n return config;\r\n },\r\n\r\n /**\r\n * Initialize module\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(opts = {}) {\r\n config = { ...configDef, ...opts };\r\n em = config.em;\r\n this.em = em;\r\n return this;\r\n },\r\n\r\n onLoad() {\r\n const defKeys = config.defaults;\r\n\r\n for (let id in defKeys) {\r\n const value = defKeys[id];\r\n this.add(id, value.keys, value.handler);\r\n }\r\n },\r\n\r\n /**\r\n * Add new keymap\r\n * @param {string} id Keymap id\r\n * @param {string} keys Keymap keys, eg. `ctrl+a`, `⌘+z, ctrl+z`\r\n * @param {Function|string} handler Keymap handler, might be a function\r\n * @param {Object} [opts={}] Options\r\n * @return {Object} Added keymap\r\n * or just a command id as a string\r\n * @example\r\n * // 'ns' is just a custom namespace\r\n * keymaps.add('ns:my-keymap', '⌘+j, ⌘+u, ctrl+j, alt+u', editor => {\r\n * console.log('do stuff');\r\n * });\r\n * // or\r\n * keymaps.add('ns:my-keymap', '⌘+s, ctrl+s', 'some-gjs-command');\r\n *\r\n * // listen to events\r\n * editor.on('keymap:emit', (id, shortcut, e) => {\r\n * // ...\r\n * })\r\n */\r\n add(id, keys, handler, opts = {}) {\r\n const { em } = this;\r\n const cmd = em.get('Commands');\r\n const editor = em.getEditor();\r\n const canvas = em.get('Canvas');\r\n const keymap = { id, keys, handler };\r\n const pk = keymaps[id];\r\n pk && this.remove(id);\r\n keymaps[id] = keymap;\r\n keymaster(keys, (e, h) => {\r\n // It's safer putting handlers resolution inside the callback\r\n const opt = { event: e, h };\r\n handler = isString(handler) ? cmd.get(handler) : handler;\r\n opts.prevent && canvas.getCanvasView().preventDefault(e);\r\n const ableTorun = !em.isEditing() && !editor.Canvas.isInputFocused();\r\n if (ableTorun || opts.force) {\r\n typeof handler == 'object'\r\n ? handler.run(editor, 0, opt)\r\n : handler(editor, 0, opt);\r\n const args = [id, h.shortcut, e];\r\n em.trigger('keymap:emit', ...args);\r\n em.trigger(`keymap:emit:${id}`, ...args);\r\n }\r\n });\r\n em.trigger('keymap:add', keymap);\r\n return keymap;\r\n },\r\n\r\n /**\r\n * Get the keymap by id\r\n * @param {string} id Keymap id\r\n * @return {Object} Keymap object\r\n * @example\r\n * keymaps.get('ns:my-keymap');\r\n * // -> {keys, handler};\r\n */\r\n get(id) {\r\n return keymaps[id];\r\n },\r\n\r\n /**\r\n * Get all keymaps\r\n * @return {Object}\r\n * @example\r\n * keymaps.getAll();\r\n * // -> {id1: {}, id2: {}};\r\n */\r\n getAll() {\r\n return keymaps;\r\n },\r\n\r\n /**\r\n * Remove the keymap by id\r\n * @param {string} id Keymap id\r\n * @return {Object} Removed keymap\r\n * @example\r\n * keymaps.remove('ns:my-keymap');\r\n * // -> {keys, handler};\r\n */\r\n remove(id) {\r\n const em = this.em;\r\n const keymap = this.get(id);\r\n\r\n if (keymap) {\r\n delete keymaps[id];\r\n keymaster.unbind(keymap.keys);\r\n em && em.trigger('keymap:remove', keymap);\r\n return keymap;\r\n }\r\n },\r\n\r\n /**\r\n * Remove all binded keymaps\r\n * @return {this}\r\n */\r\n removeAll() {\r\n Object.keys(keymaps).forEach(keymap => this.remove(keymap));\r\n return this;\r\n }\r\n };\r\n};\r\n","/**\r\n * This module allows to manage the stack of changes applied in canvas.\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const um = editor.UndoManager;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [add](#add)\r\n * * [remove](#remove)\r\n * * [removeAll](#removeall)\r\n * * [start](#start)\r\n * * [stop](#stop)\r\n * * [undo](#undo)\r\n * * [undoAll](#undoall)\r\n * * [redo](#redo)\r\n * * [redoAll](#redoall)\r\n * * [hasUndo](#hasundo)\r\n * * [hasRedo](#hasredo)\r\n * * [getStack](#getstack)\r\n * * [clear](#clear)\r\n *\r\n * @module UndoManager\r\n */\r\n\r\nimport UndoManager from 'backbone-undo';\r\n\r\nexport default () => {\r\n let em;\r\n let um;\r\n let config;\r\n let beforeCache;\r\n const configDef = {};\r\n\r\n return {\r\n name: 'UndoManager',\r\n\r\n /**\r\n * Initialize module\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(opts = {}) {\r\n config = { ...opts, ...configDef };\r\n em = config.em;\r\n this.em = em;\r\n um = new UndoManager({ track: true, register: [] });\r\n um.changeUndoType('change', { condition: false });\r\n um.changeUndoType('add', {\r\n on(model, collection, options = {}) {\r\n if (options.avoidStore) return;\r\n return {\r\n object: collection,\r\n before: undefined,\r\n after: model,\r\n options: { ...options }\r\n };\r\n }\r\n });\r\n um.changeUndoType('remove', {\r\n on(model, collection, options = {}) {\r\n if (options.avoidStore) return;\r\n return {\r\n object: collection,\r\n before: model,\r\n after: undefined,\r\n options: { ...options }\r\n };\r\n }\r\n });\r\n const customUndoType = {\r\n on(object, value, opt = {}) {\r\n !beforeCache && (beforeCache = object.previousAttributes());\r\n\r\n if (opt.avoidStore) {\r\n return;\r\n } else {\r\n const result = {\r\n object,\r\n before: beforeCache,\r\n after: object.toJSON()\r\n };\r\n beforeCache = null;\r\n return result;\r\n }\r\n },\r\n\r\n undo(model, bf, af, opt) {\r\n model.set(bf);\r\n },\r\n\r\n redo(model, bf, af, opt) {\r\n model.set(af);\r\n }\r\n };\r\n\r\n const events = ['style', 'attributes', 'content', 'src'];\r\n events.forEach(ev => um.addUndoType(`change:${ev}`, customUndoType));\r\n um.on('undo redo', () =>\r\n em.trigger('component:toggled change:canvasOffset')\r\n );\r\n ['undo', 'redo'].forEach(ev => um.on(ev, () => em.trigger(ev)));\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get module configurations\r\n * @return {Object} Configuration object\r\n * @example\r\n * const config = um.getConfig();\r\n * // { ... }\r\n */\r\n getConfig() {\r\n return config;\r\n },\r\n\r\n /**\r\n * Add an entity (Model/Collection) to track\r\n * Note: New Components and CSSRules will be added automatically\r\n * @param {Model|Collection} entity Entity to track\r\n * @return {this}\r\n * @example\r\n * um.add(someModelOrCollection);\r\n */\r\n add(entity) {\r\n um.register(entity);\r\n return this;\r\n },\r\n\r\n /**\r\n * Remove and stop tracking the entity (Model/Collection)\r\n * @param {Model|Collection} entity Entity to remove\r\n * @return {this}\r\n * @example\r\n * um.remove(someModelOrCollection);\r\n */\r\n remove(entity) {\r\n um.unregister(entity);\r\n return this;\r\n },\r\n\r\n /**\r\n * Remove all entities\r\n * @return {this}\r\n * @example\r\n * um.removeAll();\r\n */\r\n removeAll() {\r\n um.unregisterAll();\r\n return this;\r\n },\r\n\r\n /**\r\n * Start/resume tracking changes\r\n * @return {this}\r\n * @example\r\n * um.start();\r\n */\r\n start() {\r\n um.startTracking();\r\n return this;\r\n },\r\n\r\n /**\r\n * Stop tracking changes\r\n * @return {this}\r\n * @example\r\n * um.stop();\r\n */\r\n stop() {\r\n um.stopTracking();\r\n return this;\r\n },\r\n\r\n /**\r\n * Undo last change\r\n * @return {this}\r\n * @example\r\n * um.undo();\r\n */\r\n undo() {\r\n !em.isEditing() && um.undo(1);\r\n return this;\r\n },\r\n\r\n /**\r\n * Undo all changes\r\n * @return {this}\r\n * @example\r\n * um.undoAll();\r\n */\r\n undoAll() {\r\n um.undoAll();\r\n return this;\r\n },\r\n\r\n /**\r\n * Redo last change\r\n * @return {this}\r\n * @example\r\n * um.redo();\r\n */\r\n redo() {\r\n !em.isEditing() && um.redo(1);\r\n return this;\r\n },\r\n\r\n /**\r\n * Redo all changes\r\n * @return {this}\r\n * @example\r\n * um.redoAll();\r\n */\r\n redoAll() {\r\n um.redoAll();\r\n return this;\r\n },\r\n\r\n /**\r\n * Checks if exists an available undo\r\n * @return {Boolean}\r\n * @example\r\n * um.hasUndo();\r\n */\r\n hasUndo() {\r\n return um.isAvailable('undo');\r\n },\r\n\r\n /**\r\n * Checks if exists an available redo\r\n * @return {Boolean}\r\n * @example\r\n * um.hasRedo();\r\n */\r\n hasRedo() {\r\n return um.isAvailable('redo');\r\n },\r\n\r\n /**\r\n * Get stack of changes\r\n * @return {Collection}\r\n * @example\r\n * const stack = um.getStack();\r\n * stack.each(item => ...);\r\n */\r\n getStack() {\r\n return um.stack;\r\n },\r\n\r\n /**\r\n * Clear the stack\r\n * @return {this}\r\n * @example\r\n * um.clear();\r\n */\r\n clear() {\r\n um.clear();\r\n return this;\r\n },\r\n\r\n getInstance() {\r\n return um;\r\n }\r\n };\r\n};\r\n","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","(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 ` : '';\r\n return html;\r\n },\r\n\r\n /**\r\n * Returns CSS built inside canvas\r\n * @param {Object} [opts={}] Options\r\n * @return {string} CSS string\r\n * @private\r\n */\r\n getCss(opts = {}) {\r\n const config = this.config;\r\n const wrapperIsBody = config.wrapperIsBody;\r\n const avoidProt = opts.avoidProtected;\r\n const keepUnusedStyles = !isUndefined(opts.keepUnusedStyles)\r\n ? opts.keepUnusedStyles\r\n : config.keepUnusedStyles;\r\n const cssc = this.get('CssComposer');\r\n const wrp = this.get('DomComponents').getComponent();\r\n const protCss = !avoidProt ? config.protectedCss : '';\r\n\r\n return (\r\n protCss +\r\n this.get('CodeManager').getCode(wrp, 'css', {\r\n cssc,\r\n wrapperIsBody,\r\n keepUnusedStyles\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Returns JS of all components\r\n * @return {string} JS string\r\n * @private\r\n */\r\n getJs() {\r\n var wrp = this.get('DomComponents').getWrapper();\r\n return this.get('CodeManager')\r\n .getCode(wrp, 'js')\r\n .trim();\r\n },\r\n\r\n /**\r\n * Store data to the current storage\r\n * @param {Function} clb Callback function\r\n * @return {Object} Stored data\r\n * @private\r\n */\r\n store(clb) {\r\n var sm = this.get('StorageManager');\r\n var store = {};\r\n if (!sm) return;\r\n\r\n // Fetch what to store\r\n this.get('storables').forEach(m => {\r\n var obj = m.store(1);\r\n for (var el in obj) store[el] = obj[el];\r\n });\r\n\r\n sm.store(store, res => {\r\n clb && clb(res);\r\n this.set('changesCount', 0);\r\n this.trigger('storage:store', store);\r\n });\r\n\r\n return store;\r\n },\r\n\r\n /**\r\n * Load data from the current storage\r\n * @param {Function} clb Callback function\r\n * @private\r\n */\r\n load(clb = null) {\r\n this.getCacheLoad(1, res => {\r\n this.get('storables').forEach(module => module.load(res));\r\n clb && clb(res);\r\n });\r\n },\r\n\r\n /**\r\n * Returns cached load\r\n * @param {Boolean} force Force to reload\r\n * @param {Function} clb Callback function\r\n * @return {Object}\r\n * @private\r\n */\r\n getCacheLoad(force, clb) {\r\n var f = force ? 1 : 0;\r\n if (this.cacheLoad && !f) return this.cacheLoad;\r\n var sm = this.get('StorageManager');\r\n var load = [];\r\n\r\n if (!sm) return {};\r\n\r\n this.get('storables').forEach(m => {\r\n var key = m.storageKey;\r\n key = typeof key === 'function' ? key() : key;\r\n var keys = key instanceof Array ? key : [key];\r\n keys.forEach(k => {\r\n load.push(k);\r\n });\r\n });\r\n\r\n sm.load(load, res => {\r\n this.cacheLoad = res;\r\n clb && clb(res);\r\n setTimeout(() => this.trigger('storage:load', res), 0);\r\n });\r\n },\r\n\r\n /**\r\n * Returns device model by name\r\n * @return {Device|null}\r\n * @private\r\n */\r\n getDeviceModel() {\r\n var name = this.get('device');\r\n return this.get('DeviceManager').get(name);\r\n },\r\n\r\n /**\r\n * Run default command if setted\r\n * @param {Object} [opts={}] Options\r\n * @private\r\n */\r\n runDefault(opts = {}) {\r\n var command = this.get('Commands').get(this.config.defaultCommand);\r\n if (!command || this.defaultRunning) return;\r\n command.stop(this, this, opts);\r\n command.run(this, this, opts);\r\n this.defaultRunning = 1;\r\n },\r\n\r\n /**\r\n * Stop default command\r\n * @param {Object} [opts={}] Options\r\n * @private\r\n */\r\n stopDefault(opts = {}) {\r\n var command = this.get('Commands').get(this.config.defaultCommand);\r\n if (!command) return;\r\n command.stop(this, this, opts);\r\n this.defaultRunning = 0;\r\n },\r\n\r\n /**\r\n * Update canvas dimensions and refresh data useful for tools positioning\r\n * @private\r\n */\r\n refreshCanvas() {\r\n this.set('canvasOffset', null);\r\n this.set('canvasOffset', this.get('Canvas').getOffset());\r\n },\r\n\r\n /**\r\n * Clear all selected stuf inside the window, sometimes is useful to call before\r\n * doing some dragging opearation\r\n * @param {Window} win If not passed the current one will be used\r\n * @private\r\n */\r\n clearSelection(win) {\r\n var w = win || window;\r\n w.getSelection().removeAllRanges();\r\n },\r\n\r\n /**\r\n * Get the current media text\r\n * @return {string}\r\n */\r\n getCurrentMedia() {\r\n const config = this.config;\r\n const device = this.getDeviceModel();\r\n const condition = config.mediaCondition;\r\n const preview = config.devicePreviewMode;\r\n const width = device && device.get('widthMedia');\r\n return device && width && !preview ? `(${condition}: ${width})` : '';\r\n },\r\n\r\n /**\r\n * Return the component wrapper\r\n * @return {Component}\r\n */\r\n getWrapper() {\r\n return this.get('DomComponents').getWrapper();\r\n },\r\n\r\n /**\r\n * Return the count of changes made to the content and not yet stored.\r\n * This count resets at any `store()`\r\n * @return {number}\r\n */\r\n getDirtyCount() {\r\n return this.get('changesCount');\r\n },\r\n\r\n getZoomDecimal() {\r\n return this.get('Canvas').getZoomDecimal();\r\n },\r\n\r\n setDragMode(value) {\r\n return this.set('dmode', value);\r\n },\r\n\r\n /**\r\n * Returns true if the editor is in absolute mode\r\n * @returns {Boolean}\r\n */\r\n inAbsoluteMode() {\r\n return this.get('dmode') === 'absolute';\r\n },\r\n\r\n /**\r\n * Destroy editor\r\n */\r\n destroyAll() {\r\n const {\r\n DomComponents,\r\n CssComposer,\r\n UndoManager,\r\n Panels,\r\n Canvas,\r\n Keymaps\r\n } = this.attributes;\r\n DomComponents.clear();\r\n CssComposer.clear();\r\n UndoManager.clear().removeAll();\r\n Panels.getPanels().reset();\r\n Canvas.getCanvasView().remove();\r\n Keymaps.removeAll();\r\n this.view.remove();\r\n this.stopListening();\r\n $(this.config.el)\r\n .empty()\r\n .attr(this.attrsOrig);\r\n },\r\n\r\n setEditing(value) {\r\n this.set('editing', value);\r\n return this;\r\n },\r\n\r\n isEditing() {\r\n return !!this.get('editing');\r\n },\r\n\r\n log(msg, opts = {}) {\r\n const { ns, level = 'debug' } = opts;\r\n this.trigger('log', msg, opts);\r\n level && this.trigger(`log:${level}`, msg, opts);\r\n\r\n if (ns) {\r\n const logNs = `log-${ns}`;\r\n this.trigger(logNs, msg, opts);\r\n level && this.trigger(`${logNs}:${level}`, msg, opts);\r\n }\r\n },\r\n\r\n logInfo(msg, opts) {\r\n this.log(msg, { ...opts, level: 'info' });\r\n },\r\n\r\n logWarning(msg, opts) {\r\n this.log(msg, { ...opts, level: 'warning' });\r\n },\r\n\r\n logError(msg, opts) {\r\n this.log(msg, { ...opts, level: 'error' });\r\n },\r\n\r\n /**\r\n * Set/get data from the HTMLElement\r\n * @param {HTMLElement} el\r\n * @param {string} name Data name\r\n * @param {any} value Date value\r\n * @return {any}\r\n * @private\r\n */\r\n data(el, name, value) {\r\n const varName = '_gjs-data';\r\n\r\n if (!el[varName]) {\r\n el[varName] = {};\r\n }\r\n\r\n if (isUndefined(value)) {\r\n return el[varName][name];\r\n } else {\r\n el[varName][name] = value;\r\n }\r\n }\r\n});\r\n","import { isObject, isString, each, isUndefined } from 'underscore';\r\n\r\nexport default ({ $, Backbone }) => {\r\n if (Backbone) {\r\n const ViewProt = Backbone.View.prototype;\r\n const eventNsMap = {};\r\n ViewProt.eventNsMap = eventNsMap;\r\n\r\n ViewProt.delegate = function(eventName, selector, listener) {\r\n const vid = '.delegateEvents' + this.cid;\r\n this.$el.on(eventName, selector, listener);\r\n //return this;\r\n let eventMap = eventNsMap[vid];\r\n\r\n if (!eventMap) {\r\n eventMap = [];\r\n eventNsMap[vid] = eventMap;\r\n }\r\n\r\n eventMap.push({ eventName, selector, listener });\r\n return this;\r\n };\r\n\r\n ViewProt.undelegateEvents = function() {\r\n const vid = '.delegateEvents' + this.cid;\r\n if (this.$el) {\r\n //this.$el.off(); return this;\r\n let eventMap = eventNsMap[vid];\r\n\r\n if (eventMap) {\r\n eventMap.forEach(({ eventName, selector, listener }) => {\r\n this.$el.off(eventName);\r\n });\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n ViewProt.undelegate = function(ev, sel, list) {\r\n const vid = '.delegateEvents' + this.cid;\r\n //this.$el.off(ev, sel, list); return this;\r\n let eventMap = eventNsMap[vid];\r\n\r\n if (eventMap) {\r\n eventMap.forEach(({ eventName, selector, listener }) => {\r\n if (eventName == ev && selector == sel) {\r\n this.$el.off(eventName);\r\n }\r\n });\r\n }\r\n\r\n return this;\r\n };\r\n }\r\n\r\n if ($ && $.prototype.constructor.name !== 'jQuery') {\r\n const fn = $.fn;\r\n\r\n const splitNamespace = function(name) {\r\n const namespaceArray = name.split('.');\r\n return name.indexOf('.') !== 0\r\n ? [namespaceArray[0], namespaceArray.slice(1)]\r\n : [null, namespaceArray];\r\n };\r\n\r\n const on = $.prototype.on;\r\n const off = $.prototype.off;\r\n const trigger = $.prototype.trigger;\r\n const offset = $.prototype.offset;\r\n const getEvents = eventName => eventName.split(/[,\\s]+/g);\r\n const getNamespaces = eventName => eventName.split('.');\r\n\r\n fn.on = function(eventName, delegate, callback, runOnce) {\r\n if (typeof eventName == 'string') {\r\n const events = getEvents(eventName);\r\n\r\n if (events.length == 1) {\r\n eventName = events[0];\r\n let namespaces = getNamespaces(eventName);\r\n\r\n if (eventName.indexOf('.') !== 0) {\r\n eventName = namespaces[0];\r\n }\r\n\r\n namespaces = namespaces.slice(1);\r\n\r\n if (namespaces.length) {\r\n //console.log('Found event with namespaces', namespaces, eventName, delegate, this);\r\n const cashNs = this.data('_cashNs') || [];\r\n // cashNs[namespace]\r\n this.data('_cashNs', namespaces); // for each ns need to store '.store' => eventName, delegate, callback\r\n }\r\n\r\n return on.call(this, eventName, delegate, callback, runOnce);\r\n } else {\r\n events.forEach(eventName =>\r\n this.on(eventName, delegate, callback, runOnce)\r\n );\r\n return this;\r\n }\r\n } else {\r\n return on.call(this, eventName, delegate, callback, runOnce);\r\n }\r\n };\r\n\r\n fn.off = function(eventName, callback) {\r\n if (typeof eventName == 'string') {\r\n const events = getEvents(eventName);\r\n\r\n if (events.length == 1) {\r\n eventName = events[0];\r\n let namespaces = getNamespaces(eventName);\r\n\r\n if (eventName.indexOf('.') !== 0) {\r\n eventName = namespaces[0];\r\n }\r\n\r\n namespaces = namespaces.slice(1);\r\n\r\n if (namespaces.length) {\r\n // Have to off only with the same namespace\r\n }\r\n\r\n return off.call(this, eventName, callback);\r\n } else {\r\n events.forEach(eventName => this.off(eventName, callback));\r\n return this;\r\n }\r\n } else {\r\n return off.call(this, eventName, callback);\r\n }\r\n };\r\n\r\n fn.trigger = function(eventName, data) {\r\n if (eventName instanceof $.Event) {\r\n return this.trigger(eventName.type, data);\r\n }\r\n\r\n if (typeof eventName == 'string') {\r\n const events = getEvents(eventName);\r\n\r\n if (events.length == 1) {\r\n eventName = events[0];\r\n let namespaces = getNamespaces(eventName);\r\n\r\n if (eventName.indexOf('.') !== 0) {\r\n eventName = namespaces[0];\r\n }\r\n\r\n namespaces = namespaces.slice(1);\r\n\r\n if (namespaces.length) {\r\n // have to trigger with same namespaces and eventName\r\n }\r\n\r\n return trigger.call(this, eventName, data);\r\n } else {\r\n events.forEach(eventName => this.trigger(eventName, data));\r\n return this;\r\n }\r\n } else {\r\n return trigger.call(this, eventName, data);\r\n }\r\n };\r\n\r\n fn.hide = function() {\r\n return this.css('display', 'none');\r\n };\r\n\r\n fn.show = function() {\r\n return this.css('display', 'block');\r\n };\r\n\r\n fn.focus = function() {\r\n const el = this.get(0);\r\n el && el.focus();\r\n return this;\r\n };\r\n\r\n // For SVGs in IE\r\n (fn.removeClass = function(c) {\r\n if (!arguments.length) {\r\n return this.attr('class', '');\r\n }\r\n const classes = isString(c) && c.match(/\\S+/g);\r\n return classes\r\n ? this.each(function(el) {\r\n each(classes, function(c) {\r\n if (el.classList) {\r\n el.classList.remove(c);\r\n } else {\r\n const val = el.className;\r\n const bval = el.className.baseVal;\r\n\r\n if (!isUndefined(bval)) {\r\n val.baseVal = bval.replace(c, '');\r\n } else {\r\n el.className = val.replace(c, '');\r\n }\r\n }\r\n });\r\n })\r\n : this;\r\n }),\r\n (fn.remove = function() {\r\n return this.each(node => {\r\n return node.parentNode && node.parentNode.removeChild(node);\r\n });\r\n }),\r\n // For spectrum compatibility\r\n (fn.bind = function(ev, h) {\r\n return this.on(ev, h);\r\n });\r\n\r\n fn.unbind = function(ev, h) {\r\n if (isObject(ev)) {\r\n for (let name in ev) {\r\n ev.hasOwnProperty(name) && this.off(name, ev[name]);\r\n }\r\n\r\n return this;\r\n } else {\r\n return this.off(ev, h);\r\n }\r\n };\r\n\r\n fn.click = function(h) {\r\n return h ? this.on('click', h) : this.trigger('click');\r\n };\r\n\r\n fn.change = function(h) {\r\n return h ? this.on('change', h) : this.trigger('change');\r\n };\r\n\r\n fn.keydown = function(h) {\r\n return h ? this.on('keydown', h) : this.trigger('keydown');\r\n };\r\n\r\n fn.delegate = function(selector, events, data, handler) {\r\n if (!handler) {\r\n handler = data;\r\n }\r\n\r\n return this.on(events, selector, function(e) {\r\n e.data = data;\r\n handler(e);\r\n });\r\n };\r\n\r\n fn.scrollLeft = function() {\r\n let el = this.get(0);\r\n el = el.nodeType == 9 ? el.defaultView : el;\r\n let win = el instanceof Window ? el : null;\r\n return win ? win.pageXOffset : el.scrollLeft || 0;\r\n };\r\n\r\n fn.scrollTop = function() {\r\n let el = this.get(0);\r\n el = el.nodeType == 9 ? el.defaultView : el;\r\n let win = el instanceof Window ? el : null;\r\n return win ? win.pageYOffset : el.scrollTop || 0;\r\n };\r\n\r\n fn.offset = function(coords) {\r\n let top, left;\r\n\r\n if (coords) {\r\n top = coords.top;\r\n left = coords.left;\r\n }\r\n\r\n if (typeof top != 'undefined') {\r\n this.css('top', `${top}px`);\r\n }\r\n if (typeof left != 'undefined') {\r\n this.css('left', `${left}px`);\r\n }\r\n\r\n return offset.call(this);\r\n };\r\n\r\n $.map = function(items, clb) {\r\n const ar = [];\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n ar.push(clb(items[i], i));\r\n }\r\n\r\n return ar;\r\n };\r\n\r\n const indexOf = Array.prototype.indexOf;\r\n\r\n $.inArray = function(val, arr, i) {\r\n return arr == null ? -1 : indexOf.call(arr, val, i);\r\n };\r\n\r\n $.Event = function(src, props) {\r\n if (!(this instanceof $.Event)) {\r\n return new $.Event(src, props);\r\n }\r\n\r\n this.type = src;\r\n this.isDefaultPrevented = () => false;\r\n };\r\n }\r\n};\r\n","import Backbone from 'backbone';\r\nconst $ = Backbone.$;\r\n\r\nexport default Backbone.View.extend({\r\n initialize() {\r\n const { model } = this;\r\n model.view = this;\r\n this.conf = model.config;\r\n this.pn = model.get('Panels');\r\n model.on('loaded', () => {\r\n this.pn.active();\r\n this.pn.disableButtons();\r\n model.runDefault();\r\n setTimeout(() => model.trigger('load', model.get('Editor')));\r\n });\r\n },\r\n\r\n render() {\r\n const model = this.model;\r\n const el = this.$el;\r\n const conf = this.conf;\r\n const contEl = $(conf.el || `body ${conf.container}`);\r\n const pfx = conf.stylePrefix;\r\n el.empty();\r\n\r\n if (conf.width) contEl.css('width', conf.width);\r\n\r\n if (conf.height) contEl.css('height', conf.height);\r\n\r\n el.append(model.get('Canvas').render());\r\n el.append(this.pn.render());\r\n el.attr('class', `${pfx}editor ${pfx}one-bg ${pfx}two-color`);\r\n contEl\r\n .addClass(`${pfx}editor-cont`)\r\n .empty()\r\n .append(el);\r\n\r\n return this;\r\n }\r\n});\r\n","/**\r\n * Editor contains the top level API which you'll probably use to customize the editor or extend it with plugins.\r\n * You get the Editor instance on init method and you can pass options via its [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js)\r\n *\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * // options\r\n * });\r\n * ```\r\n *\r\n * ## Available Events\r\n *\r\n * You can make use of available events in this way\r\n * ```js\r\n * editor.on('EVENT-NAME', (some, argument) => {\r\n * // do something\r\n * })\r\n * ```\r\n *\r\n * ### Components\r\n * * `component:create` - Component is created (only the model, is not yet mounted in the canvas), called after the init() method\r\n * * `component:mount` - Component is mounted to an element and rendered in canvas\r\n * * `component:add` - Triggered when a new component is added to the editor, the model is passed as an argument to the callback\r\n * * `component:remove` - Triggered when a component is removed, the model is passed as an argument to the callback\r\n * * `component:clone` - Triggered when a component is cloned, the new model is passed as an argument to the callback\r\n * * `component:update` - Triggered when a component is updated (moved, styled, etc.), the model is passed as an argument to the callback\r\n * * `component:update:{propertyName}` - Listen any property change, the model is passed as an argument to the callback\r\n * * `component:styleUpdate` - Triggered when the style of the component is updated, the model is passed as an argument to the callback\r\n * * `component:styleUpdate:{propertyName}` - Listen for a specific style property change, the model is passed as an argument to the callback\r\n * * `component:selected` - New component selected, the selected model is passed as an argument to the callback\r\n * * `component:deselected` - Component deselected, the deselected model is passed as an argument to the callback\r\n * * `component:toggled` - Component selection changed, toggled model is passed as an argument to the callback\r\n * * `component:type:add` - New component type added, the new type is passed as an argument to the callback\r\n * * `component:type:update` - Component type updated, the updated type is passed as an argument to the callback\r\n * ### Blocks\r\n * * `block:add` - New block added\r\n * * `block:remove` - Block removed\r\n * * `block:drag:start` - Started dragging block, model of the block is passed as an argument\r\n * * `block:drag` - Dragging block, the block's model and the drag event are passed as arguments\r\n * * `block:drag:stop` - Dragging of the block is stopped. As agruments for the callback you get, the dropped component model (if dropped successfully) and the model of the block\r\n * ### Assets\r\n * * `asset:add` - New asset added\r\n * * `asset:remove` - Asset removed\r\n * * `asset:upload:start` - Before the upload is started\r\n * * `asset:upload:end` - After the upload is ended\r\n * * `asset:upload:error` - On any error in upload, passes the error as an argument\r\n * * `asset:upload:response` - On upload response, passes the result as an argument\r\n * ### Keymaps\r\n * * `keymap:add` - New keymap added. The new keyamp object is passed as an argument\r\n * * `keymap:remove` - Keymap removed. The removed keyamp object is passed as an argument\r\n * * `keymap:emit` - Some keymap emitted, in arguments you get keymapId, shortcutUsed, Event\r\n * * `keymap:emit:{keymapId}` - `keymapId` emitted, in arguments you get keymapId, shortcutUsed, Event\r\n * ### Style Manager\r\n * * `styleManager:update:target` - The target (Component or CSSRule) is changed\r\n * * `styleManager:change` - Triggered on style property change from new selected component, the view of the property is passed as an argument to the callback\r\n * * `styleManager:change:{propertyName}` - As above but for a specific style property\r\n * ### Storages\r\n * * `storage:start` - Before the storage request is started\r\n * * `storage:start:store` - Before the store request. The object to store is passed as an argumnet (which you can edit)\r\n * * `storage:start:load` - Before the load request. Items to load are passed as an argumnet (which you can edit)\r\n * * `storage:load` - Triggered when something was loaded from the storage, loaded object passed as an argumnet\r\n * * `storage:store` - Triggered when something is stored to the storage, stored object passed as an argumnet\r\n * * `storage:end` - After the storage request is ended\r\n * * `storage:end:store` - After the store request\r\n * * `storage:end:load` - After the load request\r\n * * `storage:error` - On any error on storage request, passes the error as an argument\r\n * * `storage:error:store` - Error on store request, passes the error as an argument\r\n * * `storage:error:load` - Error on load request, passes the error as an argument\r\n * ### Canvas\r\n * * `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument\r\n * * `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument\r\n * * `canvas:drop` - Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments\r\n * * `canvas:dragend` - When a drag operation is ended, `DataTransfer` instance passed as an argument\r\n * * `canvas:dragdata` - On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments.\r\n * By changing `result.content` you're able to customize what is dropped\r\n * ### Selectors\r\n * * `selector:add` - Triggers when a new selector/class is created\r\n * ### RTE\r\n * * `rte:enable` - RTE enabled. The view, on which RTE is enabled, is passed as an argument\r\n * * `rte:disable` - RTE disabled. The view, on which RTE is disabled, is passed as an argument\r\n * ### Modal\r\n * * `modal:open` - Modal is opened\r\n * * `modal:close` - Modal is closed\r\n * ### Commands\r\n * * `run:{commandName}` - Triggered when some command is called to run (eg. editor.runCommand('preview'))\r\n * * `stop:{commandName}` - Triggered when some command is called to stop (eg. editor.stopCommand('preview'))\r\n * * `run:{commandName}:before` - Triggered before the command is called\r\n * * `stop:{commandName}:before` - Triggered before the command is called to stop\r\n * * `abort:{commandName}` - Triggered when the command execution is aborted (`editor.on(`run:preview:before`, opts => opts.abort = 1);`)\r\n * * `run` - Triggered on run of any command. The id and the result are passed as arguments to the callback\r\n * * `stop` - Triggered on stop of any command. The id and the result are passed as arguments to the callback\r\n * ### General\r\n * * `canvasScroll` - Canvas is scrolled\r\n * * `update` - The structure of the template is updated (its HTML/CSS)\r\n * * `undo` - Undo executed\r\n * * `redo` - Redo executed\r\n * * `load` - Editor is loaded\r\n *\r\n * @module Editor\r\n */\r\nimport $ from 'cash-dom';\r\nimport defaults from './config/config';\r\nimport EditorModel from './model/Editor';\r\nimport EditorView from './view/EditorView';\r\n\r\nexport default (config = {}) => {\r\n const c = {\r\n ...defaults,\r\n ...config\r\n };\r\n\r\n c.pStylePrefix = c.stylePrefix;\r\n var em = new EditorModel(c);\r\n var editorView = new EditorView({\r\n model: em,\r\n config: c\r\n });\r\n\r\n return {\r\n $,\r\n\r\n /**\r\n * @property {EditorModel}\r\n * @private\r\n */\r\n editor: em,\r\n\r\n /**\r\n * @property {DomComponents}\r\n * @private\r\n */\r\n DomComponents: em.get('DomComponents'),\r\n\r\n /**\r\n * @property {LayerManager}\r\n * @private\r\n */\r\n LayerManager: em.get('LayerManager'),\r\n\r\n /**\r\n * @property {CssComposer}\r\n * @private\r\n */\r\n CssComposer: em.get('CssComposer'),\r\n\r\n /**\r\n * @property {StorageManager}\r\n * @private\r\n */\r\n StorageManager: em.get('StorageManager'),\r\n\r\n /**\r\n * @property {AssetManager}\r\n * @private\r\n */\r\n AssetManager: em.get('AssetManager'),\r\n\r\n /**\r\n * @property {BlockManager}\r\n * @private\r\n */\r\n BlockManager: em.get('BlockManager'),\r\n\r\n /**\r\n * @property {TraitManager}\r\n * @private\r\n */\r\n TraitManager: em.get('TraitManager'),\r\n\r\n /**\r\n * @property {SelectorManager}\r\n * @private\r\n */\r\n SelectorManager: em.get('SelectorManager'),\r\n\r\n /**\r\n * @property {CodeManager}\r\n * @private\r\n */\r\n CodeManager: em.get('CodeManager'),\r\n\r\n /**\r\n * @property {Commands}\r\n * @private\r\n */\r\n Commands: em.get('Commands'),\r\n\r\n /**\r\n * @property {Keymaps}\r\n * @private\r\n */\r\n Keymaps: em.get('Keymaps'),\r\n\r\n /**\r\n * @property {Modal}\r\n * @private\r\n */\r\n Modal: em.get('Modal'),\r\n\r\n /**\r\n * @property {Panels}\r\n * @private\r\n */\r\n Panels: em.get('Panels'),\r\n\r\n /**\r\n * @property {StyleManager}\r\n * @private\r\n */\r\n StyleManager: em.get('StyleManager'),\r\n\r\n /**\r\n * @property {Canvas}\r\n * @private\r\n */\r\n Canvas: em.get('Canvas'),\r\n\r\n /**\r\n * @property {UndoManager}\r\n * @private\r\n */\r\n UndoManager: em.get('UndoManager'),\r\n\r\n /**\r\n * @property {DeviceManager}\r\n * @private\r\n */\r\n DeviceManager: em.get('DeviceManager'),\r\n\r\n /**\r\n * @property {ControlManager}\r\n * @private\r\n */\r\n ControlManager: em.get('ControlManager'),\r\n\r\n /**\r\n * @property {RichTextEditor}\r\n * @private\r\n */\r\n RichTextEditor: em.get('RichTextEditor'),\r\n\r\n /**\r\n * @property {Parser}\r\n * @private\r\n */\r\n Parser: em.get('Parser'),\r\n\r\n /**\r\n * @property {Utils}\r\n * @private\r\n */\r\n Utils: em.get('Utils'),\r\n\r\n /**\r\n * @property {Utils}\r\n * @private\r\n */\r\n Config: em.get('Config'),\r\n\r\n /**\r\n * Initialize editor model\r\n * @return {this}\r\n * @private\r\n */\r\n init() {\r\n em.init(this);\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns configuration object\r\n * @param {string} [prop] Property name\r\n * @return {any} Returns the configuration object or\r\n * the value of the specified property\r\n */\r\n getConfig(prop) {\r\n return em.getConfig(prop);\r\n },\r\n\r\n /**\r\n * Returns HTML built inside canvas\r\n * @return {string} HTML string\r\n */\r\n getHtml(opts) {\r\n return em.getHtml(opts);\r\n },\r\n\r\n /**\r\n * Returns CSS built inside canvas\r\n * @param {Object} [opts={}] Options\r\n * @param {Boolean} [opts.avoidProtected=false] Don't include protected CSS\r\n * @return {string} CSS string\r\n */\r\n getCss(opts) {\r\n return em.getCss(opts);\r\n },\r\n\r\n /**\r\n * Returns JS of all components\r\n * @return {string} JS string\r\n */\r\n getJs() {\r\n return em.getJs();\r\n },\r\n\r\n /**\r\n * Return the complete tree of components. Use `getWrapper` to include also the wrapper\r\n * @return {Components}\r\n */\r\n getComponents() {\r\n return em.get('DomComponents').getComponents();\r\n },\r\n\r\n /**\r\n * Return the wrapper and its all components\r\n * @return {Component}\r\n */\r\n getWrapper() {\r\n return em.get('DomComponents').getWrapper();\r\n },\r\n\r\n /**\r\n * Set components inside editor's canvas. This method overrides actual components\r\n * @param {Array|Object|string} components HTML string or components model\r\n * @return {this}\r\n * @example\r\n * editor.setComponents('
    New component
    ');\r\n * // or\r\n * editor.setComponents({\r\n * type: 'text',\r\n * classes:['cls'],\r\n * content: 'New component'\r\n * });\r\n */\r\n setComponents(components) {\r\n em.setComponents(components);\r\n return this;\r\n },\r\n\r\n /**\r\n * Add components\r\n * @param {Array|Object|string} components HTML string or components model\r\n * @param {Object} opts Options\r\n * @param {Boolean} [opts.avoidUpdateStyle=false] If the HTML string contains styles,\r\n * by default, they will be created and, if already exist, updated. When this option\r\n * is true, styles already created will not be updated.\r\n * @return {Array}\r\n * @example\r\n * editor.addComponents('
    New component
    ');\r\n * // or\r\n * editor.addComponents({\r\n * type: 'text',\r\n * classes:['cls'],\r\n * content: 'New component'\r\n * });\r\n */\r\n addComponents(components, opts) {\r\n return this.getWrapper().append(components, opts);\r\n },\r\n\r\n /**\r\n * Returns style in JSON format object\r\n * @return {Object}\r\n */\r\n getStyle() {\r\n return em.get('CssComposer').getAll();\r\n },\r\n\r\n /**\r\n * Set style inside editor's canvas. This method overrides actual style\r\n * @param {Array|Object|string} style CSS string or style model\r\n * @return {this}\r\n * @example\r\n * editor.setStyle('.cls{color: red}');\r\n * //or\r\n * editor.setStyle({\r\n * selectors: ['cls']\r\n * style: { color: 'red' }\r\n * });\r\n */\r\n setStyle(style) {\r\n em.setStyle(style);\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns the last selected component, if there is one\r\n * @return {Model}\r\n */\r\n getSelected() {\r\n return em.getSelected();\r\n },\r\n\r\n /**\r\n * Returns an array of all selected components\r\n * @return {Array}\r\n */\r\n getSelectedAll() {\r\n return em.getSelectedAll();\r\n },\r\n\r\n /**\r\n * Get a stylable entity from the selected component.\r\n * If you select a component without classes the entity is the Component\r\n * itself and all changes will go inside its 'style' attribute. Otherwise,\r\n * if the selected component has one or more classes, the function will\r\n * return the corresponding CSS Rule\r\n * @return {Model}\r\n */\r\n getSelectedToStyle() {\r\n let selected = em.getSelected();\r\n\r\n if (selected) {\r\n return this.StyleManager.getModelToStyle(selected);\r\n }\r\n },\r\n\r\n /**\r\n * Select a component\r\n * @param {Component|HTMLElement} el Component to select\r\n * @param {Object} [opts] Options\r\n * @param {Boolean} [opts.scroll] Scroll canvas to the selected element\r\n * @return {this}\r\n * @example\r\n * // Select dropped block\r\n * editor.on('block:drag:stop', function(model) {\r\n * editor.select(model);\r\n * });\r\n */\r\n select(el, opts) {\r\n em.setSelected(el, opts);\r\n return this;\r\n },\r\n\r\n /**\r\n * Add component to selection\r\n * @param {Component|HTMLElement|Array} el Component to select\r\n * @return {this}\r\n * @example\r\n * editor.selectAdd(model);\r\n */\r\n selectAdd(el) {\r\n em.addSelected(el);\r\n return this;\r\n },\r\n\r\n /**\r\n * Remove component from selection\r\n * @param {Component|HTMLElement|Array} el Component to select\r\n * @return {this}\r\n * @example\r\n * editor.selectRemove(model);\r\n */\r\n selectRemove(el) {\r\n em.removeSelected(el);\r\n return this;\r\n },\r\n\r\n /**\r\n * Toggle component selection\r\n * @param {Component|HTMLElement|Array} el Component to select\r\n * @return {this}\r\n * @example\r\n * editor.selectToggle(model);\r\n */\r\n selectToggle(el) {\r\n em.toggleSelected(el);\r\n return this;\r\n },\r\n\r\n /**\r\n * Set device to the editor. If the device exists it will\r\n * change the canvas to the proper width\r\n * @param {string} name Name of the device\r\n * @return {this}\r\n * @example\r\n * editor.setDevice('Tablet');\r\n */\r\n setDevice(name) {\r\n em.set('device', name);\r\n return this;\r\n },\r\n\r\n /**\r\n * Return the actual active device\r\n * @return {string} Device name\r\n * @example\r\n * var device = editor.getDevice();\r\n * console.log(device);\r\n * // 'Tablet'\r\n */\r\n getDevice() {\r\n return em.get('device');\r\n },\r\n\r\n /**\r\n * Execute command\r\n * @param {string} id Command ID\r\n * @param {Object} options Custom options\r\n * @return {*} The return is defined by the command\r\n * @example\r\n * editor.runCommand('myCommand', {someValue: 1});\r\n */\r\n runCommand(id, options = {}) {\r\n return em.get('Commands').run(id, options);\r\n },\r\n\r\n /**\r\n * Stop the command if stop method was provided\r\n * @param {string} id Command ID\r\n * @param {Object} options Custom options\r\n * @return {*} The return is defined by the command\r\n * @example\r\n * editor.stopCommand('myCommand', {someValue: 1});\r\n */\r\n stopCommand(id, options = {}) {\r\n return em.get('Commands').stop(id, options);\r\n },\r\n\r\n /**\r\n * Store data to the current storage\r\n * @param {Function} clb Callback function\r\n * @return {Object} Stored data\r\n */\r\n store(clb) {\r\n return em.store(clb);\r\n },\r\n\r\n /**\r\n * Load data from the current storage\r\n * @param {Function} clb Callback function\r\n * @return {Object} Stored data\r\n */\r\n load(clb) {\r\n return em.load(clb);\r\n },\r\n\r\n /**\r\n * Returns container element. The one which was indicated as 'container'\r\n * on init method\r\n * @return {HTMLElement}\r\n */\r\n getContainer() {\r\n return c.el;\r\n },\r\n\r\n /**\r\n * Return the count of changes made to the content and not yet stored.\r\n * This count resets at any `store()`\r\n * @return {number}\r\n */\r\n getDirtyCount() {\r\n return em.getDirtyCount();\r\n },\r\n\r\n /**\r\n * Update editor dimensions and refresh data useful for positioning of tools\r\n *\r\n * This method could be useful when you update, for example, some position\r\n * of the editor element (eg. canvas, panels, etc.) with CSS, where without\r\n * refresh you'll get misleading position of tools (eg. rich text editor,\r\n * component highlighter, etc.)\r\n *\r\n * @private\r\n */\r\n refresh() {\r\n em.refreshCanvas();\r\n },\r\n\r\n /**\r\n * Replace the built-in Rich Text Editor with a custom one.\r\n * @param {Object} obj Custom RTE Interface\r\n * @example\r\n * editor.setCustomRte({\r\n * // Function for enabling custom RTE\r\n * // el is the HTMLElement of the double clicked Text Component\r\n * // rte is the same instance you have returned the first time you call\r\n * // enable(). This is useful if need to check if the RTE is already enabled so\r\n * // ion this case you'll need to return the RTE and the end of the function\r\n * enable: function(el, rte) {\r\n * rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API\r\n * ...\r\n * return rte; // return the RTE instance\r\n * },\r\n *\r\n * // Disable the editor, called for example when you unfocus the Text Component\r\n * disable: function(el, rte) {\r\n * rte.blur(); // this depends on the Custom RTE API\r\n * }\r\n *\r\n * // Called when the Text Component is focused again. If you returned the RTE instance\r\n * // from the enable function, the enable won't be called again instead will call focus,\r\n * // in this case to avoid double binding of the editor\r\n * focus: function (el, rte) {\r\n * rte.focus(); // this depends on the Custom RTE API\r\n * }\r\n * });\r\n */\r\n setCustomRte(obj) {\r\n this.RichTextEditor.customRte = obj;\r\n },\r\n\r\n /**\r\n * Replace the default CSS parser with a custom one.\r\n * The parser function receives a CSS string as a parameter and expects\r\n * an array of CSSRule objects as a result. If you need to remove the\r\n * custom parser, pass `null` as the argument\r\n * @param {Function|null} parser Parser function\r\n * @return {this}\r\n * @example\r\n * editor.setCustomParserCss(css => {\r\n * const result = [];\r\n * // ... parse the CSS string\r\n * result.push({\r\n * selectors: '.someclass, div .otherclass',\r\n * style: { color: 'red' }\r\n * })\r\n * // ...\r\n * return result;\r\n * });\r\n */\r\n setCustomParserCss(parser) {\r\n this.Parser.getConfig().parserCss = parser;\r\n return this;\r\n },\r\n\r\n /**\r\n * Change the global drag mode of components.\r\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\r\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\r\n * @returns {this}\r\n */\r\n setDragMode(value) {\r\n em.setDragMode(value);\r\n return this;\r\n },\r\n\r\n /**\r\n * Trigger event log message\r\n * @param {*} msg Message to log\r\n * @param {Object} [opts={}] Custom options\r\n * @param {String} [opts.ns=''] Namespace of the log (eg. to use in plugins)\r\n * @param {String} [opts.level='debug'] Level of the log, `debug`, `info`, `warning`, `error`\r\n * @return {this}\r\n * @example\r\n * editor.log('Something done!', { ns: 'from-plugin-x', level: 'info' });\r\n * // This will trigger following events\r\n * // `log`, `log:info`, `log-from-plugin-x`, `log-from-plugin-x:info`\r\n * // Callbacks of those events will always receive the message and\r\n * // options, as arguments, eg:\r\n * // editor.on('log:info', (msg, opts) => console.info(msg, opts))\r\n */\r\n log(msg, opts = {}) {\r\n em.log(msg, opts);\r\n return this;\r\n },\r\n\r\n /**\r\n * Attach event\r\n * @param {string} event Event name\r\n * @param {Function} callback Callback function\r\n * @return {this}\r\n */\r\n on(event, callback) {\r\n em.on(event, callback);\r\n return this;\r\n },\r\n\r\n /**\r\n * Attach event and detach it after the first run\r\n * @param {string} event Event name\r\n * @param {Function} callback Callback function\r\n * @return {this}\r\n */\r\n once(event, callback) {\r\n em.once(event, callback);\r\n return this;\r\n },\r\n\r\n /**\r\n * Detach event\r\n * @param {string} event Event name\r\n * @param {Function} callback Callback function\r\n * @return {this}\r\n */\r\n off(event, callback) {\r\n em.off(event, callback);\r\n return this;\r\n },\r\n\r\n /**\r\n * Trigger event\r\n * @param {string} event Event to trigger\r\n * @return {this}\r\n */\r\n trigger(event) {\r\n em.trigger.apply(em, arguments);\r\n return this;\r\n },\r\n\r\n /**\r\n * Destroy the editor\r\n */\r\n destroy() {\r\n return em.destroyAll();\r\n },\r\n\r\n /**\r\n * Returns editor element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getEl() {\r\n return editorView.el;\r\n },\r\n\r\n /**\r\n * Returns editor model\r\n * @return {Model}\r\n * @private\r\n */\r\n getModel() {\r\n return em;\r\n },\r\n\r\n /**\r\n * Render editor\r\n * @return {HTMLElement}\r\n */\r\n render() {\r\n // Do post render stuff after the iframe is loaded otherwise it'll\r\n // be empty during tests\r\n em.on('loaded', () => {\r\n this.UndoManager.clear();\r\n em.get('modules').forEach(module => {\r\n module.postRender && module.postRender(editorView);\r\n });\r\n });\r\n editorView.render();\r\n return editorView.el;\r\n }\r\n };\r\n};\r\n","import commonFunction from '../common/common';\r\nimport Handlebars from 'handlebars';\r\nconst Uppy = require('uppy');\r\nimport moment from 'moment';\r\nimport sourceFile from '../../config/config.js';\r\nconst _ = require('underscore');\r\nconst rootDir = sourceFile.rootDir;\r\nconst apiUrl = sourceFile.url;\r\nvar fetched = false;\r\nvar $imageUploadModal;\r\n// var dbAuthToken = sourceFile.dbAuthToken;\r\nvar dbAuthToken = hfUploadToken.value\r\nvar uppy;\r\nvar allowedExtArr = [];\r\nvar pluginUrl = sourceFile.hfPluginUrl;\r\nvar imageUploadMarkup = `
    \r\n
    \r\n
    \r\n \r\n
    Gallery
    \r\n
    Documents
    \r\n
    Unsplash
    \r\n
    Icons
    \r\n
    Import Files
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    Done
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Loading Data...
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    Done
    \r\n
    \r\n
    \r\n
    Gallery
    \r\n
    \r\n
    \r\n \r\n
    Loading Data...
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    Search
    \r\n
    Import
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Loading Data...
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    Search
    \r\n
    Import
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Search content!\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \t\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \t\r\n
    \r\n
    Import a file from URL
    \r\n \r\n
    Error! Image not found!
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    `;\r\n\r\nvar appendHtml = function () {\r\n $('body').append(imageUploadMarkup);\r\n $imageUploadModal = $('#imageUploadModal');\r\n};\r\n\r\nvar clickEventInit = function () {\r\n $imageUploadModal.find('.close-gallery').click(function () {\r\n $imageUploadModal.addClass('hide');\r\n });\r\n\r\n $imageUploadModal.find('.picture-upload-modal .upload-type.system').click(function () {\r\n $imageUploadModal.find('.picture-upload-modal .upload-type').removeClass('selected');\r\n $(this).addClass('selected');\r\n $imageUploadModal.find('.picture-upload-modal .import.system').removeClass('hide');\r\n $imageUploadModal.find('.picture-upload-modal .import.url').addClass('hide')\r\n })\r\n\r\n $imageUploadModal.find('.picture-upload-modal .upload-type.url').click(function () {\r\n $imageUploadModal.find('.picture-upload-modal .upload-type').removeClass('selected');\r\n $(this).addClass('selected');\r\n $imageUploadModal.find('.picture-upload-modal .import.url').removeClass('hide');\r\n $imageUploadModal.find('.picture-upload-modal .import.system').addClass('hide')\r\n })\r\n\r\n $imageUploadModal.find('.image-category.upload').click(function () {\r\n $imageUploadModal.find('.upload-pic-overlay').removeClass('hide');\r\n })\r\n\r\n $imageUploadModal.find('.close-upload').click(function () {\r\n $imageUploadModal.find('.upload-pic-overlay').addClass('hide');\r\n })\r\n\r\n $imageUploadModal.find('.image-listing.gallery .search-box input.search-image').keyup(function () {\r\n var searchTerm = $(this).val().toLowerCase().trim();\r\n let $parentListing = $(this).parents(\".image-listing.gallery\")\r\n if (searchTerm !== \"\") {\r\n $parentListing.find('.search-box .close-icon').removeClass('hide');\r\n let allowedFile = allowedExtArr.map(element => { return element.toLowerCase() });\r\n $parentListing.find('.uploaded-images .image-tile').each(function () {\r\n var url = $(this).data('url').split(\".\")\r\n var ext = url[url.length - 1]\r\n let fileRestriction = allowedFile && allowedFile.length ? allowedFile.includes(ext) : true\r\n if (fileRestriction) {\r\n if ($(this).data('filename').toLowerCase().indexOf(searchTerm) == -1) {\r\n $(this).addClass('hide');\r\n } else {\r\n $(this).removeClass('hide');\r\n }\r\n } else {\r\n $(this).addClass('hide');\r\n\r\n }\r\n })\r\n } else {\r\n $parentListing.find('.search-box .close-icon').addClass('hide');\r\n displyFilteredTile(allowedExtArr)\r\n }\r\n if ($parentListing.find('.uploaded-images .image-tile:not(.hide)').length == 0) {\r\n $parentListing.find('.no-data-present').removeClass('hide');\r\n } else {\r\n $parentListing.find('.no-data-present').addClass('hide');\r\n }\r\n });\r\n $imageUploadModal.find('.image-listing.documents .search-box input.search-image').keyup(function () {\r\n var searchTerm = $(this).val().toLowerCase().trim();\r\n let $parentListing = $(this).parents(\".image-listing\")\r\n if (searchTerm !== \"\") {\r\n $parentListing.find('.search-box .close-icon').removeClass('hide');\r\n let allowedFile = allowedExtArr.map(element => { return element.toLowerCase() });\r\n $parentListing.find('.uploaded-images .image-tile').each(function () {\r\n var url = $(this).data('url').split(\".\")\r\n var ext = \".\" + url[url.length - 1]\r\n let fileRestriction = allowedFile && allowedFile.length ? allowedFile.includes(ext) : true\r\n if (fileRestriction) {\r\n if ($(this).data('filename').toLowerCase().indexOf(searchTerm) == -1) {\r\n $(this).addClass('hide');\r\n } else {\r\n $(this).removeClass('hide');\r\n }\r\n } else {\r\n $(this).addClass('hide');\r\n }\r\n })\r\n } else {\r\n $parentListing.find('.search-box .close-icon').addClass('hide');\r\n displyFilteredTile(allowedExtArr)\r\n }\r\n if ($parentListing.find('.uploaded-images .image-tile:not(.hide)').length == 0) {\r\n $parentListing.find('.no-data-present').removeClass('hide');\r\n } else {\r\n $parentListing.find('.no-data-present').addClass('hide');\r\n }\r\n });\r\n\r\n $imageUploadModal.find('.image-listing.unsplash .search-box input.search-image').keyup(function (e) {\r\n if (e.keyCode == 13) {\r\n $imageUploadModal.find('.image-listing.unsplash .image-modal-head .search-btn').click();\r\n }\r\n if ($(this).val().trim() != \"\") {\r\n $imageUploadModal.find('.image-listing.unsplash .search-box .close-icon').removeClass('hide');\r\n } else {\r\n $imageUploadModal.find('.image-listing.unsplash .search-box .close-icon').addClass('hide');\r\n $imageUploadModal.find('.image-listing.unsplash .uploaded-images .image-tile').removeClass(\"hide\")\r\n }\r\n });\r\n\r\n $imageUploadModal.find('.image-listing.unsplash .image-modal-head .search-btn').click(function () {\r\n var searchTerm = $imageUploadModal.find('.image-listing.unsplash .image-modal-head .search-box input').val();\r\n if(searchTerm.trim() != \"\"){\r\n var $loader = `
    \r\n \r\n
    Loading Data...
    \r\n
    `\r\n $imageUploadModal.find('.image-listing.unsplash .uploaded-images').html($loader)\r\n fnFetchUnsplashImages(searchTerm);\r\n }\r\n })\r\n\r\n $imageUploadModal.find('.image-listing.icon-finder .search-box input.search-image').keyup(function (e) {\r\n if (e.keyCode == 13) {\r\n $imageUploadModal.find('.image-listing.icon-finder .image-modal-head .search-btn').click();\r\n }\r\n if ($(this).val() !== \"\") {\r\n $imageUploadModal.find('.image-listing.icon-finder .search-box .close-icon').removeClass('hide');\r\n } else {\r\n $imageUploadModal.find('.image-listing.icon-finder .search-box .close-icon').addClass('hide');\r\n }\r\n });\r\n\r\n $imageUploadModal.find('.image-listing.icon-finder .image-modal-head .search-btn').click(function () {\r\n var $loader = `
    \r\n \r\n
    Loading Data...
    \r\n
    `\r\n var $empty = `
    \r\n \r\n Search to show content!\r\n
    `\r\n $imageUploadModal.find('.image-listing.icon-finder .uploaded-images').html($loader)\r\n var searchTerm = $imageUploadModal.find('.image-listing.icon-finder .image-modal-head .search-box input').val();\r\n if (searchTerm)\r\n fnFetchIconFinderImages(searchTerm);\r\n else\r\n $imageUploadModal.find('.image-listing.icon-finder .uploaded-images').html($empty)\r\n })\r\n\r\n $imageUploadModal.find('.image-listing .search-box .close-icon').click(function () {\r\n let $parentImgListing = $(this).parents(\".image-listing \")\r\n $(this).addClass('hide');\r\n $parentImgListing.find('.search-box input.search-image').val(\"\");\r\n $parentImgListing.find('.uploaded-images .image-tile').removeClass(\"hide\");\r\n $parentImgListing.find('.no-data-present').addClass('hide');\r\n if ($parentImgListing.hasClass(\"gallery\") || $parentImgListing.hasClass(\"documents\")) {\r\n displyFilteredTile(allowedExtArr)\r\n }\r\n });\r\n\r\n\r\n $imageUploadModal.find('.import.url .image-url').change(function () {\r\n var url = $(this).val();\r\n $imageUploadModal.find('.add-image-icon img')[0].src = url;\r\n });\r\n\r\n $imageUploadModal.find('.left.image-dir .image-category:not(.upload)').click(function () {\r\n if (!$(this).hasClass('selected')) {\r\n $imageUploadModal.find('.left.image-dir .image-category').removeClass('selected');\r\n $(this).addClass('selected');\r\n if ($(this).hasClass('gallery')) {\r\n $imageUploadModal.find('.right.image-listing').addClass('hide')\r\n $imageUploadModal.find('.right.image-listing.gallery').removeClass('hide')\r\n $imageUploadModal.find('.image-listing.gallery .search-box input.search-image').keyup();\r\n } else if ($(this).hasClass('unsplash')) {\r\n $imageUploadModal.find('.right.image-listing').addClass('hide')\r\n $imageUploadModal.find('.right.image-listing.unsplash').removeClass('hide')\r\n $imageUploadModal.find('.image-listing.unsplash .search-box input.search-image').keyup();\r\n } else if ($(this).hasClass('icon-finder')) {\r\n $imageUploadModal.find('.right.image-listing').addClass('hide')\r\n $imageUploadModal.find('.right.image-listing.icon-finder').removeClass('hide')\r\n $imageUploadModal.find('.image-listing.icon-finder .search-box input.search-image').keyup()\r\n } else if ($(this).hasClass('documents')) {\r\n $imageUploadModal.find('.right.image-listing').addClass('hide')\r\n $imageUploadModal.find('.right.image-listing.documents').removeClass('hide')\r\n $imageUploadModal.find('.image-listing.documents .search-box input.search-image').keyup();\r\n }\r\n }\r\n // displyFilteredTile(allowedExtArr)\r\n })\r\n}\r\n\r\nvar initializeUppy = function () {\r\n uppy = Uppy.Core({\r\n restrictions: {\r\n maxFileSize: 50000000,\r\n maxNumberOfFiles: 15,\r\n allowedFileTypes: ['image/*']\r\n },\r\n meta: { pertype: 'P' }\r\n })\r\n .use(Uppy.Dashboard, {\r\n id: 'Dashboard',\r\n inline: true,\r\n target: '#import-image',\r\n width: 708,\r\n maxWidth: 708,\r\n height: 500,\r\n maxHeight: 500,\r\n showProgressDetails: true,\r\n proudlyDisplayPoweredByUppy: false,\r\n metaFields: [\r\n { id: 'name', name: 'Name', placeholder: 'file name' }\r\n ],\r\n locale: {\r\n strings: {\r\n dropPaste: 'Drop files here, or %{browse}',\r\n browse: 'browse'\r\n }\r\n }\r\n })\r\n .use(Uppy.XHRUpload, { endpoint: `${hfPluginUrl.value}/api/file/fileupload`, method: 'post', formData: true, fieldName: 'file[]', headers: { 'authorization': `Bearer ${dbAuthToken}` } })\r\n .on('complete', (result) => {\r\n if (result.successful.length && (typeof (result.successful[0].response.body) !== \"string\")) {\r\n var newImg = []\r\n let newDoc = []\r\n for (var i = 0; i < result.successful.length; i++) {\r\n var data = {};\r\n let fileExt = result.successful[i].extension\r\n data[\"imageUrl\"] = result.successful[i].response.body.image_url;\r\n data[\"filename\"] = result.successful[i].meta.name;\r\n if (isImageFileUrl(fileExt)) {\r\n data[\"isImage\"] = true\r\n newImg.push(data);\r\n } else {\r\n data['isImage'] = false\r\n data[\"fileIcon\"] = getIconFromExt(fileExt)\r\n newDoc.push(data);\r\n }\r\n }\r\n if (newImg && newImg.length) {\r\n let $imageTiles = fnHandlebars('prepend-new-fileUrl', newImg);\r\n $imageUploadModal.find('.image-listing.gallery .image-list .uploaded-images').prepend($imageTiles);\r\n $imageUploadModal.find('.image-listing.gallery .search-box input.search-image').keyup();\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n }\r\n if (newDoc && newDoc.length) {\r\n let $imageTiles = fnHandlebars('prepend-new-fileUrl', newDoc);\r\n $imageUploadModal.find('.image-listing.documents .image-list .uploaded-images').prepend($imageTiles);\r\n $imageUploadModal.find('.image-listing.documents .search-box input.search-image').keyup();\r\n $imageUploadModal.find(\".image-category.documents\").trigger(\"click\")\r\n }\r\n if (result.failed.length === 0) {\r\n $imageUploadModal.find('.upload-pic-overlay').addClass('hide');\r\n uppy.reset()\r\n }\r\n }\r\n })\r\n\r\n //import image from link. needs uppy reference\r\n $imageUploadModal.find('.picture-upload-modal .import.url .import-link').click(function () {\r\n\r\n var imageUrl = $imageUploadModal.find('.picture-upload-modal .import.url input.image-url').val();\r\n $imageUploadModal.find('.picture-upload-modal .import.url .import-link').addClass('loading')\r\n\r\n var index = imageUrl.lastIndexOf(\"/\") + 1;\r\n var filename = imageUrl.substr(index);\r\n fetch(imageUrl)\r\n .then((response) => {\r\n if (response.status >= 200 && response.status <= 299) {\r\n return response.blob();\r\n } else {\r\n throw Error(response.statusText);\r\n }\r\n })\r\n .then((blob) => {\r\n var uploadFile = true\r\n uppy.getFiles().forEach(function (e, i) {\r\n if (e.name == filename) {\r\n $imageUploadModal.find('.import.url .error-message').removeClass('hide').text(`Cannot add the duplicate file \"${filename}\", it is already imported!`)\r\n uploadFile = false;\r\n }\r\n })\r\n if (uploadFile) {\r\n uppy.addFile({\r\n name: filename,\r\n type: blob.type,\r\n data: blob // changed blob -> data\r\n })\r\n $imageUploadModal.find('.picture-upload-modal .upload-type.system').click()\r\n $imageUploadModal.find('.import.url .error-message').addClass('hide')\r\n $imageUploadModal.find('.picture-upload-modal .import.url input.image-url').val('');\r\n $imageUploadModal.find('.import.url .image-url').trigger('change');\r\n }\r\n })\r\n .catch(error => {\r\n $imageUploadModal.find('.import.url .error-message').removeClass('hide').text(error.message)\r\n });\r\n $imageUploadModal.find('.picture-upload-modal .import.url .import-link').removeClass('loading')\r\n });\r\n\r\n $imageUploadModal.find('.import-images').click(function () {\r\n var totalSelected = $imageUploadModal.find('.image-listing.import .image-tile.selected').length;\r\n $imageUploadModal.find('.import-images').addClass('loading');\r\n $imageUploadModal.find('.image-listing.import .image-tile.selected').each(function (i, elm) {\r\n var imageUrl = $(elm).data('url')\r\n var filename = $(elm).data('filename').split(\"/\").join(\"\");\r\n fetch(imageUrl)\r\n .then((response) => {\r\n if (response.status >= 200 && response.status <= 299) {\r\n return response.blob();\r\n } else {\r\n throw Error(response.statusText);\r\n }\r\n })\r\n .then((blob) => {\r\n var uploadFile = true\r\n uppy.getFiles().forEach(function (e, i) {\r\n if (e.name == filename) {\r\n // shortcuts.toast(\"Cannot import duplicate file!\", 800)\r\n uploadFile = false;\r\n }\r\n })\r\n if (uploadFile) {\r\n filename = `${filename}.${blob.type.substr(blob.type.lastIndexOf('/') + 1)}`\r\n uppy.addFile({\r\n name: filename,\r\n type: blob.type,\r\n data: blob // changed blob -> data\r\n })\r\n }\r\n if (totalSelected == (i + 1)) {\r\n $imageUploadModal.find('.image-listing.import .image-tile.selected').removeClass('selected');\r\n $imageUploadModal.find('.import-images').removeClass('loading').addClass('hide');\r\n $imageUploadModal.find('.upload-pic-overlay').removeClass('hide');\r\n $imageUploadModal.find('.picture-upload-modal .upload-type.system').click();\r\n }\r\n })\r\n .catch(error => {\r\n // shortcuts.toast(`Unable to import ${filename}! Please try again later!`, 800)\r\n if (totalSelected == (i + 1)) {\r\n $imageUploadModal.find('.image-listing.import .image-tile.selected').removeClass('selected');\r\n $imageUploadModal.find('.import-images').removeClass('loading').addClass('hide');\r\n }\r\n if (totalSelected == (i + 1) && Object.keys(uppy.getState().files).length > 0) {\r\n $imageUploadModal.find('.upload-pic-overlay').removeClass('hide');\r\n $imageUploadModal.find('.picture-upload-modal .upload-type.system').click()\r\n }\r\n });\r\n })\r\n })\r\n}\r\n\r\nvar fnFetchUserImages = function () {\r\n var reqUrl = `${hfPluginUrl.value}/api/GetGallary?tokenkey=${dbAuthToken}`\r\n var onSuccess = function (respData) {\r\n fnManipulateAndDisplayData(respData);\r\n }\r\n var onAjaxError = function (e) {\r\n // shortcuts.toast(\"Unable to fetch images! Please try again!\", 800)\r\n }\r\n commonFunction.fnAjaxRequest(reqUrl, 'GET', {}, onSuccess, onAjaxError);\r\n}\r\nvar displyFilteredTile = function (arryForFilter) {\r\n arryForFilter = arryForFilter && arryForFilter.length ? arryForFilter : []\r\n arryForFilter = arryForFilter.map(element => { return element.replaceAll(\".\", \"\").toLowerCase() })\r\n if (arryForFilter && arryForFilter.length) {\r\n $imageUploadModal.find(\".image-listing .image-tile\").addClass(\"hide\")\r\n $imageUploadModal.find(\".image-tile\").each(function (elm) {\r\n var url = $(this).data('url').split(\".\")\r\n var ext = url[url.length - 1]\r\n if (arryForFilter.includes(ext)) {\r\n $(this).removeClass(\"hide\")\r\n }\r\n })\r\n } else {\r\n $imageUploadModal.find(\".image-listing .image-tile\").removeClass(\"hide\")\r\n }\r\n let $parentListing = $imageUploadModal.find('.image-listing:not(.hide)');\r\n // handle empy content\r\n if ($parentListing.find('.uploaded-images .image-tile:not(.hide)').length == 0) {\r\n $parentListing.find('.no-data-present').removeClass('hide');\r\n } else {\r\n $parentListing.find('.no-data-present').addClass('hide');\r\n }\r\n}\r\n\r\nvar fnManipulateAndDisplayData = function (data) {\r\n var imageDir = \"https://dronamobilepublic.s3.amazonaws.com/\"\r\n data.forEach(function (data, i) {\r\n var filename = data[\"file_name\"];\r\n if (filename.lastIndexOf(\".\") !== -1)\r\n var unique_key = filename.slice(filename.lastIndexOf(\"_\"), filename.lastIndexOf(\".\"));\r\n else\r\n var unique_key = filename.slice(filename.lastIndexOf(\"_\"));\r\n filename = filename.slice(filename.lastIndexOf(\"/\") + 1).replace(unique_key, \"\");\r\n data[\"filename\"] = filename;\r\n data[\"imageUrl\"] = imageDir + data[\"file_name\"];\r\n data[\"timestamp\"] = moment(data[\"file_created_date\"]).valueOf();\r\n if (isImageFileUrl(data[\"file_type\"])) {\r\n data[\"isImage\"] = true\r\n } else {\r\n data['isImage'] = false\r\n data[\"fileIcon\"] = getIconFromExt(data[\"file_type\"])\r\n }\r\n })\r\n data = sortByTimestamp(data);\r\n let allImageList = data.filter(function (item) { return item[\"isImage\"] })\r\n let allDocList = data.filter(function (item) { return !item[\"isImage\"] })\r\n let $imageTiles = fnHandlebars('image-upload-tiles', allImageList);\r\n let $DocTiles = fnHandlebars('image-upload-tiles', allDocList);\r\n $imageUploadModal.find('.image-listing.gallery .image-list .uploaded-images').html($imageTiles);\r\n $imageUploadModal.find('.image-listing.documents .image-list .uploaded-images').html($DocTiles);\r\n displyFilteredTile(allowedExtArr)\r\n\r\n}\r\n\r\nvar getIconFromExt = function (fileExt) {\r\n switch (fileExt) {\r\n case \"pdf\":\r\n return `./static/images/Control Icons/pdfFile.svg`\r\n break;\r\n case \"ppt\":\r\n return `./static/images/Control Icons/ppt.svg`\r\n break;\r\n case \"csv\":\r\n case \"xls\":\r\n case \"xlsx\":\r\n return `./static/images/Control Icons/excel.svg`\r\n break;\r\n case \"doc\":\r\n case \"docs\":\r\n case \"docx\":\r\n return `./static/images/Control Icons/doc.svg`\r\n break;\r\n case \"mkv\":\r\n case \"mp4\":\r\n return `./static/images/Control Icons/video.svg`\r\n break;\r\n case \"zip\":\r\n case \"rar\":\r\n return `./static/images/Control Icons/zip.svg`\r\n break;\r\n case \"mp3\":\r\n return `./static/images/Control Icons/audio.svg`\r\n break;\r\n default:\r\n return `./static/images/Control Icons/url.svg`\r\n break;\r\n }\r\n};\r\nvar isImageFileUrl = function (fileExt, arrfileUrl = \"\") {\r\n let imageExt = getImageExt()\r\n if (arrfileUrl && arrfileUrl.length) {\r\n return checkArryExt(arrfileUrl, imageExt)\r\n } else {\r\n if (imageExt.includes(fileExt)) {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n}\r\nvar isDocFileUrl = function (arrfileUrl) {\r\n let docExt = getDocExt()\r\n return checkArryExt(arrfileUrl, docExt)\r\n}\r\nvar getDocExt = function () {\r\n let docExt = [\"doc\", \"docm\", \"docx\", \"xls\", \"xls\", \"xltx\", \"xlsm\", \"xltm\", \"xlam\", \"xlsb\", \"ppt\", \"pptx\", \"potx\", \"ppsx\", \"csv\", \"pdf\"]\r\n return docExt\r\n}\r\nvar getImageExt = function () {\r\n let imageExt = ['png', \"jpg\", \"jfif\", \"jpeg\", \"jfif\", \"svg\", \"gif\", \"tif\"]\r\n return imageExt;\r\n}\r\nvar isUppyMimeType = function (arrfileUrl) {\r\n let mimeTypExt = ['md', 'markdown', 'mp4', 'mp3', 'svg', 'jpg', 'png', 'gif', 'heic', 'heif', 'yaml', 'yml', 'csv', 'tsv', 'tab', 'avi', 'mks', 'mkv', 'mov', 'doc', 'docm', 'docx', 'dot', 'dotm', 'dotx', 'xla', 'xlam', 'xlc', 'xlf', 'xlm', 'xls', 'xlsb', 'xlsm', 'xlsx', 'xlt', 'xltm', 'xltx', 'xlw', 'txt', 'text', 'conf', 'log', 'pdf']\r\n return checkArryExt(arrfileUrl, mimeTypExt)\r\n}\r\nvar checkArryExt = function (arrfileUrl, compareWithExt) {\r\n if (arrfileUrl && arrfileUrl.length) {\r\n let tempArrfileUrl = arrfileUrl.map(element => { return element.replaceAll(\".\", \"\").toLowerCase() })\r\n let commanFile = _.intersection(tempArrfileUrl, compareWithExt)\r\n return commanFile.length > 0\r\n } else {\r\n return false\r\n }\r\n\r\n}\r\n\r\nvar sortByTimestamp = function (data) {\r\n return data.sort(function (a, b) {\r\n let row1 = a[\"timestamp\"];\r\n let row2 = b[\"timestamp\"];\r\n let comparison = 0;\r\n if (row1 > row2) {\r\n comparison = 1;\r\n } else if (row1 < row2) {\r\n comparison = -1;\r\n }\r\n return comparison * -1;\r\n });\r\n}\r\n\r\nvar fnFetchUnsplashImages = function (category) {\r\n if (category == \"\")\r\n category = 'random';\r\n var fnSuccess = function (response) {\r\n response = JSON.parse(response);\r\n if (response[\"success\"]) {\r\n var imgObj = []\r\n var data = response[\"data\"];\r\n if (typeof data === \"string\")\r\n data = JSON.parse(data || \"[]\");\r\n data.results.forEach(function (elm, i) {\r\n var imgUrl = elm[\"urls\"][\"raw\"];\r\n var index = imgUrl.lastIndexOf(\"/\") + 1;\r\n var filename = imgUrl.substr(index).slice(0, 15);\r\n var rowData = {\r\n \"raw\": imgUrl,\r\n \"thumbnail\": elm[\"urls\"][\"thumb\"],\r\n \"filename\": filename\r\n };\r\n imgObj.push(rowData)\r\n })\r\n var $imageTiles = fnHandlebars('unsplash-tiles', imgObj);\r\n $imageUploadModal.find('.image-listing.unsplash .image-list .uploaded-images').html($imageTiles);\r\n if ($imageUploadModal.find('.image-listing.import .image-tile.selected').length === 0)\r\n $imageUploadModal.find('.import-images').addClass('hide');\r\n } else {\r\n // shortcuts.toast(\"Unable to fetch images! Please try again!\", 800)\r\n }\r\n }\r\n var fnError = function (err) {\r\n // shortcuts.toast(\"Unable to fetch images! Please try again!\", 800)\r\n }\r\n var reqObj = {\r\n \"query\": category\r\n };\r\n commonFunction.fnAjaxRequest(\r\n 'api/getUnsplashImages',\r\n 'POST',\r\n reqObj,\r\n fnSuccess,\r\n fnError\r\n );\r\n};\r\n\r\nvar fnFetchIconFinderImages = function (query) {\r\n function fetchImages() {\r\n var fnSuccess = function (response) {\r\n response = JSON.parse(response);\r\n if (response[\"success\"]) {\r\n var data = response[\"data\"];\r\n if (typeof data === \"string\")\r\n data = JSON.parse(data)\r\n var imgObj = [];\r\n data.icons.forEach(function (elm, i) {\r\n var index = 6;\r\n if ((elm.raster_sizes.length - 1) < index)\r\n index = elm.raster_sizes.length - 1;\r\n var url = elm.raster_sizes[index].formats[0].preview_url;\r\n var token = url.substr(url.lastIndexOf(\"/\"));\r\n slashedUrl = url.replace(token, \"\");\r\n var filename = slashedUrl.substr(slashedUrl.length - 15);\r\n if (elm.is_premium) {\r\n url = url.replace(\"https://api.iconfinder.com/\", \"\");\r\n url = \"https://api.iconfinder.com/v3/\" + url\r\n }\r\n imgObj.push({\r\n \"thumbnail\": url,\r\n \"raw\": url,\r\n \"filename\": filename\r\n })\r\n })\r\n var $imageTiles = fnHandlebars('unsplash-tiles', imgObj);\r\n $imageUploadModal.find('.image-listing.icon-finder .image-list .uploaded-images').html($imageTiles);\r\n if ($imageUploadModal.find('.image-listing.import .image-tile.selected').length === 0)\r\n $imageUploadModal.find('.import-images').addClass('hide');\r\n } else {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n }\r\n }\r\n var fnError = function (error) {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n }\r\n var reqObj = {\r\n query: query,\r\n offset: 0,\r\n count: 100\r\n };\r\n commonFunction.fnAjaxRequest(\r\n `api/getIcons`,\r\n 'POST',\r\n reqObj,\r\n fnSuccess,\r\n fnError\r\n );\r\n }\r\n fetchImages();\r\n // $.ajax({\r\n // method: 'GET',\r\n // url: `api/getIcons`,\r\n // success: function (response) {\r\n // response = JSON.parse(response);\r\n // if (response[\"success\"]) {\r\n // var data = response[\"data\"];\r\n // if (typeof data === \"string\")\r\n // data = JSON.parse(data)\r\n // var imgObj = [];\r\n // data.icons.forEach(function (elm, i) {\r\n // var index = 6;\r\n // if ((elm.raster_sizes.length - 1) < index)\r\n // index = elm.raster_sizes.length - 1;\r\n // var url = elm.raster_sizes[index].formats[0].preview_url;\r\n // var token = url.substr(url.lastIndexOf(\"/\"));\r\n // slashedUrl = url.replace(token, \"\");\r\n // var filename = slashedUrl.substr(slashedUrl.length - 15);\r\n // imgObj.push({\r\n // \"thumbnail\": url,\r\n // \"raw\": url,\r\n // \"filename\": filename\r\n // })\r\n // })\r\n // var $imageTiles = fnHandlebars('unsplash-tiles', imgObj);\r\n // $imageUploadModal.find('.image-listing.icon-finder .image-list .uploaded-images').html($imageTiles);\r\n // if ($imageUploadModal.find('.image-listing.import .image-tile.selected').length === 0)\r\n // $imageUploadModal.find('.import-images').addClass('hide');\r\n // } else {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n // }\r\n // },\r\n // error: function (error) {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n // // if (error.status == 401) {\r\n // // fetchJwtToken()\r\n // // } else {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n // // }\r\n // },\r\n // beforeSend: function (request) {\r\n // request.setRequestHeader(\"Authorization\", `Bearer haMbEYu6gioZ9YXDuSw6kpjqayIHi2O6OZzcY6gCW71C7WUrrFKijTthiC2KY7OD`);\r\n // }\r\n // });\r\n // function fetchJwtToken() {\r\n // var reqData = { \"operation\": \"getJwtTokenForIconFinder\" }\r\n // var onSuccess = function (data) {\r\n // if (data !== \"\") {\r\n // jwtAuthToken = data;\r\n // fetchImages();\r\n // }\r\n // }\r\n // var onError = function (err) {\r\n // shortcuts.toast(\"Unable to fetch icons! Please try again!\", 800)\r\n // }\r\n // fnAjaxRequest('/Handler/studioConsole.ashx', 'GET', reqData, onSuccess, onError);\r\n // }\r\n // if (jwtAuthToken == undefined) {\r\n // fetchJwtToken();\r\n // } else {\r\n // fetchImages();\r\n // }\r\n}\r\n\r\nvar initializeImageUpload = function () {\r\n appendHtml();\r\n clickEventInit();\r\n initializeUppy();\r\n fnFetchUserImages();\r\n fnFetchUnsplashImages('');\r\n editor.studioAssetManager.render = true;\r\n};\r\n\r\nvar fnSelectImages = function (successCallback, errCallback, options) {\r\n if (!fetched) {\r\n fnFetchUserImages();\r\n fnFetchUnsplashImages('');\r\n fetched = true\r\n }\r\n $imageUploadModal.removeClass('hide')\r\n var maxLimit = 10;\r\n if (options.multiple && typeof (options[\"max-limit\"]) == \"number\")\r\n maxLimit = options[\"max-limit\"];\r\n else\r\n maxLimit = 1;\r\n $imageUploadModal.off('click', '.image-listing.gallery .image-tile:not(.selected)').on('click', '.image-listing.gallery .image-tile:not(.selected)', function () {\r\n if (maxLimit > 0) {\r\n var alreadySelected = $imageUploadModal.find('.image-listing.gallery .image-tile.selected');\r\n if (maxLimit == 1) {\r\n $(alreadySelected).removeClass('selected');\r\n $(this).addClass('selected');\r\n }\r\n else {\r\n if (alreadySelected.length < maxLimit) {\r\n $(this).addClass('selected');\r\n }\r\n else {\r\n // shortcuts.toast(\"Max limit reached!\", 800)\r\n }\r\n }\r\n $imageUploadModal.find('.copy-images').removeClass('hide');\r\n }\r\n })\r\n $imageUploadModal.off('click', '.image-listing.gallery .image-tile.selected').on('click', '.image-listing.gallery .image-tile.selected', function () {\r\n $(this).removeClass('selected');\r\n if ($imageUploadModal.find('image-listing.gallery .image-tile.selected').length == 0)\r\n $imageUploadModal.find('.copy-images').addClass('hide');\r\n })\r\n $imageUploadModal.off('click', '.image-listing.documents .image-tile:not(.selected)').on('click', '.image-listing.documents .image-tile:not(.selected)', function () {\r\n if (maxLimit > 0) {\r\n var alreadySelected = $imageUploadModal.find('.image-listing.documents .image-tile.selected');\r\n if (maxLimit == 1) {\r\n $(alreadySelected).removeClass('selected');\r\n $(this).addClass('selected');\r\n }\r\n else {\r\n if (alreadySelected.length < maxLimit) {\r\n $(this).addClass('selected');\r\n }\r\n else {\r\n // shortcuts.toast(\"Max limit reached!\", 800)\r\n }\r\n }\r\n $imageUploadModal.find('.copy-images').removeClass('hide');\r\n }\r\n })\r\n $imageUploadModal.off('click', '.image-listing.documents .image-tile.selected').on('click', '.image-listing.documents .image-tile.selected', function () {\r\n $(this).removeClass('selected');\r\n if ($imageUploadModal.find('image-listing.documents .image-tile.selected').length == 0)\r\n $imageUploadModal.find('.copy-images').addClass('hide');\r\n })\r\n $imageUploadModal.off('click', '.image-listing.import .image-tile:not(.selected)').on('click', '.image-listing.import .image-tile:not(.selected)', function () {\r\n var alreadySelected = $imageUploadModal.find('.image-listing.import .image-tile.selected').length;\r\n if (alreadySelected < 10) {\r\n $(this).addClass('selected');\r\n } else {\r\n // shortcuts.toast(\"You can only import 10 files at once!\", 800)\r\n }\r\n $imageUploadModal.find('.import-images').removeClass('hide');\r\n })\r\n $imageUploadModal.off('click', '.image-listing.import .image-tile.selected').on('click', '.image-listing.import .image-tile.selected', function () {\r\n $(this).removeClass('selected');\r\n if ($imageUploadModal.find('.image-listing.import .image-tile.selected').length == 0)\r\n $imageUploadModal.find('.import-images').addClass('hide');\r\n })\r\n $imageUploadModal.off('click', '.copy-images.function-btn').on('click', '.copy-images.function-btn', function () {\r\n var links;\r\n let $parentImgListing = $(this).parents(\".image-listing\")\r\n if (options.multiple) {\r\n var data = []\r\n $parentImgListing.find('.image-tile.selected').each(function (i, elm) {\r\n data.push($(elm).data('url'))\r\n })\r\n links = data;\r\n } else {\r\n links = $imageUploadModal.find('.image-tile.selected').data('url')\r\n }\r\n if (links) {\r\n successCallback(links);\r\n } else {\r\n errCallback(\"some error\")\r\n }\r\n })\r\n $imageUploadModal.off('click', '.copy-images.copy-link').on('click', '.copy-images.copy-link', function () {\r\n var links;\r\n let $parentImgListing = $(this).parents(\".image-listing\")\r\n if (options.multiple) {\r\n var data = []\r\n $parentImgListing.find('.image-tile.selected').each(function (i, elm) {\r\n data.push($(elm).data('url'))\r\n })\r\n links = data;\r\n } else {\r\n links = $imageUploadModal.find('.image-tile.selected').data('url')\r\n }\r\n if (links) {\r\n var dummy = document.createElement(\"textarea\");\r\n document.body.appendChild(dummy);\r\n dummy.value = links;\r\n dummy.select();\r\n document.execCommand(\"copy\");\r\n document.body.removeChild(dummy);\r\n // shortcuts.toast(\"Copied to clipboard\", 800)\r\n } else {\r\n // shortcuts.toast(\"Unable to copy\", 800)\r\n }\r\n })\r\n\r\n // restriction for all file type \r\n uppyFileRestriction(options)\r\n}\r\nvar uppyFileRestriction = function (options) {\r\n let allowedFiles = checkRestrictionType(options)\r\n allowedFiles = allowedFiles && allowedFiles.length ? allowedFiles : null\r\n uppy.setOptions({\r\n restrictions: { allowedFileTypes: allowedFiles }\r\n })\r\n}\r\nvar checkRestrictionType = function (opt) {\r\n let rstType =\r\n opt && opt.fileRestritions && opt.fileRestritions.restrictionType\r\n ? opt.fileRestritions.restrictionType\r\n : '';\r\n switch (rstType) {\r\n case \"onlyImage\":\r\n let imgType = ['image/*', '.OTF', '.TTF', '.WOFF', '.WOFF2']\r\n hideAllFileTile()\r\n showImageFileTile()\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n allowedExtArr = getImageExt()\r\n displyFilteredTile(allowedExtArr)\r\n return imgType\r\n break;\r\n case \"OnlyDocFile\":\r\n let docType = [\".DOC\", \".DOCM\", \".DOCX\", \".XLS\", \".XLS\", \".XLTX\", \".XLSM\", \".XLTM\", \".XLAM\", \".XLSB\", \".PPT\", \".PPTX\", \".POTX\", \".PPSX\", \".CSV\", \".PDF\"]\r\n hideAllFileTile()\r\n showDocFileTile()\r\n $imageUploadModal.find(\".image-category.documents\").trigger(\"click\")\r\n allowedExtArr = getDocExt()\r\n displyFilteredTile(allowedExtArr)\r\n return docType\r\n break;\r\n case 'allowSpecific':\r\n // let allowedFile = opt?.fileRestritions?.allowedFiles || []\r\n let allowedFile =\r\n opt && opt.fileRestritions && opt.fileRestritions.allowedFiles\r\n ? opt.fileRestritions.allowedFiles\r\n : [];\r\n if (allowedFile && allowedFile.length) {\r\n allowedFile = isUppyMimeType(allowedFile) ? allowedFile : null\r\n } else {\r\n allowedFile = getDefaultExtForUppy()\r\n }\r\n allowedExtArr = allowedFile\r\n displyFilteredTile(allowedExtArr)\r\n showSpecificFileTile(allowedFile)\r\n return allowedFile\r\n break;\r\n default:\r\n let defaultFileType = getDefaultExtForUppy()\r\n showDefaultFileTile()\r\n allowedExtArr = []\r\n displyFilteredTile(allowedExtArr)\r\n return defaultFileType;\r\n break;\r\n }\r\n\r\n}\r\nvar getDefaultExtForUppy = function () {\r\n let docExt = [\".DOC\", \".DOCM\", \".DOCX\", \".XLS\", \".XLS\", \".XLTX\", \".XLSM\", \".XLTM\", \".XLAM\", \".XLSB\", \".PPT\", \".PPTX\", \".POTX\", \".PPSX\", \".CSV\", \".PDF\", \".XML\", \".JSON\"]\r\n let imgExt = ['image/*', '.OTF', '.TTF', '.WOFF', '.WOFF2']\r\n return _.union(docExt, imgExt)\r\n}\r\nvar showSpecificFileTile = function (allowedFile) {\r\n hideAllFileTile()\r\n let isDocFile = isDocFileUrl(allowedFile)\r\n let isImageFile = isImageFileUrl(\"\", allowedFile)\r\n let isUppyMimeFile = isUppyMimeType(allowedFile)\r\n if (isUppyMimeFile) {\r\n if (isImageFile || isDocFile) {\r\n if (isDocFile) {\r\n showDocFileTile()\r\n $imageUploadModal.find(\".image-category.documents\").trigger(\"click\")\r\n }\r\n if (isImageFile) {\r\n showImageFileTile()\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n }\r\n } else {\r\n showDocFileTile()\r\n showImageFileTile()\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n }\r\n } else {\r\n showDocFileTile()\r\n showImageFileTile()\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n }\r\n}\r\nvar showDefaultFileTile = function () {\r\n hideAllFileTile()\r\n showImageFileTile()\r\n showDocFileTile()\r\n $imageUploadModal.find(\".image-category.gallery\").trigger(\"click\")\r\n\r\n}\r\nvar showDocFileTile = function () {\r\n $imageUploadModal.find(\".image-category.documents\").removeClass(\"hide\")\r\n\r\n}\r\nvar hideAllFileTile = function () {\r\n $imageUploadModal.find(\".image-listing\").addClass(\"hide\")\r\n $imageUploadModal.find(\".image-category\").addClass(\"hide\")\r\n $imageUploadModal.find(\".image-category\").removeClass(\"selected\")\r\n $imageUploadModal.find(\".image-category.upload\").removeClass(\"hide\")\r\n}\r\nvar showImageFileTile = function () {\r\n $imageUploadModal.find(\".image-category.gallery\").removeClass(\"hide\")\r\n $imageUploadModal.find(\".image-category.unsplash\").removeClass(\"hide\")\r\n $imageUploadModal.find(\".image-category.icon-finder\").removeClass(\"hide\")\r\n\r\n}\r\nvar fnCloseModal = function () {\r\n $imageUploadModal.addClass('hide');\r\n $imageUploadModal.find('.image-listing.gallery .image-tile.selected').removeClass('selected')\r\n}\r\nvar fnHandlebars = function (tempId, data) {\r\n tempId = '#' + tempId;\r\n if (typeof data == 'string') {\r\n data = JSON.parse(data);\r\n }\r\n\r\n var tempHTML = $(tempId).html();\r\n\r\n var fnHandle = Handlebars.compile(tempHTML);\r\n return fnHandle(data);\r\n};\r\n\r\n\r\n\r\nexport default {\r\n init: initializeImageUpload,\r\n selectImages: fnSelectImages,\r\n close: fnCloseModal\r\n};\r\n","export default {\r\n plugins: []\r\n};\r\n","/**\r\n * File made for IE/Edge support\r\n * https://github.com/artf/grapesjs/issues/214\r\n */\r\n\r\nexport default () => {\r\n /**\r\n * Check if IE/Edge\r\n * @return {Boolean}\r\n */\r\n const isIE = () => {\r\n let match;\r\n const agent = window.navigator.userAgent;\r\n const rules = [\r\n ['edge', /Edge\\/([0-9\\._]+)/],\r\n ['ie', /MSIE\\s(7\\.0)/],\r\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\r\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/]\r\n ];\r\n\r\n for (let i = 0; i < rules.length; i++) {\r\n const rule = rules[i];\r\n match = rule[1].exec(agent);\r\n if (match) break;\r\n }\r\n\r\n return !!match;\r\n };\r\n\r\n if (isIE()) {\r\n const originalCreateHTMLDocument =\r\n DOMImplementation.prototype.createHTMLDocument;\r\n DOMImplementation.prototype.createHTMLDocument = title => {\r\n if (!title) title = '';\r\n return originalCreateHTMLDocument.apply(document.implementation, [title]);\r\n };\r\n }\r\n};\r\n","import $ from 'cash-dom';\r\nimport Editor from './editor';\r\nimport { isElement, isFunction } from 'underscore';\r\nimport polyfills from 'utils/polyfills';\r\nimport PluginManager from './plugin_manager';\r\nimport studioPlugin from 'studioPlugins/index.js';\r\nimport Marketplace from './marketplace/index.js';\r\nimport Gradient from 'grapesjs-style-gradient';\r\nimport studioAssetManager from 'studioAssetManager/index.js';\r\n\r\n//Development\r\nimport scss from '../externals/Sass/sass.js';\r\n// import from \"jquery\";\r\n\r\n//Build\r\n\r\npolyfills();\r\n\r\nconst plugins = new PluginManager();\r\nconst editors = [];\r\nconst defaultConfig = {\r\n // If true renders editor on init\r\n autorender: 1,\r\n\r\n // Array of plugins to init\r\n plugins: [Gradient],\r\n\r\n // Custom options for plugins\r\n pluginsOpts: {\r\n [Gradient]: {\r\n colorPicker: 'default',\r\n grapickOpts: {\r\n min: 1,\r\n max: 99\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default {\r\n $,\r\n\r\n editors,\r\n\r\n plugins,\r\n\r\n studioPlugin,\r\n\r\n // Will be replaced on build\r\n version: '<# VERSION #>',\r\n\r\n /**\r\n * Initialize the editor with passed options\r\n * @param {Object} config Configuration object\r\n * @param {string|HTMLElement} config.container Selector which indicates where render the editor\r\n * @param {Boolean} [config.autorender=true] If true, auto-render the content\r\n * @param {Array} [config.plugins=[]] Array of plugins to execute on start\r\n * @param {Object} [config.pluginsOpts={}] Custom options for plugins\r\n * @return {Editor} Editor instance\r\n * @example\r\n * var editor = grapesjs.init({\r\n * container: '#myeditor',\r\n * components: '
    Hello world
    ',\r\n * style: '.hello{color: red}',\r\n * })\r\n */\r\n init(config = {}) {\r\n const els = config.container;\r\n if (!els) throw new Error(\"'container' is required\");\r\n config = { ...defaultConfig, ...config };\r\n config.el = isElement(els) ? els : document.querySelector(els);\r\n const editor = new Editor(config).init();\r\n\r\n // Load plugins\r\n config.plugins.forEach(pluginId => {\r\n let plugin = plugins.get(pluginId);\r\n const plgOptions = config.pluginsOpts[pluginId] || {};\r\n\r\n // Try to search in global context\r\n if (!plugin) {\r\n const wplg = window[pluginId];\r\n plugin = wplg && wplg.default ? wplg.default : wplg;\r\n }\r\n\r\n if (plugin) {\r\n plugin(editor, plgOptions);\r\n } else if (isFunction(pluginId)) {\r\n pluginId(editor, plgOptions);\r\n } else {\r\n console.warn(`Plugin ${pluginId} not found`);\r\n }\r\n });\r\n\r\n // Execute `onLoad` on modules once all plugins are initialized.\r\n // A plugin might have extended/added some custom type so this\r\n // is a good point to load stuff like components, css rules, etc.\r\n Marketplace.init();\r\n editor.getModel().loadOnStart();\r\n config.autorender && editor.render();\r\n editors.push(editor);\r\n studioPlugin.init();\r\n editor.studioPlugin = studioPlugin;\r\n editor.studioAssetManager = studioAssetManager;\r\n editor.studioAssetManager.render = false;\r\n return editor;\r\n }\r\n};\r\n","import defaults from './config/config';\r\n\r\nexport default config => {\r\n var c = config || {};\r\n\r\n // Set default options\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n var plugins = {};\r\n\r\n return {\r\n /**\r\n * Add new plugin. Plugins could not be overwritten\r\n * @param {string} id Plugin ID\r\n * @param {Function} plugin Function which contains all plugin logic\r\n * @return {Function} The plugin function\r\n * @example\r\n * PluginManager.add('some-plugin', function(editor){\r\n * editor.Commands.add('new-command', {\r\n * run: function(editor, senderBtn){\r\n * console.log('Executed new-command');\r\n * }\r\n * })\r\n * });\r\n */\r\n add(id, plugin) {\r\n if (plugins[id]) {\r\n return plugins[id];\r\n }\r\n\r\n plugins[id] = plugin;\r\n return plugin;\r\n },\r\n\r\n /**\r\n * Returns plugin by ID\r\n * @param {string} id Plugin ID\r\n * @return {Function|undefined} Plugin\r\n * @example\r\n * var plugin = PluginManager.get('some-plugin');\r\n * plugin(editor);\r\n */\r\n get(id) {\r\n return plugins[id];\r\n },\r\n\r\n /**\r\n * Returns object with all plugins\r\n * @return {Object}\r\n */\r\n getAll() {\r\n return plugins;\r\n }\r\n };\r\n};\r\n","export default {\r\n // Default assets\r\n // eg. [\r\n // 'https://...image1.png',\r\n // 'https://...image2.png',\r\n // {type: 'image', src: 'https://...image3.png', someOtherCustomProp: 1},\r\n // ..\r\n // ]\r\n assets: [],\r\n\r\n // Content to add where there is no assets to show\r\n // eg. 'No assets here, drag to upload'\r\n noAssets: '',\r\n\r\n // Style prefix\r\n stylePrefix: 'am-',\r\n\r\n // Upload endpoint, set `false` to disable upload\r\n // upload: 'https://endpoint/upload/assets',\r\n // upload: false,\r\n upload: 0,\r\n\r\n // The name used in POST to pass uploaded files\r\n uploadName: 'files',\r\n\r\n // Custom headers to pass with the upload request\r\n headers: {},\r\n\r\n // Custom parameters to pass with the upload request, eg. csrf token\r\n params: {},\r\n\r\n // The credentials setting for the upload request, eg. 'include', 'omit'\r\n credentials: 'include',\r\n\r\n // Allow uploading multiple files per request.\r\n // If disabled filename will not have '[]' appended\r\n multiUpload: true,\r\n\r\n // If true, tries to add automatically uploaded assets.\r\n // To make it work the server should respond with a JSON containing assets\r\n // in a data key, eg:\r\n // {\r\n // data: [\r\n // 'https://.../image.png',\r\n // ...\r\n // {src: 'https://.../image2.png'},\r\n // ...\r\n // ]\r\n // }\r\n autoAdd: 1,\r\n\r\n // Text on upload input\r\n uploadText: 'Drop files here or click to upload',\r\n\r\n // Label for the add button\r\n addBtnText: 'Add image',\r\n\r\n // To upload your assets, the module uses Fetch API, with this option you\r\n // overwrite it with something else.\r\n // It should return a Promise\r\n // @example\r\n // customFetch: (url, options) => axios(url, { data: options.body }),\r\n customFetch: '',\r\n\r\n // Custom uploadFile function.\r\n // Differently from the `customFetch` option, this gives a total control\r\n // over the uploading process, but you also have to emit all `asset:upload:*` events\r\n // by yourself (if you need to use them somewhere)\r\n // @example\r\n // uploadFile: (e) => {\r\n // var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\r\n // // ...send somewhere\r\n // }\r\n uploadFile: '',\r\n\r\n // In the absence of 'uploadFile' or 'upload' assets will be embedded as Base64\r\n embedAsBase64: 1,\r\n\r\n // Handle the image url submit from the built-in 'Add image' form\r\n // @example\r\n // handleAdd: (textFromInput) => {\r\n // // some check...\r\n // editor.AssetManager.add(textFromInput);\r\n // }\r\n handleAdd: '',\r\n\r\n // Enable an upload dropzone on the entire editor (not document) when dragging\r\n // files over it\r\n // If active the dropzone disable/hide the upload dropzone in asset modal,\r\n // otherwise you will get double drops (#507)\r\n dropzone: 0,\r\n\r\n // Open the asset manager once files are been dropped via the dropzone\r\n openAssetsOnDrop: 1,\r\n\r\n // Any dropzone content to append inside dropzone element\r\n dropzoneContent: '',\r\n\r\n // Default title for the asset manager modal\r\n modalTitle: 'Select Image',\r\n\r\n //Default placeholder for input\r\n inputPlaceholder: 'http://path/to/the/image.jpg',\r\n\r\n //method called before upload, on return false upload is canceled.\r\n // @example\r\n // beforeUpload: (files) => {\r\n // // logic...\r\n // var stopUpload = true;\r\n // if(stopUpload) return false;\r\n // }\r\n beforeUpload: null\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n idAttribute: 'src',\r\n\r\n defaults: {\r\n type: '',\r\n src: ''\r\n },\r\n\r\n /**\r\n * Get filename of the asset\r\n * @return {string}\r\n * @private\r\n * */\r\n getFilename() {\r\n return this.get('src')\r\n .split('/')\r\n .pop();\r\n },\r\n\r\n /**\r\n * Get extension of the asset\r\n * @return {string}\r\n * @private\r\n * */\r\n getExtension() {\r\n return this.getFilename()\r\n .split('.')\r\n .pop();\r\n }\r\n});\r\n","import Asset from './Asset';\r\n\r\nexport default Asset.extend({\r\n defaults: {\r\n ...Asset.prototype.defaults,\r\n type: 'image',\r\n unitDim: 'px',\r\n height: 0,\r\n width: 0\r\n }\r\n});\r\n","import { isFunction } from 'underscore';\r\nimport AssetView from './AssetView';\r\n\r\nexport default AssetView.extend({\r\n events: {\r\n 'click [data-toggle=asset-remove]': 'onRemove',\r\n click: 'onClick',\r\n dblclick: 'onDblClick'\r\n },\r\n\r\n getPreview() {\r\n const pfx = this.pfx;\r\n const src = this.model.get('src');\r\n return `\r\n
    \r\n
    \r\n `;\r\n },\r\n\r\n getInfo() {\r\n const pfx = this.pfx;\r\n const model = this.model;\r\n let name = model.get('name');\r\n let width = model.get('width');\r\n let height = model.get('height');\r\n let unit = model.get('unitDim');\r\n let dim = width && height ? `${width}x${height}${unit}` : '';\r\n name = name || model.getFilename();\r\n return `\r\n
    ${name}
    \r\n
    ${dim}
    \r\n `;\r\n },\r\n\r\n init(o) {\r\n const pfx = this.pfx;\r\n this.className += ` ${pfx}asset-image`;\r\n },\r\n\r\n /**\r\n * Triggered when the asset is clicked\r\n * @private\r\n * */\r\n onClick() {\r\n var onClick = this.config.onClick;\r\n var model = this.model;\r\n this.collection.trigger('deselectAll');\r\n this.$el.addClass(this.pfx + 'highlight');\r\n\r\n if (isFunction(onClick)) {\r\n onClick(model);\r\n } else {\r\n this.updateTarget(this.collection.target);\r\n }\r\n },\r\n\r\n /**\r\n * Triggered when the asset is double clicked\r\n * @private\r\n * */\r\n onDblClick() {\r\n const { em, model } = this;\r\n const onDblClick = this.config.onDblClick;\r\n\r\n if (isFunction(onDblClick)) {\r\n onDblClick(model);\r\n } else {\r\n this.updateTarget(this.collection.target);\r\n em && em.get('Modal').close();\r\n }\r\n\r\n var onSelect = this.collection.onSelect;\r\n isFunction(onSelect) && onSelect(model);\r\n },\r\n\r\n /**\r\n * Remove asset from collection\r\n * @private\r\n * */\r\n onRemove(e) {\r\n e.stopImmediatePropagation();\r\n this.model.collection.remove(this.model);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { clone } from 'underscore';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o = {}) {\r\n this.options = o;\r\n this.collection = o.collection;\r\n const config = o.config || {};\r\n this.config = config;\r\n this.pfx = config.stylePrefix || '';\r\n this.ppfx = config.pStylePrefix || '';\r\n this.em = config.em;\r\n this.className = this.pfx + 'asset';\r\n this.listenTo(this.model, 'destroy remove', this.remove);\r\n this.model.view = this;\r\n const init = this.init && this.init.bind(this);\r\n init && init(o);\r\n },\r\n\r\n template() {\r\n const pfx = this.pfx;\r\n return `\r\n
    \r\n ${this.getPreview()}\r\n
    \r\n
    \r\n ${this.getInfo()}\r\n
    \r\n
    \r\n ⨯\r\n
    \r\n `;\r\n },\r\n\r\n /**\r\n * Update target if exists\r\n * @param {Model} target\r\n * @private\r\n * */\r\n updateTarget(target) {\r\n if (target && target.set) {\r\n target.set('attributes', clone(target.get('attributes')));\r\n target.set('src', this.model.get('src'));\r\n }\r\n },\r\n\r\n getPreview() {\r\n return '';\r\n },\r\n\r\n getInfo() {\r\n return '';\r\n },\r\n\r\n render() {\r\n const el = this.el;\r\n el.innerHTML = this.template(this, this.model);\r\n el.className = this.className;\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport AssetImage from './AssetImage';\r\nimport AssetImageView from './../view/AssetImageView';\r\nimport TypeableCollection from 'domain_abstract/model/TypeableCollection';\r\n\r\nexport default Backbone.Collection.extend(TypeableCollection).extend({\r\n types: [\r\n {\r\n id: 'image',\r\n model: AssetImage,\r\n view: AssetImageView,\r\n isType(value) {\r\n if (typeof value == 'string') {\r\n return {\r\n type: 'image',\r\n src: value\r\n };\r\n }\r\n return value;\r\n }\r\n }\r\n ]\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n events: {\r\n submit: 'handleSubmit'\r\n },\r\n\r\n template(view) {\r\n const pfx = view.pfx;\r\n const ppfx = view.ppfx;\r\n return `\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n `;\r\n },\r\n\r\n initialize(o) {\r\n this.options = o;\r\n this.config = o.config;\r\n this.pfx = this.config.stylePrefix || '';\r\n this.ppfx = this.config.pStylePrefix || '';\r\n const coll = this.collection;\r\n this.listenTo(coll, 'reset', this.renderAssets);\r\n this.listenTo(coll, 'add', this.addToAsset);\r\n this.listenTo(coll, 'remove', this.removedAsset);\r\n this.listenTo(coll, 'deselectAll', this.deselectAll);\r\n },\r\n\r\n /**\r\n * Add new asset to the collection via string\r\n * @param {Event} e Event object\r\n * @return {this}\r\n * @private\r\n */\r\n handleSubmit(e) {\r\n e.preventDefault();\r\n const input = this.getAddInput();\r\n const url = input.value.trim();\r\n const handleAdd = this.config.handleAdd;\r\n\r\n if (!url) {\r\n return;\r\n }\r\n\r\n input.value = '';\r\n this.getAssetsEl().scrollTop = 0;\r\n\r\n if (handleAdd) {\r\n handleAdd.bind(this)(url);\r\n } else {\r\n this.options.globalCollection.add(url, { at: 0 });\r\n }\r\n },\r\n\r\n /**\r\n * Returns assets element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getAssetsEl() {\r\n //if(!this.assets) // Not able to cache as after the rerender it losses the ref\r\n return this.el.querySelector(`.${this.pfx}assets`);\r\n },\r\n\r\n /**\r\n * Returns input url element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getAddInput() {\r\n if (!this.inputUrl || !this.inputUrl.value)\r\n this.inputUrl = this.el.querySelector(`.${this.pfx}add-asset input`);\r\n return this.inputUrl;\r\n },\r\n\r\n /**\r\n * Triggered when an asset is removed\r\n * @param {Asset} model Removed asset\r\n * @private\r\n */\r\n removedAsset(model) {\r\n if (!this.collection.length) {\r\n this.toggleNoAssets();\r\n }\r\n },\r\n\r\n /**\r\n * Add asset to collection\r\n * @private\r\n * */\r\n addToAsset(model) {\r\n if (this.collection.length == 1) {\r\n this.toggleNoAssets(1);\r\n }\r\n this.addAsset(model);\r\n },\r\n\r\n /**\r\n * Add new asset to collection\r\n * @param Object Model\r\n * @param Object Fragment collection\r\n * @return Object Object created\r\n * @private\r\n * */\r\n addAsset(model, fragmentEl = null) {\r\n const fragment = fragmentEl;\r\n const collection = this.collection;\r\n const config = this.config;\r\n const rendered = new model.typeView({\r\n model,\r\n collection,\r\n config\r\n }).render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n const assetsEl = this.getAssetsEl();\r\n if (assetsEl) {\r\n assetsEl.insertBefore(rendered, assetsEl.firstChild);\r\n }\r\n }\r\n\r\n return rendered;\r\n },\r\n\r\n /**\r\n * Checks if to show noAssets\r\n * @param {Boolean} hide\r\n * @private\r\n */\r\n toggleNoAssets(hide) {\r\n const assetsEl = this.$el.find(`.${this.pfx}assets`);\r\n\r\n if (hide) {\r\n assetsEl.empty();\r\n } else {\r\n const noAssets = this.config.noAssets;\r\n noAssets && assetsEl.append(noAssets);\r\n }\r\n },\r\n\r\n /**\r\n * Deselect all assets\r\n * @private\r\n * */\r\n deselectAll() {\r\n const pfx = this.pfx;\r\n this.$el.find(`.${pfx}highlight`).removeClass(`${pfx}highlight`);\r\n },\r\n\r\n renderAssets() {\r\n const fragment = document.createDocumentFragment();\r\n const assets = this.$el.find(`.${this.pfx}assets`);\r\n assets.empty();\r\n this.toggleNoAssets(this.collection.length);\r\n this.collection.each(model => this.addAsset(model, fragment));\r\n assets.append(fragment);\r\n },\r\n\r\n render() {\r\n const fuRendered = this.options.fu.render().el;\r\n this.$el.empty();\r\n this.$el.append(fuRendered).append(this.template(this));\r\n this.el.className = `${this.ppfx}asset-manager`;\r\n this.renderAssets();\r\n this.rendered = 1;\r\n return this;\r\n }\r\n});\r\n","import { template } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport fetch from 'utils/fetch';\r\n\r\nexport default Backbone.View.extend(\r\n {\r\n template: template(`\r\n
    \r\n
    title\"><%= title %>
    \r\n \" name=\"file\" accept=\"*/*\" <%= disabled ? 'disabled' : '' %> <%= multiUpload ? 'multiple' : '' %>/>\r\n
    \r\n
    \r\n `),\r\n\r\n events: {},\r\n\r\n initialize(opts = {}) {\r\n this.options = opts;\r\n const c = opts.config || {};\r\n this.config = c;\r\n this.pfx = c.stylePrefix || '';\r\n this.ppfx = c.pStylePrefix || '';\r\n this.target = this.options.globalCollection || {};\r\n this.uploadId = this.pfx + 'uploadFile';\r\n this.disabled =\r\n c.disableUpload !== undefined\r\n ? c.disableUpload\r\n : !c.upload && !c.embedAsBase64;\r\n this.multiUpload = c.multiUpload !== undefined ? c.multiUpload : true;\r\n this.events['change #' + this.uploadId] = 'uploadFile';\r\n let uploadFile = c.uploadFile;\r\n\r\n if (uploadFile) {\r\n this.uploadFile = uploadFile.bind(this);\r\n } else if (!c.upload && c.embedAsBase64) {\r\n this.uploadFile = this.constructor.embedAsBase64;\r\n }\r\n\r\n this.delegateEvents();\r\n },\r\n\r\n /**\r\n * Triggered before the upload is started\r\n * @private\r\n */\r\n onUploadStart() {\r\n const em = this.config.em;\r\n em && em.trigger('asset:upload:start');\r\n },\r\n\r\n /**\r\n * Triggered after the upload is ended\r\n * @param {Object|string} res End result\r\n * @private\r\n */\r\n onUploadEnd(res) {\r\n const { $el, config } = this;\r\n const em = config.em;\r\n em && em.trigger('asset:upload:end', res);\r\n const input = $el.find('input');\r\n input && input.val('');\r\n },\r\n\r\n /**\r\n * Triggered on upload error\r\n * @param {Object} err Error\r\n * @private\r\n */\r\n onUploadError(err) {\r\n const em = this.config.em;\r\n console.error(err);\r\n this.onUploadEnd(err);\r\n em && em.trigger('asset:upload:error', err);\r\n },\r\n\r\n /**\r\n * Triggered on upload response\r\n * @param {string} text Response text\r\n * @private\r\n */\r\n onUploadResponse(text, clb) {\r\n const em = this.config.em;\r\n const config = this.config;\r\n const target = this.target;\r\n let json;\r\n try {\r\n json = typeof text === 'string' ? JSON.parse(text) : text;\r\n } catch (e) {\r\n json = text;\r\n }\r\n\r\n em && em.trigger('asset:upload:response', json);\r\n\r\n if (config.autoAdd && target) {\r\n target.add(json.data, { at: 0 });\r\n }\r\n\r\n this.onUploadEnd(text);\r\n clb && clb(json);\r\n },\r\n\r\n /**\r\n * Upload files\r\n * @param {Object} e Event\r\n * @return {Promise}\r\n * @private\r\n * */\r\n uploadFile(e, clb) {\r\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\r\n const { config } = this;\r\n const { beforeUpload } = config;\r\n\r\n const beforeUploadResponse = beforeUpload && beforeUpload(files);\r\n if (beforeUploadResponse === false) return;\r\n\r\n const body = new FormData();\r\n const { params, customFetch } = config;\r\n\r\n for (let param in params) {\r\n body.append(param, params[param]);\r\n }\r\n\r\n if (this.multiUpload) {\r\n for (let i = 0; i < files.length; i++) {\r\n body.append(`${config.uploadName}[]`, files[i]);\r\n }\r\n } else if (files.length) {\r\n body.append(config.uploadName, files[0]);\r\n }\r\n\r\n var target = this.target;\r\n const url = config.upload;\r\n const headers = config.headers;\r\n const reqHead = 'X-Requested-With';\r\n\r\n if (typeof headers[reqHead] == 'undefined') {\r\n headers[reqHead] = 'XMLHttpRequest';\r\n }\r\n\r\n if (url) {\r\n this.onUploadStart();\r\n const fetchOpts = {\r\n method: 'post',\r\n credentials: config.credentials || 'include',\r\n headers,\r\n body\r\n };\r\n const fetchResult = customFetch\r\n ? customFetch(url, fetchOpts)\r\n : fetch(url, fetchOpts).then(res =>\r\n ((res.status / 200) | 0) == 1\r\n ? res.text()\r\n : res.text().then(text => Promise.reject(text))\r\n );\r\n return fetchResult\r\n .then(text => this.onUploadResponse(text, clb))\r\n .catch(err => this.onUploadError(err));\r\n }\r\n },\r\n\r\n /**\r\n * Make input file droppable\r\n * @private\r\n * */\r\n initDrop() {\r\n var that = this;\r\n if (!this.uploadForm) {\r\n this.uploadForm = this.$el.find('form').get(0);\r\n if ('draggable' in this.uploadForm) {\r\n var uploadFile = this.uploadFile;\r\n this.uploadForm.ondragover = function() {\r\n this.className = that.pfx + 'hover';\r\n return false;\r\n };\r\n this.uploadForm.ondragleave = function() {\r\n this.className = '';\r\n return false;\r\n };\r\n this.uploadForm.ondrop = function(e) {\r\n this.className = '';\r\n e.preventDefault();\r\n that.uploadFile(e);\r\n return;\r\n };\r\n }\r\n }\r\n },\r\n\r\n initDropzone(ev) {\r\n let addedCls = 0;\r\n const c = this.config;\r\n const em = ev.model;\r\n const edEl = ev.el;\r\n const editor = em.get('Editor');\r\n const container = em.get('Config').el;\r\n const frameEl = em.get('Canvas').getBody();\r\n const ppfx = this.ppfx;\r\n const updatedCls = `${ppfx}dropzone-active`;\r\n const dropzoneCls = `${ppfx}dropzone`;\r\n const cleanEditorElCls = () => {\r\n edEl.className = edEl.className.replace(updatedCls, '').trim();\r\n addedCls = 0;\r\n };\r\n const onDragOver = () => {\r\n if (!addedCls) {\r\n edEl.className += ` ${updatedCls}`;\r\n addedCls = 1;\r\n }\r\n return false;\r\n };\r\n const onDragLeave = () => {\r\n cleanEditorElCls();\r\n return false;\r\n };\r\n const onDrop = e => {\r\n cleanEditorElCls();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.uploadFile(e);\r\n\r\n if (c.openAssetsOnDrop && editor) {\r\n const target = editor.getSelected();\r\n editor.runCommand('open-assets', {\r\n target,\r\n onSelect() {\r\n editor.Modal.close();\r\n editor.AssetManager.setTarget(null);\r\n }\r\n });\r\n }\r\n\r\n return false;\r\n };\r\n\r\n ev.$el.append(`
    ${c.dropzoneContent}
    `);\r\n cleanEditorElCls();\r\n\r\n if ('draggable' in edEl) {\r\n [edEl, frameEl].forEach(item => {\r\n item.ondragover = onDragOver;\r\n item.ondragleave = onDragLeave;\r\n item.ondrop = onDrop;\r\n });\r\n }\r\n },\r\n\r\n render() {\r\n this.$el.html(\r\n this.template({\r\n title: this.config.uploadText,\r\n uploadId: this.uploadId,\r\n disabled: this.disabled,\r\n multiUpload: this.multiUpload,\r\n pfx: this.pfx\r\n })\r\n );\r\n this.initDrop();\r\n this.$el.attr('class', this.pfx + 'file-uploader');\r\n return this;\r\n }\r\n },\r\n {\r\n embedAsBase64: function(e, clb) {\r\n // List files dropped\r\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\r\n const response = { data: [] };\r\n\r\n // Unlikely, widely supported now\r\n if (!FileReader) {\r\n this.onUploadError(\r\n new Error('Unsupported platform, FileReader is not defined')\r\n );\r\n return;\r\n }\r\n\r\n const promises = [];\r\n const mimeTypeMatcher = /^(.+)\\/(.+)$/;\r\n\r\n for (const file of files) {\r\n // For each file a reader (to read the base64 URL)\r\n // and a promise (to track and merge results and errors)\r\n const promise = new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.addEventListener('load', event => {\r\n let type;\r\n const name = file.name;\r\n\r\n // Try to find the MIME type of the file.\r\n const match = mimeTypeMatcher.exec(file.type);\r\n if (match) {\r\n type = match[1]; // The first part in the MIME, \"image\" in image/png\r\n } else {\r\n type = file.type;\r\n }\r\n\r\n /*\r\n // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/\r\n var URL = window.URL || window.webkitURL\r\n var file = this.files[0]\r\n var type = file.type\r\n var videoNode = document.createElement('video');\r\n var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types\r\n if (canPlay === '') canPlay = 'no'\r\n var message = 'Can play type \"' + type + '\": ' + canPlay\r\n var isError = canPlay === 'no'\r\n displayMessage(message, isError)\r\n\r\n if (isError) {\r\n return\r\n }\r\n\r\n var fileURL = URL.createObjectURL(file)\r\n videoNode.src = fileURL\r\n */\r\n\r\n // If it's an image, try to find its size\r\n if (type === 'image') {\r\n const data = {\r\n src: reader.result,\r\n name,\r\n type,\r\n height: 0,\r\n width: 0\r\n };\r\n\r\n const image = new Image();\r\n image.addEventListener('error', error => {\r\n reject(error);\r\n });\r\n image.addEventListener('load', () => {\r\n data.height = image.height;\r\n data.width = image.width;\r\n resolve(data);\r\n });\r\n image.src = data.src;\r\n } else if (type) {\r\n // Not an image, but has a type\r\n resolve({\r\n src: reader.result,\r\n name,\r\n type\r\n });\r\n } else {\r\n // No type found, resolve with the URL only\r\n resolve(reader.result);\r\n }\r\n });\r\n reader.addEventListener('error', error => {\r\n reject(error);\r\n });\r\n reader.addEventListener('abort', error => {\r\n reject('Aborted');\r\n });\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n\r\n promises.push(promise);\r\n }\r\n\r\n Promise.all(promises).then(\r\n data => {\r\n response.data = data;\r\n this.onUploadResponse(response, clb);\r\n },\r\n error => {\r\n this.onUploadError(error);\r\n }\r\n );\r\n }\r\n }\r\n);\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/asset_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * assetManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const assetManager = editor.AssetManager;\r\n * ```\r\n *\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getall)\r\n * * [getAllVisible](#getallvisible)\r\n * * [remove](#remove)\r\n * * [store](#store)\r\n * * [load](#load)\r\n * * [getContainer](#getcontainer)\r\n * * [getAssetsEl](#getassetsel)\r\n * * [addType](#addtype)\r\n * * [getType](#gettype)\r\n * * [getTypes](#gettypes)\r\n *\r\n * @module AssetManager\r\n */\r\n\r\nimport defaults from './config/config';\r\nimport Assets from './model/Assets';\r\nimport AssetsView from './view/AssetsView';\r\nimport FileUpload from './view/FileUploader';\r\n\r\nexport default () => {\r\n let c = {};\r\n let assets, am, fu;\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'AssetManager',\r\n\r\n /**\r\n * Mandatory for the storage manager\r\n * @type {String}\r\n * @private\r\n */\r\n storageKey: 'assets',\r\n\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Initialize module\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n\r\n for (let name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n const ppfx = c.pStylePrefix;\r\n const em = c.em;\r\n\r\n if (ppfx) {\r\n c.stylePrefix = ppfx + c.stylePrefix;\r\n }\r\n\r\n // Global assets collection\r\n assets = new Assets([]);\r\n const obj = {\r\n // Collection visible in asset manager\r\n collection: new Assets([]),\r\n globalCollection: assets,\r\n config: c\r\n };\r\n fu = new FileUpload(obj);\r\n obj.fu = fu;\r\n am = new AssetsView(obj);\r\n\r\n // Setup the sync between the global and public collections\r\n assets.listenTo(assets, 'add', model => {\r\n this.getAllVisible().add(model);\r\n em && em.trigger('asset:add', model);\r\n });\r\n\r\n assets.listenTo(assets, 'remove', model => {\r\n this.getAllVisible().remove(model);\r\n em && em.trigger('asset:remove', model);\r\n });\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new asset/s to the collection. URLs are supposed to be unique\r\n * @param {string|Object|Array|Array} asset URL strings or an objects representing the resource.\r\n * @param {Object} [opts] Options\r\n * @return {Model}\r\n * @example\r\n * // In case of strings, would be interpreted as images\r\n * assetManager.add('http://img.jpg');\r\n * assetManager.add(['http://img.jpg', './path/to/img.png']);\r\n *\r\n * // Using objects you could indicate the type and other meta informations\r\n * assetManager.add({\r\n * \tsrc: 'http://img.jpg',\r\n * \t//type: 'image',\t//image is default\r\n * \theight: 300,\r\n *\twidth: 200,\r\n * });\r\n * assetManager.add([{\r\n * \tsrc: 'http://img.jpg',\r\n * },{\r\n * \tsrc: './path/to/img.png',\r\n * }]);\r\n */\r\n add(asset, opts = {}) {\r\n // Put the model at the beginning\r\n if (typeof opts.at == 'undefined') {\r\n opts.at = 0;\r\n }\r\n\r\n return assets.add(asset, opts);\r\n },\r\n\r\n /**\r\n * Returns the asset by URL\r\n * @param {string} src URL of the asset\r\n * @return {Object} Object representing the asset\r\n * @example\r\n * var asset = assetManager.get('http://img.jpg');\r\n */\r\n get(src) {\r\n return assets.where({ src })[0];\r\n },\r\n\r\n /**\r\n * Return the global collection, containing all the assets\r\n * @return {Collection}\r\n */\r\n getAll() {\r\n return assets;\r\n },\r\n\r\n /**\r\n * Return the visible collection, which containes assets actually rendered\r\n * @return {Collection}\r\n */\r\n getAllVisible() {\r\n return am.collection;\r\n },\r\n\r\n /**\r\n * Remove the asset by its URL\r\n * @param {string} src URL of the asset\r\n * @return {this}\r\n * @example\r\n * assetManager.remove('http://img.jpg');\r\n */\r\n remove(src) {\r\n var asset = this.get(src);\r\n this.getAll().remove(asset);\r\n return this;\r\n },\r\n\r\n /**\r\n * Store assets data to the selected storage\r\n * @param {Boolean} noStore If true, won't store\r\n * @return {Object} Data to store\r\n * @example\r\n * var assets = assetManager.store();\r\n */\r\n store(noStore) {\r\n var obj = {};\r\n var assets = JSON.stringify(this.getAll().toJSON());\r\n obj[this.storageKey] = assets;\r\n if (!noStore && c.stm) c.stm.store(obj);\r\n return obj;\r\n },\r\n\r\n /**\r\n * Load data from the passed object.\r\n * The fetched data will be added to the collection.\r\n * @param {Object} data Object of data to load\r\n * @return {Object} Loaded assets\r\n * @example\r\n * var assets = assetManager.load({\r\n * \tassets: [...]\r\n * })\r\n *\r\n */\r\n load(data = {}) {\r\n const name = this.storageKey;\r\n let assets = data[name] || [];\r\n\r\n if (typeof assets == 'string') {\r\n try {\r\n assets = JSON.parse(data[name]);\r\n } catch (err) {}\r\n }\r\n\r\n if (assets && assets.length) {\r\n this.getAll().reset(assets);\r\n }\r\n\r\n return assets;\r\n },\r\n\r\n /**\r\n * Return the Asset Manager Container\r\n * @return {HTMLElement}\r\n */\r\n getContainer() {\r\n return am.el;\r\n },\r\n\r\n /**\r\n * Get assets element container\r\n * @return {HTMLElement}\r\n */\r\n getAssetsEl() {\r\n return am.el.querySelector('[data-el=assets]');\r\n },\r\n\r\n /**\r\n * Render assets\r\n * @param {array} assets Assets to render, without the argument will render\r\n * all global assets\r\n * @return {HTMLElement}\r\n * @example\r\n * // Render all assets\r\n * assetManager.render();\r\n *\r\n * // Render some of the assets\r\n * const assets = assetManager.getAll();\r\n * assetManager.render(assets.filter(\r\n * asset => asset.get('category') == 'cats'\r\n * ));\r\n */\r\n render(assets) {\r\n const toRender = assets || this.getAll().models;\r\n\r\n if (!am.rendered) {\r\n am.render();\r\n }\r\n\r\n am.collection.reset(toRender);\r\n return this.getContainer();\r\n },\r\n\r\n /**\r\n * Add new type. If you want to get more about type definition we suggest to read the [module's page](/modules/Assets.html)\r\n * @param {string} id Type ID\r\n * @param {Object} definition Definition of the type. Each definition contains\r\n * `model` (business logic), `view` (presentation logic)\r\n * and `isType` function which recognize the type of the\r\n * passed entity\r\n * @example\r\n * assetManager.addType('my-type', {\r\n * model: {},\r\n * view: {},\r\n * isType: (value) => {},\r\n * })\r\n */\r\n addType(id, definition) {\r\n this.getAll().addType(id, definition);\r\n },\r\n\r\n /**\r\n * Get type\r\n * @param {string} id Type ID\r\n * @return {Object} Type definition\r\n */\r\n getType(id) {\r\n return this.getAll().getType(id);\r\n },\r\n\r\n /**\r\n * Get types\r\n * @return {Array}\r\n */\r\n getTypes() {\r\n return this.getAll().getTypes();\r\n },\r\n\r\n //-------\r\n\r\n AssetsView() {\r\n return am;\r\n },\r\n\r\n FileUploader() {\r\n return fu;\r\n },\r\n\r\n onLoad() {\r\n this.getAll().reset(c.assets);\r\n },\r\n\r\n postRender(editorView) {\r\n c.dropzone && fu.initDropzone(editorView);\r\n },\r\n\r\n /**\r\n * Set new target\r\n * @param\t{Object}\tm Model\r\n * @private\r\n * */\r\n setTarget(m) {\r\n am.collection.target = m;\r\n },\r\n\r\n /**\r\n * Set callback after asset was selected\r\n * @param\t{Object}\tf Callback function\r\n * @private\r\n * */\r\n onSelect(f) {\r\n am.collection.onSelect = f;\r\n },\r\n\r\n /**\r\n * Set callback to fire when the asset is clicked\r\n * @param {function} func\r\n * @private\r\n */\r\n onClick(func) {\r\n c.onClick = func;\r\n },\r\n\r\n /**\r\n * Set callback to fire when the asset is double clicked\r\n * @param {function} func\r\n * @private\r\n */\r\n onDblClick(func) {\r\n c.onDblClick = func;\r\n }\r\n };\r\n};\r\n","export default {\r\n // Specify the element to use as a container, string (query) or HTMLElement\r\n // With the empty value, nothing will be rendered\r\n appendTo: '',\r\n\r\n // Append blocks to canvas on click\r\n appendOnClick: 0,\r\n\r\n blocks: [\r\n //layout\r\n {\r\n id: 'onecolumn',\r\n label: 'one Column',\r\n icon: 'onecolumnblock.svg',\r\n content: `\r\n
    \r\n
    \r\n
    \r\n `,\r\n category: 'Layout',\r\n attributes: {\r\n title: 'Insert Div Block'\r\n }\r\n },\r\n {\r\n id: 'twocolumn',\r\n label: 'Two Column',\r\n icon: 'twocolumnblock.svg',\r\n content: `\r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n category: 'Layout',\r\n attributes: {\r\n title: 'Insert Div Block'\r\n }\r\n },\r\n {\r\n id: 'threecolumn',\r\n label: 'Three Column',\r\n icon: 'threecolumnblock.svg',\r\n content: `\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n category: 'Layout',\r\n attributes: {\r\n title: 'Insert Div Block'\r\n }\r\n },\r\n {\r\n id: 'grid',\r\n label: 'Grid',\r\n icon: 'gridblock.svg',\r\n content: `
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n category: 'Layout'\r\n },\r\n {\r\n id: 'container',\r\n label: 'Container',\r\n icon: 'container.svg',\r\n content: {\r\n type: 'default',\r\n name: 'Block',\r\n style: {\r\n padding: '20px'\r\n }\r\n },\r\n category: 'Layout',\r\n attributes: {\r\n title: 'Insert Div Block'\r\n }\r\n },\r\n\r\n // basic\r\n {\r\n id: 'h-navbar',\r\n label: 'Navbar',\r\n icon: 'navblock.svg',\r\n content: `
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n `,\r\n category: 'Basic',\r\n attributes: {\r\n title: 'Insert Navbar'\r\n }\r\n },\r\n {\r\n id: 'image',\r\n label: 'Image',\r\n icon: 'imageblock.svg',\r\n content: {\r\n type: 'image',\r\n style: {\r\n width: '200px',\r\n height: '200px',\r\n padding: '10px'\r\n }\r\n },\r\n category: 'Basic',\r\n attributes: {\r\n title: 'Insert Image'\r\n }\r\n },\r\n // {\r\n // id: 'video',\r\n // label: 'Video',\r\n // icon: '',\r\n // content: {\r\n // type: 'video'\r\n // },\r\n // category: 'Basic',\r\n // attributes: {\r\n // title: 'Insert Image'\r\n // }\r\n // },\r\n {\r\n id: 'text',\r\n label: 'Text',\r\n icon: 'textblock.svg',\r\n content: {\r\n type: 'text',\r\n content: 'Double click here to edit',\r\n resizable: true\r\n },\r\n category: 'Basic',\r\n attributes: {\r\n title: 'Insert Text'\r\n }\r\n },\r\n {\r\n id: 'label',\r\n label: 'Label',\r\n icon: 'labelblock.svg',\r\n content: {\r\n type: 'label',\r\n content: 'Double Click To Edit'\r\n },\r\n category: 'Basic',\r\n attributes: {\r\n title: 'Insert Text'\r\n }\r\n },\r\n {\r\n id: 'horizontal_divider',\r\n label: 'Hr',\r\n icon: 'hr.svg',\r\n content: `\r\n
    \r\n \r\n `,\r\n category: 'Basic'\r\n },\r\n {\r\n id: 'vertical_divider',\r\n label: 'Vr',\r\n icon: 'vr.svg',\r\n content: `\r\n
    \r\n \r\n `,\r\n category: 'Basic'\r\n },\r\n {\r\n id: 'button',\r\n label: 'Button',\r\n icon: 'buttonblock.svg',\r\n content: `
    \r\n
    Click Me
    \r\n
    \r\n \r\n `,\r\n category: 'Basic'\r\n },\r\n {\r\n id: 'badge',\r\n label: 'Badge',\r\n icon: 'badgeblock.svg',\r\n content: `
    Badge
    \r\n \r\n `,\r\n category: 'Basic'\r\n }\r\n\r\n //input\r\n // {\r\n // id: 'input',\r\n // label: 'Input',\r\n // icon: 'inputblock.svg',\r\n // content: {\r\n // type: 'input'\r\n // },\r\n // category: 'Form Element'\r\n // },\r\n ]\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n id: '',\r\n label: '',\r\n open: true,\r\n attributes: {}\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Category from './Category';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n // If true, triggers an 'active' event on dropped component\r\n activate: 0,\r\n // If true, the dropped component will be selected\r\n select: 0,\r\n // If true, all IDs of dropped component and its style will be changed\r\n resetId: 0,\r\n // Block label\r\n label: '',\r\n // HTML string for the media of the block, eg. SVG icon, image, etc.\r\n media: '',\r\n content: '',\r\n category: '',\r\n attributes: {}\r\n },\r\n\r\n initialize(opts = {}) {\r\n let category = this.get('category');\r\n\r\n if (category) {\r\n if (typeof category == 'string') {\r\n var catObj = new Category({\r\n id: category,\r\n label: category\r\n });\r\n }\r\n }\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Block from './Block';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Block\r\n});\r\n","import Backbone from 'backbone';\r\nimport Category from './Category';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Category\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isObject } from 'underscore';\r\nimport { on, off, hasDnd } from 'utils/mixins';\r\n\r\nexport default Backbone.View.extend({\r\n events: {\r\n click: 'handleClick',\r\n mousedown: 'startDrag',\r\n dragstart: 'handleDragStart',\r\n drag: 'handleDrag',\r\n dragend: 'handleDragEnd'\r\n },\r\n\r\n initialize(o, config = {}) {\r\n const { model } = this;\r\n this.em = config.em;\r\n this.config = config;\r\n this.endDrag = this.endDrag.bind(this);\r\n this.ppfx = config.pStylePrefix || '';\r\n this.listenTo(model, 'destroy remove', this.remove);\r\n this.listenTo(model, 'change', this.render);\r\n },\r\n\r\n handleClick() {\r\n const { config, model, em } = this;\r\n if (!config.appendOnClick) return;\r\n const sorter = config.getSorter();\r\n const content = model.get('content');\r\n const selected = em.getSelected();\r\n sorter.setDropContent(content);\r\n let target, valid;\r\n\r\n // If there is a selected component, try first to append\r\n // the block inside, otherwise, try to place it as a next sibling\r\n if (selected) {\r\n valid = sorter.validTarget(selected.getEl(), content);\r\n\r\n if (valid.valid) {\r\n target = selected;\r\n } else {\r\n const parent = selected.parent();\r\n valid = sorter.validTarget(parent.getEl(), content);\r\n if (valid.valid) target = parent;\r\n }\r\n }\r\n\r\n // If no target found yet, try to append the block to the wrapper\r\n if (!target) {\r\n const wrapper = em.getWrapper();\r\n valid = sorter.validTarget(wrapper.getEl(), content);\r\n if (valid.valid) target = wrapper;\r\n }\r\n\r\n const result = target && target.append(content)[0];\r\n result && em.setSelected(result, { scroll: 1 });\r\n },\r\n\r\n /**\r\n * Start block dragging\r\n * @private\r\n */\r\n startDrag(e) {\r\n const { config, em } = this;\r\n //Right or middel click\r\n if (e.button !== 0 || !config.getSorter || this.el.draggable) return;\r\n em.refreshCanvas();\r\n const sorter = config.getSorter();\r\n sorter.setDragHelper(this.el, e);\r\n sorter.setDropContent(this.model.get('content'));\r\n sorter.startSort(this.el);\r\n on(document, 'mouseup', this.endDrag);\r\n },\r\n\r\n handleDragStart(ev) {\r\n const { em, model } = this;\r\n const content = model.get('content');\r\n const isObj = isObject(content);\r\n const data = isObj ? JSON.stringify(content) : content;\r\n em.set('dragResult');\r\n\r\n // Note: data are not available on dragenter for security reason,\r\n // we have to use dragContent as we need it for the Sorter context\r\n // IE11 supports only 'text' data type\r\n ev.dataTransfer.setData('text', data);\r\n em.set('dragContent', content);\r\n em.trigger('block:drag:start', model, ev);\r\n },\r\n\r\n handleDrag(ev) {\r\n this.em.trigger('block:drag', this.model, ev);\r\n },\r\n\r\n handleDragEnd() {\r\n const { em, model } = this;\r\n const result = em.get('dragResult');\r\n\r\n if (result) {\r\n const oldKey = 'activeOnRender';\r\n const oldActive = result.get && result.get(oldKey);\r\n\r\n if (model.get('activate') || oldActive) {\r\n result.trigger('active');\r\n result.set(oldKey, 0);\r\n }\r\n\r\n if (model.get('select')) {\r\n em.setSelected(result);\r\n }\r\n\r\n if (model.get('resetId')) {\r\n result.onAll(model => model.resetId());\r\n }\r\n }\r\n\r\n em.set({\r\n dragResult: null,\r\n dragContent: null\r\n });\r\n\r\n em.trigger('block:drag:stop', result, model);\r\n },\r\n\r\n /**\r\n * Drop block\r\n * @private\r\n */\r\n endDrag(e) {\r\n off(document, 'mouseup', this.endDrag);\r\n const sorter = this.config.getSorter();\r\n\r\n // After dropping the block in the canvas the mouseup event is not yet\r\n // triggerd on 'this.doc' and so clicking outside, the sorter, tries to move\r\n // things (throws false positives). As this method just need to drop away\r\n // the block helper I use the trick of 'moved = 0' to void those errors.\r\n sorter.moved = 0;\r\n sorter.endMove();\r\n },\r\n\r\n render() {\r\n var sourceFile = require('../../../config/config.js');\r\n const rootDir = sourceFile.rootDir;\r\n const { em, el, ppfx, model } = this;\r\n const className = `${ppfx}block`;\r\n const label = model.get('label');\r\n const render = model.get('render');\r\n const media = model.get('media');\r\n const icon = model.get('icon');\r\n const urlregex = /^(?:http(s)?:\\/\\/)[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/gm;\r\n el.className += ` ${className} ${ppfx}one-bg ${ppfx}four-color-h`;\r\n el.innerHTML = `\r\n ${media ? `
    ${media}
    ` : ''}\r\n
    ${\r\n icon\r\n ? ``\r\n : ``\r\n }${label}
    \r\n `;\r\n el.title = el.textContent.trim();\r\n hasDnd(em) && el.setAttribute('draggable', true);\r\n const result = render && render({ el, model, className, prefix: ppfx });\r\n if (result) el.innerHTML = result;\r\n return this;\r\n }\r\n});\r\n","import { template } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n template: template(`\r\n
    title\">\r\n caret-icon\">\r\n <%= label %>\r\n
    \r\n
    blocks-c\">
    \r\n `),\r\n\r\n events: {},\r\n\r\n initialize(o = {}, config = {}) {\r\n this.config = config;\r\n const pfx = this.config.pStylePrefix || '';\r\n this.pfx = pfx;\r\n this.caretR = 'fa fa-caret-right';\r\n this.caretD = 'fa fa-caret-down';\r\n this.iconClass = `${pfx}caret-icon`;\r\n this.activeClass = `${pfx}open`;\r\n this.className = `${pfx}block-category`;\r\n this.events[`click .${pfx}title`] = 'toggle';\r\n this.listenTo(this.model, 'change:open', this.updateVisibility);\r\n this.delegateEvents();\r\n },\r\n\r\n updateVisibility() {\r\n if (this.model.get('open')) this.open();\r\n else this.close();\r\n },\r\n\r\n open() {\r\n this.el.className = `${this.className} ${this.activeClass}`;\r\n this.getIconEl().className = `${this.iconClass} ${this.caretD}`;\r\n this.getBlocksEl().style.display = '';\r\n },\r\n\r\n close() {\r\n this.el.className = this.className;\r\n this.getIconEl().className = `${this.iconClass} ${this.caretR}`;\r\n this.getBlocksEl().style.display = 'none';\r\n },\r\n\r\n toggle() {\r\n var model = this.model;\r\n model.set('open', !model.get('open'));\r\n },\r\n\r\n getIconEl() {\r\n if (!this.iconEl) {\r\n this.iconEl = this.el.querySelector('.' + this.iconClass);\r\n }\r\n\r\n return this.iconEl;\r\n },\r\n\r\n getBlocksEl() {\r\n if (!this.blocksEl) {\r\n this.blocksEl = this.el.querySelector('.' + this.pfx + 'blocks-c');\r\n }\r\n\r\n return this.blocksEl;\r\n },\r\n\r\n append(el) {\r\n this.getBlocksEl().appendChild(el);\r\n },\r\n\r\n render() {\r\n this.el.innerHTML = this.template({\r\n pfx: this.pfx,\r\n label: this.model.get('label')\r\n });\r\n this.el.className = this.className;\r\n this.$el.css({ order: this.model.get('order') });\r\n this.updateVisibility();\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isString, isObject, bindAll } from 'underscore';\r\nimport BlockView from './BlockView';\r\nimport CategoryView from './CategoryView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(opts, config) {\r\n bindAll(this, 'getSorter', 'onDrag', 'onDrop');\r\n this.config = config || {};\r\n this.categories = opts.categories || '';\r\n this.renderedCategories = [];\r\n var ppfx = this.config.pStylePrefix || '';\r\n this.ppfx = ppfx;\r\n this.noCatClass = `${ppfx}blocks-no-cat`;\r\n this.blockContClass = `${ppfx}blocks-c`;\r\n this.catsClass = `${ppfx}block-categories`;\r\n const coll = this.collection;\r\n this.listenTo(coll, 'add', this.addTo);\r\n this.listenTo(coll, 'reset', this.render);\r\n this.em = this.config.em;\r\n this.tac = 'test-tac';\r\n this.grabbingCls = this.ppfx + 'grabbing';\r\n\r\n if (this.em) {\r\n this.config.getSorter = this.getSorter;\r\n this.canvas = this.em.get('Canvas');\r\n }\r\n },\r\n\r\n updateConfig(opts = {}) {\r\n this.config = {\r\n ...this.config,\r\n ...opts\r\n };\r\n },\r\n\r\n /**\r\n * Get sorter\r\n * @private\r\n */\r\n getSorter() {\r\n if (!this.em) return;\r\n if (!this.sorter) {\r\n var utils = this.em.get('Utils');\r\n var canvas = this.canvas;\r\n this.sorter = new utils.Sorter({\r\n container: canvas.getBody(),\r\n placer: canvas.getPlacerEl(),\r\n containerSel: '*',\r\n itemSel: '*',\r\n pfx: this.ppfx,\r\n onStart: this.onDrag,\r\n onEndMove: this.onDrop,\r\n onMove: this.onMove,\r\n document: canvas.getFrameEl().contentDocument,\r\n direction: 'a',\r\n wmargin: 1,\r\n nested: 1,\r\n em: this.em,\r\n canvasRelative: 1\r\n });\r\n }\r\n return this.sorter;\r\n },\r\n\r\n /**\r\n * Callback when block is on drag\r\n * @private\r\n */\r\n onDrag(e) {\r\n this.em.stopDefault();\r\n this.em.trigger('block:drag:start', e);\r\n },\r\n\r\n onMove(e) {\r\n this.em.trigger('block:drag:move', e);\r\n },\r\n\r\n /**\r\n * Callback when block is dropped\r\n * @private\r\n */\r\n onDrop(model) {\r\n const em = this.em;\r\n em.runDefault();\r\n\r\n if (model && model.get) {\r\n if (model.get('activeOnRender')) {\r\n model.trigger('active');\r\n model.set('activeOnRender', 0);\r\n }\r\n\r\n em.trigger('block:drag:stop', model);\r\n }\r\n },\r\n\r\n /**\r\n * Add new model to the collection\r\n * @param {Model} model\r\n * @private\r\n * */\r\n addTo(model) {\r\n this.add(model);\r\n },\r\n\r\n /**\r\n * Render new model inside the view\r\n * @param {Model} model\r\n * @param {Object} fragment Fragment collection\r\n * @private\r\n * */\r\n add(model, fragment) {\r\n const { config } = this;\r\n var frag = fragment || null;\r\n var view = new BlockView(\r\n {\r\n model,\r\n attributes: model.get('attributes')\r\n },\r\n config\r\n );\r\n var rendered = view.render().el;\r\n var category = model.get('category');\r\n\r\n // Check for categories\r\n if (category && this.categories && !config.ignoreCategories) {\r\n if (isString(category)) {\r\n category = {\r\n id: category,\r\n label: category\r\n };\r\n } else if (isObject(category) && !category.id) {\r\n category.id = category.label;\r\n }\r\n\r\n var catModel = this.categories.add(category);\r\n var catId = catModel.get('id');\r\n var catView = this.renderedCategories[catId];\r\n var categories = this.getCategoriesEl();\r\n model.set('category', catModel);\r\n\r\n if (!catView && categories) {\r\n catView = new CategoryView(\r\n {\r\n model: catModel\r\n },\r\n this.config\r\n ).render();\r\n this.renderedCategories[catId] = catView;\r\n categories.appendChild(catView.el);\r\n }\r\n\r\n catView && catView.append(rendered);\r\n return;\r\n }\r\n\r\n if (frag) frag.appendChild(rendered);\r\n else this.append(rendered);\r\n },\r\n\r\n getCategoriesEl() {\r\n if (!this.catsEl) {\r\n this.catsEl = this.el.querySelector(`.${this.catsClass}`);\r\n }\r\n\r\n return this.catsEl;\r\n },\r\n\r\n getBlocksEl() {\r\n if (!this.blocksEl) {\r\n this.blocksEl = this.el.querySelector(\r\n `.${this.noCatClass} .${this.blockContClass}`\r\n );\r\n }\r\n\r\n return this.blocksEl;\r\n },\r\n\r\n append(el) {\r\n let blocks = this.getBlocksEl();\r\n blocks && blocks.appendChild(el);\r\n },\r\n\r\n render() {\r\n const ppfx = this.ppfx;\r\n const frag = document.createDocumentFragment();\r\n this.catsEl = null;\r\n this.blocksEl = null;\r\n this.renderedCategories = [];\r\n this.el.innerHTML = `\r\n
    \r\n
    \r\n
    \r\n
    \r\n `;\r\n\r\n this.collection.each(model => this.add(model, frag));\r\n this.append(frag);\r\n const cls = `${this.blockContClass}s ${ppfx}one-bg ${ppfx}two-color`;\r\n this.$el.addClass(cls);\r\n return this;\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/block_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * blockManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const blockManager = editor.BlockManager;\r\n * ```\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getall)\r\n * * [getAllVisible](#getallvisible)\r\n * * [remove](#remove)\r\n * * [getConfig](#getconfig)\r\n * * [getCategories](#getcategories)\r\n * * [getContainer](#getcontainer)\r\n * * [render](#render)\r\n *\r\n * @module BlockManager\r\n */\r\nimport { isElement } from 'underscore';\r\nimport defaults from './config/config';\r\nimport Blocks from './model/Blocks';\r\nimport BlockCategories from './model/Categories';\r\nimport BlocksView from './view/BlocksView';\r\n\r\nexport default () => {\r\n var c = {};\r\n var blocks, blocksVisible, blocksView;\r\n var categories = [];\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'BlockManager',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @return {this}\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n const em = c.em;\r\n\r\n for (let name in defaults) {\r\n if (!(name in c)) {\r\n c[name] = defaults[name];\r\n }\r\n }\r\n\r\n // Global blocks collection\r\n blocks = new Blocks([]);\r\n blocksVisible = new Blocks([]);\r\n categories = new BlockCategories();\r\n blocksView = new BlocksView(\r\n {\r\n collection: blocksVisible,\r\n categories\r\n },\r\n c\r\n );\r\n\r\n // Setup the sync between the global and public collections\r\n blocks.listenTo(blocks, 'add', model => {\r\n blocksVisible.add(model);\r\n em && em.trigger('block:add', model);\r\n });\r\n\r\n blocks.listenTo(blocks, 'remove', model => {\r\n blocksVisible.remove(model);\r\n em && em.trigger('block:remove', model);\r\n });\r\n\r\n blocks.listenTo(blocks, 'reset', coll => {\r\n blocksVisible.reset(coll.models);\r\n });\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Get configuration object\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Load default blocks if the collection is empty\r\n */\r\n onLoad() {\r\n const blocks = this.getAll();\r\n !blocks.length && blocks.reset(c.blocks);\r\n },\r\n\r\n postRender() {\r\n const elTo = this.getConfig().appendTo;\r\n\r\n if (elTo) {\r\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\r\n el.appendChild(this.render());\r\n }\r\n },\r\n\r\n /**\r\n * Add new block to the collection.\r\n * @param {string} id Block id\r\n * @param {Object} opts Options\r\n * @param {string} opts.label Name of the block\r\n * @param {string} opts.content HTML content\r\n * @param {string|Object} opts.category Group the block inside a catgegory.\r\n * You should pass objects with id property, eg:\r\n * {id: 'some-uid', label: 'My category'}\r\n * The string will be converted in:\r\n * 'someid' => {id: 'someid', label: 'someid'}\r\n * @param {Object} [opts.attributes={}] Block attributes\r\n * @return {Block} Added block\r\n * @example\r\n * blockManager.add('h1-block', {\r\n * label: 'Heading',\r\n * content: '

    Put your title here

    ',\r\n * category: 'Basic',\r\n * attributes: {\r\n * title: 'Insert h1 block'\r\n * }\r\n * });\r\n */\r\n add(id, opts) {\r\n var obj = opts || {};\r\n obj.id = id;\r\n return blocks.add(obj);\r\n },\r\n\r\n /**\r\n * Return the block by id\r\n * @param {string} id Block id\r\n * @example\r\n * const block = blockManager.get('h1-block');\r\n * console.log(JSON.stringify(block));\r\n * // {label: 'Heading', content: '

    Put your ...', ...}\r\n */\r\n get(id) {\r\n return blocks.get(id);\r\n },\r\n\r\n /**\r\n * Return all blocks\r\n * @return {Collection}\r\n * @example\r\n * const blocks = blockManager.getAll();\r\n * console.log(JSON.stringify(blocks));\r\n * // [{label: 'Heading', content: '

    Put your ...'}, ...]\r\n */\r\n getAll() {\r\n return blocks;\r\n },\r\n\r\n /**\r\n * Return the visible collection, which containes blocks actually rendered\r\n * @return {Collection}\r\n */\r\n getAllVisible() {\r\n return blocksVisible;\r\n },\r\n\r\n /**\r\n * Remove a block by id\r\n * @param {string} id Block id\r\n * @return {Block} Removed block\r\n */\r\n remove(id) {\r\n return blocks.remove(id);\r\n },\r\n\r\n /**\r\n * Get all available categories.\r\n * It's possible to add categories only within blocks via 'add()' method\r\n * @return {Array|Collection}\r\n */\r\n getCategories() {\r\n return categories;\r\n },\r\n\r\n /**\r\n * Return the Blocks container element\r\n * @return {HTMLElement}\r\n */\r\n getContainer() {\r\n return blocksView.el;\r\n },\r\n\r\n /**\r\n * Render blocks\r\n * @param {Array} blocks Blocks to render, without the argument will render all global blocks\r\n * @param {Object} [opts={}] Options\r\n * @param {Boolean} [opts.external] Render blocks in a new container (HTMLElement will be returned)\r\n * @param {Boolean} [opts.ignoreCategories] Render blocks without categories\r\n * @return {HTMLElement} Rendered element\r\n * @example\r\n * // Render all blocks (inside the global collection)\r\n * blockManager.render();\r\n *\r\n * // Render new set of blocks\r\n * const blocks = blockManager.getAll();\r\n * const filtered = blocks.filter(block => block.get('category') == 'sections')\r\n *\r\n * blockManager.render(filtered);\r\n * // Or a new set from an array\r\n * blockManager.render([\r\n * {label: 'Label text', content: '
    Content
    '}\r\n * ]);\r\n *\r\n * // Back to blocks from the global collection\r\n * blockManager.render();\r\n *\r\n * // You can also render your blocks outside of the main block container\r\n * const newBlocksEl = blockManager.render(filtered, { external: true });\r\n * document.getElementById('some-id').appendChild(newBlocksEl);\r\n */\r\n render(blocks, opts = {}) {\r\n const toRender = blocks || this.getAll().models;\r\n\r\n if (opts.external) {\r\n return new BlocksView(\r\n {\r\n collection: new Blocks(toRender),\r\n categories\r\n },\r\n {\r\n ...c,\r\n ...opts\r\n }\r\n ).render().el;\r\n }\r\n\r\n if (!blocksView.rendered) {\r\n blocksView.render();\r\n blocksView.rendered = 1;\r\n }\r\n\r\n blocksView.updateConfig(opts);\r\n blocksView.collection.reset(toRender);\r\n return this.getContainer();\r\n }\r\n };\r\n};\r\n","export default {\r\n // Style prefix\r\n stylePrefix: 'cm-',\r\n\r\n inlineCss: false\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n build(model, opts = {}) {\r\n const models = model.get('components');\r\n\r\n if (opts.exportWrapper) {\r\n return opts.wrapperIsBody\r\n ? `${this.buildModels(models)}`\r\n : model.toHTML();\r\n }\r\n\r\n return this.buildModels(models);\r\n },\r\n\r\n buildModels(models) {\r\n let code = '';\r\n models.each(model => {\r\n code += model.toHTML();\r\n });\r\n return code;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isUndefined, each } from 'underscore';\r\n\r\nconst maxValue = Number.MAX_VALUE;\r\n\r\nexport default Backbone.Model.extend({\r\n initialize() {\r\n this.compCls = [];\r\n this.ids = [];\r\n },\r\n\r\n /**\r\n * Get CSS from a component\r\n * @param {Model} model\r\n * @return {String}\r\n */\r\n buildFromModel(model, opts = {}) {\r\n let code = '';\r\n const em = this.em;\r\n const avoidInline = em && em.getConfig('avoidInlineStyle');\r\n const style = model.styleToString();\r\n const classes = model.get('classes');\r\n const wrapperIsBody = opts.wrapperIsBody;\r\n const isWrapper = model.get('wrapper');\r\n this.ids.push(`#${model.getId()}`);\r\n\r\n // Let's know what classes I've found\r\n classes.each(model => this.compCls.push(model.getFullName()));\r\n\r\n if (!avoidInline && style) {\r\n let selector = `#${model.getId()}`;\r\n selector = wrapperIsBody && isWrapper ? 'body' : selector;\r\n code = `${selector}{${style}}`;\r\n }\r\n\r\n const components = model.components();\r\n components.each(model => (code += this.buildFromModel(model, opts)));\r\n return code;\r\n },\r\n\r\n build(model, opts = {}) {\r\n const cssc = opts.cssc;\r\n const em = opts.em || '';\r\n this.em = em;\r\n this.compCls = [];\r\n this.ids = [];\r\n var code = this.buildFromModel(model, opts);\r\n const clearStyles =\r\n isUndefined(opts.clearStyles) && em\r\n ? em.getConfig('clearStyles')\r\n : opts.clearStyles;\r\n\r\n if (cssc) {\r\n const rules = cssc.getAll();\r\n const atRules = {};\r\n const dump = [];\r\n\r\n rules.each(rule => {\r\n const atRule = rule.getAtRule();\r\n\r\n if (atRule) {\r\n const mRules = atRules[atRule];\r\n if (mRules) {\r\n mRules.push(rule);\r\n } else {\r\n atRules[atRule] = [rule];\r\n }\r\n return;\r\n }\r\n\r\n code += this.buildFromRule(rule, dump, opts);\r\n });\r\n\r\n this.sortMediaObject(atRules).forEach(item => {\r\n let rulesStr = '';\r\n const atRule = item.key;\r\n const mRules = item.value;\r\n\r\n mRules.forEach(rule => {\r\n const ruleStr = this.buildFromRule(rule, dump, opts);\r\n\r\n if (rule.get('singleAtRule')) {\r\n code += `${atRule}{${ruleStr}}`;\r\n } else {\r\n rulesStr += ruleStr;\r\n }\r\n });\r\n\r\n if (rulesStr) {\r\n code += `${atRule}{${rulesStr}}`;\r\n }\r\n });\r\n\r\n em && clearStyles && rules.remove(dump);\r\n }\r\n\r\n return code;\r\n },\r\n\r\n /**\r\n * Get CSS from the rule model\r\n * @param {Model} rule\r\n * @return {string} CSS string\r\n */\r\n buildFromRule(rule, dump, opts = {}) {\r\n let result = '';\r\n const selectorStrNoAdd = rule.selectorsToString({ skipAdd: 1 });\r\n const selectorsAdd = rule.get('selectorsAdd');\r\n const singleAtRule = rule.get('singleAtRule');\r\n let found;\r\n\r\n // This will not render a rule if there is no its component\r\n rule.get('selectors').each(selector => {\r\n const name = selector.getFullName();\r\n if (\r\n this.compCls.indexOf(name) >= 0 ||\r\n this.ids.indexOf(name) >= 0 ||\r\n opts.keepUnusedStyles\r\n ) {\r\n found = 1;\r\n }\r\n });\r\n\r\n if ((selectorStrNoAdd && found) || selectorsAdd || singleAtRule) {\r\n const block = rule.getDeclaration();\r\n block && (result += block);\r\n } else {\r\n dump.push(rule);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Get the numeric length of the media query string\r\n * @param {String} mediaQuery Media query string\r\n * @return {Number}\r\n */\r\n getQueryLength(mediaQuery) {\r\n const length = /(-?\\d*\\.?\\d+)\\w{0,}/.exec(mediaQuery);\r\n if (!length) return maxValue;\r\n\r\n return parseFloat(length[1]);\r\n },\r\n\r\n /**\r\n * Return a sorted array from media query object\r\n * @param {Object} items\r\n * @return {Array}\r\n */\r\n sortMediaObject(items = {}) {\r\n const itemsArr = [];\r\n each(items, (value, key) => itemsArr.push({ key, value }));\r\n return itemsArr.sort((a, b) => {\r\n const isMobFirst = [a.key, b.key].every(\r\n mquery => mquery.indexOf('min-width') !== -1\r\n );\r\n const left = isMobFirst ? a.key : b.key;\r\n const right = isMobFirst ? b.key : a.key;\r\n return this.getQueryLength(left) - this.getQueryLength(right);\r\n });\r\n }\r\n});\r\n","import { each } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n /** @inheritdoc */\r\n build(model) {\r\n var json = model.toJSON();\r\n this.beforeEach(json);\r\n\r\n each(\r\n json,\r\n function(v, attr) {\r\n var obj = json[attr];\r\n if (obj instanceof Backbone.Model) {\r\n json[attr] = this.build(obj);\r\n } else if (obj instanceof Backbone.Collection) {\r\n var coll = obj;\r\n json[attr] = [];\r\n if (coll.length) {\r\n coll.each(function(el, index) {\r\n json[attr][index] = this.build(el);\r\n }, this);\r\n }\r\n }\r\n },\r\n this\r\n );\r\n\r\n return json;\r\n },\r\n\r\n /**\r\n * Execute on each object\r\n * @param {Object} obj\r\n */\r\n beforeEach(obj) {\r\n delete obj.status;\r\n }\r\n});\r\n","import { extend } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n mapModel(model) {\r\n var code = '';\r\n var script = model.get('script-export') || model.get('script');\r\n var type = model.get('type');\r\n var comps = model.get('components');\r\n var id = model.getId();\r\n\r\n if (script) {\r\n // If the component has scripts we need to expose his ID\r\n var attr = model.get('attributes');\r\n attr = extend({}, attr, { id });\r\n model.set('attributes', attr, { silent: 1 });\r\n var scrStr = model.getScriptString(script);\r\n\r\n // If the script was updated, I'll put its code in a separate container\r\n if (model.get('scriptUpdated')) {\r\n this.mapJs[type + '-' + id] = { ids: [id], code: scrStr };\r\n } else {\r\n var mapType = this.mapJs[type];\r\n\r\n if (mapType) {\r\n mapType.ids.push(id);\r\n } else {\r\n this.mapJs[type] = { ids: [id], code: scrStr };\r\n }\r\n }\r\n }\r\n\r\n comps.each(function(model) {\r\n code += this.mapModel(model);\r\n }, this);\r\n\r\n return code;\r\n },\r\n\r\n build(model) {\r\n this.mapJs = {};\r\n this.mapModel(model);\r\n\r\n var code = '';\r\n\r\n for (var type in this.mapJs) {\r\n var mapType = this.mapJs[type];\r\n var ids = '#' + mapType.ids.join(', #');\r\n code += `\r\n var items = document.querySelectorAll('${ids}');\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n (function(){${mapType.code}}.bind(items[i]))();\r\n }`;\r\n }\r\n\r\n return code;\r\n }\r\n});\r\n","import { bindAll } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport CodeMirror from 'codemirror/lib/codemirror';\r\nimport 'codemirror/mode/htmlmixed/htmlmixed';\r\nimport 'codemirror/mode/css/css';\r\nimport 'codemirror-formatting';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n input: '',\r\n label: '',\r\n codeName: '',\r\n theme: 'hopscotch',\r\n readOnly: true,\r\n lineNumbers: true\r\n },\r\n\r\n /** @inheritdoc */\r\n init(el) {\r\n bindAll(this, 'onChange');\r\n this.editor = CodeMirror.fromTextArea(el, {\r\n dragDrop: false,\r\n lineWrapping: true,\r\n mode: this.get('codeName'),\r\n ...this.attributes\r\n });\r\n this.element = el;\r\n this.editor.on('change', this.onChange);\r\n\r\n return this;\r\n },\r\n\r\n onChange() {\r\n this.trigger('update', this);\r\n },\r\n\r\n getEditor() {\r\n return this.editor;\r\n },\r\n\r\n /**\r\n * The element where the viewer is attached\r\n * @return {HTMLElement}\r\n */\r\n getElement() {\r\n return this.element;\r\n },\r\n\r\n /**\r\n * Set the element which contains the viewer attached.\r\n * Generally, it should be just a textarea, but some editor might require\r\n * a container for it some in that case this method can be used\r\n * @param {HTMLElement} el\r\n * @return {self}\r\n */\r\n setElement(el) {\r\n this.element = el;\r\n return this;\r\n },\r\n\r\n /**\r\n * Refresh the viewer\r\n * @return {self}\r\n */\r\n refresh() {\r\n this.getEditor().refresh();\r\n return this;\r\n },\r\n\r\n /**\r\n * Focus the viewer\r\n * @return {self}\r\n */\r\n focus() {\r\n this.getEditor().focus();\r\n return this;\r\n },\r\n\r\n getContent() {\r\n const ed = this.getEditor();\r\n return ed && ed.getValue();\r\n },\r\n\r\n /** @inheritdoc */\r\n setContent(v, opts = {}) {\r\n const { editor } = this;\r\n if (!editor) return;\r\n editor.setValue(v);\r\n\r\n if (editor.autoFormatRange) {\r\n CodeMirror.commands.selectAll(editor);\r\n editor.autoFormatRange(editor.getCursor(true), editor.getCursor(false));\r\n CodeMirror.commands.goDocStart(editor);\r\n }\r\n\r\n !opts.noRefresh && setTimeout(() => this.refresh());\r\n }\r\n});\r\n","import { template } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n template: template(`\r\n
    editor\" id=\"<%= pfx %><%= codeName %>\">\r\n \t
    title\"><%= label %>
    \r\n \t
    code\">
    \r\n
    `),\r\n\r\n initialize(o) {\r\n this.config = o.config || {};\r\n this.pfx = this.config.stylePrefix;\r\n },\r\n\r\n render() {\r\n var obj = this.model.toJSON();\r\n obj.pfx = this.pfx;\r\n this.$el.html(this.template(obj));\r\n this.$el.attr('class', this.pfx + 'editor-c');\r\n this.$el.find('#' + this.pfx + 'code').append(this.model.get('input'));\r\n return this;\r\n }\r\n});\r\n","/**\r\n * - [addGenerator](#addgenerator)\r\n * - [getGenerator](#getgenerator)\r\n * - [getGenerators](#getgenerators)\r\n * - [addViewer](#addviewer)\r\n * - [getViewer](#getviewer)\r\n * - [getViewers](#getviewers)\r\n * - [updateViewer](#updateviewer)\r\n * - [getCode](#getcode)\r\n *\r\n *\r\n * Before using methods you should get first the module from the editor instance, in this way:\r\n *\r\n * ```js\r\n * var codeManager = editor.CodeManager;\r\n * ```\r\n *\r\n * @module CodeManager\r\n */\r\nimport { isUndefined } from 'underscore';\r\nimport defaults from './config/config';\r\nimport gHtml from './model/HtmlGenerator';\r\nimport gCss from './model/CssGenerator';\r\nimport gJson from './model/JsonGenerator';\r\nimport gJs from './model/JsGenerator';\r\nimport eCM from './model/CodeMirrorEditor';\r\nimport editorView from './view/EditorView';\r\n\r\nexport default () => {\r\n var c = {};\r\n var generators = {},\r\n defGenerators = {},\r\n viewers = {},\r\n defViewers = {};\r\n\r\n const defaultViewer = 'CodeMirror';\r\n\r\n return {\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n config: c,\r\n\r\n EditorView: editorView,\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'CodeManager',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n */\r\n init(config) {\r\n c = config || {};\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n var ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n defGenerators.html = new gHtml();\r\n defGenerators.css = new gCss();\r\n defGenerators.json = new gJson();\r\n defGenerators.js = new gJs();\r\n defViewers.CodeMirror = new eCM();\r\n this.loadDefaultGenerators().loadDefaultViewers();\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new code generator to the collection\r\n * @param {string} id Code generator ID\r\n * @param {Object} generator Code generator wrapper\r\n * @param {Function} generator.build Function that builds the code\r\n * @return {this}\r\n * @example\r\n * codeManager.addGenerator('html7',{\r\n * build: function(model){\r\n * return 'myCode';\r\n * }\r\n * });\r\n * */\r\n addGenerator(id, generator) {\r\n generators[id] = generator;\r\n return this;\r\n },\r\n\r\n /**\r\n * Get code generator by id\r\n * @param {string} id Code generator ID\r\n * @return {Object|null}\r\n * @example\r\n * var generator = codeManager.getGenerator('html7');\r\n * generator.build = function(model){\r\n * //extend\r\n * };\r\n * */\r\n getGenerator(id) {\r\n return generators[id] || null;\r\n },\r\n\r\n /**\r\n * Returns all code generators\r\n * @return {Array}\r\n * */\r\n getGenerators() {\r\n return generators;\r\n },\r\n\r\n /**\r\n * Add new code viewer\r\n * @param {string} id Code viewer ID\r\n * @param {Object} viewer Code viewer wrapper\r\n * @param {Function} viewer.init Set element on which viewer will be displayed\r\n * @param {Function} viewer.setContent Set content to the viewer\r\n * @return {this}\r\n * @example\r\n * codeManager.addViewer('ace',{\r\n * init: function(el){\r\n * var ace = require('ace-editor');\r\n * this.editor = ace.edit(el.id);\r\n * },\r\n * setContent: function(code){\r\n * this.editor.setValue(code);\r\n * }\r\n * });\r\n * */\r\n addViewer(id, viewer) {\r\n viewers[id] = viewer;\r\n return this;\r\n },\r\n\r\n /**\r\n * Get code viewer by id\r\n * @param {string} id Code viewer ID\r\n * @return {Object|null}\r\n * @example\r\n * var viewer = codeManager.getViewer('ace');\r\n * */\r\n getViewer(id) {\r\n return viewers[id] || null;\r\n },\r\n\r\n /**\r\n * Returns all code viewers\r\n * @return {Array}\r\n * */\r\n getViewers() {\r\n return viewers;\r\n },\r\n\r\n createViewer(opts = {}) {\r\n const type = !isUndefined(opts.type) ? opts.type : defaultViewer;\r\n const viewer = this.getViewer(type) && this.getViewer(type).clone();\r\n const cont = document.createElement('div');\r\n const txtarea = document.createElement('textarea');\r\n cont.appendChild(txtarea);\r\n viewer.set(opts);\r\n viewer.init(txtarea);\r\n viewer.setElement(cont);\r\n\r\n return viewer;\r\n },\r\n\r\n /**\r\n * Update code viewer content\r\n * @param {Object} viewer Viewer instance\r\n * @param {string} code Code string\r\n * @example\r\n * var AceViewer = codeManager.getViewer('ace');\r\n * // ...\r\n * var viewer = AceViewer.init(el);\r\n * // ...\r\n * codeManager.updateViewer(AceViewer, 'code');\r\n * */\r\n updateViewer(viewer, code) {\r\n viewer.setContent(code);\r\n },\r\n\r\n /**\r\n * Get code from model\r\n * @param {Object} model Any kind of model that will be passed to the build method of generator\r\n * @param {string} genId Code generator id\r\n * @param {Object} [opt] Options\r\n * @return {string}\r\n * @example\r\n * var codeStr = codeManager.getCode(model, 'html');\r\n * */\r\n getCode(model, genId, opt = {}) {\r\n opt.em = c.em;\r\n var generator = this.getGenerator(genId);\r\n return generator ? generator.build(model, opt) : '';\r\n },\r\n\r\n /**\r\n * Load default code generators\r\n * @return {this}\r\n * @private\r\n * */\r\n loadDefaultGenerators() {\r\n for (var id in defGenerators) this.addGenerator(id, defGenerators[id]);\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Load default code viewers\r\n * @return {this}\r\n * @private\r\n * */\r\n loadDefaultViewers() {\r\n for (var id in defViewers) this.addViewer(id, defViewers[id]);\r\n\r\n return this;\r\n }\r\n };\r\n};\r\n","var sourceFile = require('../../../config/config.js');\r\nconst rootDir = sourceFile.rootDir;\r\nvar swv = 'sw-visibility';\r\nvar impt = 'code-import';\r\nvar osm = 'open-sm';\r\nvar otm = 'open-tm';\r\nvar ola = 'open-layers';\r\nvar obl = 'open-blocks';\r\nvar ful = 'fullscreen';\r\nvar prv = 'preview';\r\nvar compexp = 'studio-export';\r\nvar sidebar = 'show-sidebar';\r\nvar addcomp = 'add-new-control';\r\nvar edit = 'edit-control';\r\nvar save = 'save-control';\r\nvar openMenu = 'open-menu';\r\nvar cgdev = 'change-device';\r\nexport default {\r\n stylePrefix: 'pn-',\r\n\r\n // Default panels fa-sliders for features\r\n defaults: [\r\n {\r\n id: 'logo',\r\n buttons: [\r\n {\r\n active: false,\r\n togglable: false,\r\n id: 'studio',\r\n className: 'logo',\r\n command: 'logoclicked',\r\n markup: `Studio`,\r\n attributes: { title: '' }\r\n }\r\n ]\r\n },\r\n {\r\n id: 'controlName',\r\n buttons: [\r\n {\r\n id: edit,\r\n className: 'fa fa-pencil font14',\r\n command: edit,\r\n markup: 'Edit component meta',\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: sidebar,\r\n className: 'fa fa-chevron-down font14',\r\n command: sidebar,\r\n markup: 'Controls',\r\n attributes: { title: '' }\r\n }\r\n ]\r\n },\r\n {\r\n id: 'devices-c',\r\n buttons: [\r\n {\r\n id: 'Desktop',\r\n className: 'fa fa-laptop font25',\r\n command: cgdev,\r\n togglable: 0,\r\n active: true,\r\n markup: `Desktop`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: 'Tablet',\r\n className: 'fa fa-tablet font25',\r\n command: cgdev,\r\n togglable: 0,\r\n markup: `Tablet`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: 'Mobile landscape',\r\n className: 'fa fa-tablet fa-rotate-270 font25',\r\n command: cgdev,\r\n togglable: 0,\r\n markup: `Mobile landscape`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: 'Mobile portrait',\r\n className: 'fa fa-mobile font25',\r\n command: cgdev,\r\n togglable: 0,\r\n markup: `Mobile portrait`,\r\n attributes: { title: '' }\r\n }\r\n ]\r\n },\r\n {\r\n id: 'options',\r\n buttons: [\r\n {\r\n id: impt,\r\n className: 'fa fa-code',\r\n command: impt,\r\n markup: 'Edit Code',\r\n attributes: {\r\n title: ''\r\n }\r\n },\r\n {\r\n id: addcomp,\r\n className: 'fa fa-plus',\r\n command: addcomp,\r\n markup: 'Add New components',\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: save,\r\n className: 'fa fa-save',\r\n command: save,\r\n markup: 'Save components',\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: compexp,\r\n className: 'fa fa-cloud-upload',\r\n command: compexp,\r\n markup: 'Publish Component',\r\n attributes: {\r\n title: ''\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n id: 'views',\r\n buttons: [\r\n {\r\n id: osm,\r\n className: '',\r\n command: osm,\r\n active: true,\r\n togglable: 0,\r\n markup: `Style Manager`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: otm,\r\n className: '',\r\n command: otm,\r\n togglable: 0,\r\n markup: `Mappings Manager`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: ola,\r\n className: '',\r\n command: ola,\r\n togglable: 0,\r\n markup: `Layers Manager`,\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: obl,\r\n className: '',\r\n command: obl,\r\n active: false,\r\n togglable: 0,\r\n markup: `Blocks`,\r\n attributes: { title: '' }\r\n }\r\n ]\r\n },\r\n {\r\n id: 'left-top-view',\r\n buttons: [\r\n // {\r\n // id: sidebar,\r\n // command: sidebar,\r\n // togglable: 1,\r\n // className: 'viewControls',\r\n // markup: `Controls`,\r\n // attributes: { title: 'View Controls' }\r\n // },\r\n // {\r\n // id: 'market_place_menu',\r\n // command: openMenu,\r\n // togglable: 1,\r\n // markup: `Marketplace`,\r\n // className: 'Marketplace',\r\n // attributes: { title: 'View Marketplace' }\r\n // }\r\n ]\r\n },\r\n {\r\n id: 'left-bottom-view',\r\n buttons: [\r\n {\r\n active: true,\r\n id: swv,\r\n className: 'fa fa-square-o',\r\n command: swv,\r\n context: swv,\r\n markup: 'View lines',\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: prv,\r\n className: 'fa fa-eye',\r\n command: prv,\r\n context: prv,\r\n markup: 'Preview',\r\n attributes: { title: '' }\r\n },\r\n {\r\n id: ful,\r\n className: 'fa fa-arrows-alt',\r\n command: ful,\r\n context: ful,\r\n markup: 'Fullscreen',\r\n attributes: { title: '' }\r\n }\r\n ]\r\n }\r\n ],\r\n\r\n // Editor model\r\n em: null,\r\n\r\n // Delay before show children buttons (in milliseconds)\r\n delayBtnsShow: 300\r\n};\r\n","import Backbone from 'backbone';\r\nimport Buttons from './Buttons';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n id: '',\r\n content: '',\r\n visible: true,\r\n buttons: [],\r\n attributes: {}\r\n },\r\n\r\n initialize(options) {\r\n this.btn = this.get('buttons') || [];\r\n this.buttons = new Buttons(this.btn);\r\n this.set('buttons', this.buttons);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Panel from './Panel';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Panel\r\n});\r\n","import Backbone from 'backbone';\r\nimport { isString, isObject, isFunction } from 'underscore';\r\n\r\nconst $ = Backbone.$;\r\n\r\nexport default Backbone.View.extend({\r\n tagName() {\r\n return this.model.get('tagName');\r\n },\r\n\r\n events: {\r\n click: 'clicked'\r\n },\r\n\r\n initialize(o) {\r\n var cls = this.model.get('className');\r\n this.config = o.config || {};\r\n this.em = this.config.em || {};\r\n const pfx = this.config.stylePrefix || '';\r\n const ppfx = this.config.pStylePrefix || '';\r\n this.pfx = pfx;\r\n this.ppfx = this.config.pStylePrefix || '';\r\n this.id = pfx + this.model.get('id');\r\n this.activeCls = `${pfx}active ${ppfx}four-color`;\r\n this.disableCls = `${ppfx}disabled`;\r\n this.btnsVisCls = `${pfx}visible`;\r\n this.className = pfx + 'btn' + (cls ? ' ' + cls : '');\r\n this.markup = this.model.get('markup');\r\n this.listenTo(this.model, 'change', this.render);\r\n this.listenTo(this.model, 'change:active updateActive', this.updateActive);\r\n this.listenTo(this.model, 'checkActive', this.checkActive);\r\n this.listenTo(this.model, 'change:bntsVis', this.updateBtnsVis);\r\n this.listenTo(this.model, 'change:attributes', this.updateAttributes);\r\n this.listenTo(this.model, 'change:className', this.updateClassName);\r\n this.listenTo(this.model, 'change:disable', this.updateDisable);\r\n this.listenTo(this.model, 'change:markup', this.markupChanged);\r\n\r\n if (this.em && this.em.get) this.commands = this.em.get('Commands');\r\n },\r\n\r\n /**\r\n * Updates class name of the button\r\n *\r\n * @return void\r\n * */\r\n updateClassName() {\r\n const { model, pfx } = this;\r\n const cls = model.get('className');\r\n const attrCls = model.get('attributes').class;\r\n const classStr = `${attrCls ? attrCls : ''} ${pfx}btn ${cls ? cls : ''}`;\r\n this.$el.attr('class', classStr.trim());\r\n },\r\n\r\n /**\r\n * Updates attributes of the button\r\n *\r\n * @return void\r\n * */\r\n updateAttributes() {\r\n this.$el.attr(this.model.get('attributes'));\r\n this.updateClassName();\r\n },\r\n\r\n /**\r\n * Updates visibility of children buttons\r\n *\r\n * @return void\r\n * */\r\n updateBtnsVis() {\r\n if (!this.$buttons) return;\r\n\r\n if (this.model.get('bntsVis')) this.$buttons.addClass(this.btnsVisCls);\r\n else this.$buttons.removeClass(this.btnsVisCls);\r\n },\r\n\r\n /**\r\n * Update active status of the button\r\n *\r\n * @return void\r\n * */\r\n updateActive(opts = {}) {\r\n const { model, commands, $el, activeCls } = this;\r\n const { fromCollection } = opts;\r\n const context = model.get('context');\r\n const options = model.get('options');\r\n const commandName = model.get('command');\r\n let command = {};\r\n\r\n if (commands && isString(commandName)) {\r\n command = commands.get(commandName) || {};\r\n } else if (isFunction(commandName)) {\r\n command = commands.create({ run: commandName });\r\n } else if (commandName !== null && isObject(commandName)) {\r\n command = commands.create(commandName);\r\n }\r\n\r\n if (model.get('active')) {\r\n !fromCollection && model.collection.deactivateAll(context, model);\r\n model.set('active', true, { silent: true }).trigger('checkActive');\r\n commands.runCommand(command, { ...options, sender: model });\r\n\r\n // Disable button if the command has no stop method\r\n command.noStop && model.set('active', false);\r\n } else {\r\n $el.removeClass(activeCls);\r\n this.toogleForMarkupUrl();\r\n commands.stopCommand(command, { ...options, sender: model, force: 1 });\r\n }\r\n },\r\n\r\n updateDisable() {\r\n const { disableCls, model } = this;\r\n const disable = model.get('disable');\r\n this.$el[disable ? 'addClass' : 'removeClass'](disableCls);\r\n },\r\n\r\n markupChanged() {\r\n const { model, $el } = this;\r\n $el.html(model.changed.markup || model.attributes.markup);\r\n },\r\n /**\r\n * Update active style status\r\n *\r\n * @return void\r\n * */\r\n checkActive() {\r\n const { model, $el, activeCls } = this;\r\n if (model.get('active')) {\r\n $el.addClass(activeCls);\r\n this.toogleForMarkupUrl();\r\n } else {\r\n $el.removeClass(activeCls);\r\n this.toogleForMarkupUrl();\r\n }\r\n },\r\n toogleForMarkupUrl() {\r\n const { model, $el } = this;\r\n var active = model.get('active');\r\n var $img = $el.find('img');\r\n if ($img.length > 0) {\r\n if (active) {\r\n var $image = $el.find('[activateurl]');\r\n if ($image.length > 0) {\r\n $img.addClass('hide');\r\n $image.removeClass('hide');\r\n }\r\n model.set('markup', $el.html());\r\n } else {\r\n var $image = $el.find('[deactivateurl]');\r\n if ($image.length > 0) {\r\n $img.addClass('hide');\r\n $image.removeClass('hide');\r\n }\r\n model.set('markup', $el.html());\r\n }\r\n }\r\n },\r\n /**\r\n * Triggered when button is clicked\r\n * @param {Object} e Event\r\n *\r\n * @return void\r\n * */\r\n clicked(e) {\r\n if (this.model.get('bntsVis')) return;\r\n\r\n if (this.model.get('disable')) return;\r\n\r\n this.toogleActive();\r\n },\r\n\r\n toogleActive() {\r\n const { model } = this;\r\n const { active, togglable } = model.attributes;\r\n\r\n if (active && !togglable) return;\r\n\r\n model.set('active', !active);\r\n\r\n // If the stop is requested\r\n var command = this.em.get('Commands').get('select-comp');\r\n\r\n if (active) {\r\n if (model.get('runDefaultCommand')) this.em.runDefault();\r\n } else {\r\n if (model.get('stopDefaultCommand')) this.em.stopDefault();\r\n }\r\n },\r\n\r\n render() {\r\n const label = this.model.get('label');\r\n const { $el } = this;\r\n $el.empty();\r\n this.updateAttributes();\r\n label && $el.append(label);\r\n this.checkActive();\r\n this.updateDisable();\r\n if (this.markup) {\r\n this.markupChanged();\r\n }\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport ButtonView from './ButtonView';\r\nimport { result } from 'underscore';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.opt = o || {};\r\n this.config = this.opt.config || {};\r\n this.pfx = this.config.stylePrefix || '';\r\n this.parentM = this.opt.parentM || null;\r\n this.listenTo(this.collection, 'add', this.addTo);\r\n this.listenTo(this.collection, 'reset remove', this.render);\r\n this.className = this.pfx + 'buttons';\r\n },\r\n\r\n /**\r\n * Add to collection\r\n * @param Object Model\r\n *\r\n * @return Object\r\n * */\r\n addTo(model) {\r\n this.addToCollection(model);\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param Object Model\r\n * @param Object Fragment collection\r\n *\r\n * @return Object Object created\r\n * */\r\n addToCollection(model, fragmentEl) {\r\n var fragment = fragmentEl || null;\r\n var viewObject = ButtonView;\r\n\r\n var view = new viewObject({\r\n model,\r\n config: this.config,\r\n parentM: this.parentM\r\n });\r\n var rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.append(rendered);\r\n }\r\n\r\n return rendered;\r\n },\r\n\r\n render() {\r\n var fragment = document.createDocumentFragment();\r\n this.$el.empty();\r\n\r\n this.collection.each(function(model) {\r\n this.addToCollection(model, fragment);\r\n }, this);\r\n\r\n this.$el.append(fragment);\r\n this.$el.attr('class', result(this, 'className'));\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport ButtonsView from './ButtonsView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n const config = o.config || {};\r\n const model = this.model;\r\n this.config = config;\r\n this.pfx = config.stylePrefix || '';\r\n this.ppfx = config.pStylePrefix || '';\r\n this.buttons = model.get('buttons');\r\n this.className = this.pfx + 'panel';\r\n this.id = this.pfx + model.get('id');\r\n this.listenTo(model, 'change:appendContent', this.appendContent);\r\n this.listenTo(model, 'change:prependContent', this.prependContent);\r\n this.listenTo(model, 'change:content', this.updateContent);\r\n this.listenTo(model, 'change:visible', this.toggleVisible);\r\n model.view = this;\r\n },\r\n\r\n /**\r\n * Append content of the panel\r\n * */\r\n appendContent() {\r\n this.$el.append(this.model.get('appendContent'));\r\n },\r\n\r\n /**\r\n * prepend content to the panel\r\n */\r\n prependContent() {\r\n this.$el.find('.name_containter').remove();\r\n this.$el.prepend(this.model.get('prependContent'));\r\n },\r\n\r\n /**\r\n * Update content\r\n * */\r\n updateContent() {\r\n this.$el.html(this.model.get('content'));\r\n },\r\n\r\n toggleVisible() {\r\n if (!this.model.get('visible')) {\r\n this.$el.addClass(`${this.ppfx}hidden`);\r\n return;\r\n }\r\n this.$el.removeClass(`${this.ppfx}hidden`);\r\n },\r\n\r\n attributes() {\r\n return this.model.get('attributes');\r\n },\r\n\r\n initResize() {\r\n const em = this.config.em;\r\n const editor = em ? em.get('Editor') : '';\r\n const resizable = this.model.get('resizable');\r\n\r\n if (editor && resizable) {\r\n var resz = resizable === true ? [1, 1, 1, 1] : resizable;\r\n var resLen = resz.length;\r\n var tc,\r\n cr,\r\n bc,\r\n cl = 0;\r\n\r\n // Choose which sides of the panel are resizable\r\n if (resLen == 2) {\r\n tc = resz[0];\r\n bc = resz[0];\r\n cr = resz[1];\r\n cl = resz[1];\r\n } else if (resLen == 4) {\r\n tc = resz[0];\r\n cr = resz[1];\r\n bc = resz[2];\r\n cl = resz[3];\r\n }\r\n\r\n var resizer = editor.Utils.Resizer.init({\r\n tc,\r\n cr,\r\n bc,\r\n cl,\r\n tl: 0,\r\n tr: 0,\r\n bl: 0,\r\n br: 0,\r\n appendTo: this.el,\r\n silentFrames: 1,\r\n avoidContainerUpdate: 1,\r\n prefix: editor.getConfig().stylePrefix,\r\n onEnd() {\r\n em && em.trigger('change:canvasOffset');\r\n },\r\n posFetcher: (el, { target }) => {\r\n const style = el.style;\r\n const config = resizer.getConfig();\r\n const keyWidth = config.keyWidth;\r\n const keyHeight = config.keyHeight;\r\n const rect = el.getBoundingClientRect();\r\n const forContainer = target == 'container';\r\n const styleWidth = style[keyWidth];\r\n const styleHeight = style[keyHeight];\r\n const width =\r\n styleWidth && !forContainer ? parseFloat(styleWidth) : rect.width;\r\n const height =\r\n styleHeight && !forContainer\r\n ? parseFloat(styleHeight)\r\n : rect.height;\r\n return {\r\n left: 0,\r\n top: 0,\r\n width,\r\n height\r\n };\r\n },\r\n ...resizable\r\n });\r\n resizer.blur = () => {};\r\n resizer.focus(this.el);\r\n }\r\n },\r\n\r\n render() {\r\n const $el = this.$el;\r\n const ppfx = this.ppfx;\r\n const cls = `${this.className} ${this.id} ${ppfx}one-bg ${ppfx}two-color`;\r\n $el.addClass(cls);\r\n\r\n if (this.buttons.length) {\r\n var buttons = new ButtonsView({\r\n collection: this.buttons,\r\n config: this.config\r\n });\r\n $el.append(buttons.render().el);\r\n }\r\n\r\n $el.append(this.model.get('content'));\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport PanelView from './PanelView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.opt = o || {};\r\n this.config = this.opt.config || {};\r\n this.pfx = this.config.stylePrefix || '';\r\n const items = this.collection;\r\n this.listenTo(items, 'add', this.addTo);\r\n this.listenTo(items, 'reset', this.render);\r\n this.listenTo(items, 'remove', this.onRemove);\r\n this.className = this.pfx + 'panels';\r\n },\r\n\r\n onRemove(model) {\r\n const view = model.view;\r\n view && view.remove();\r\n },\r\n\r\n /**\r\n * Add to collection\r\n * @param Object Model\r\n *\r\n * @return Object\r\n * @private\r\n * */\r\n addTo(model) {\r\n this.addToCollection(model);\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param Object Model\r\n * @param Object Fragment collection\r\n * @param integer Index of append\r\n *\r\n * @return Object Object created\r\n * @private\r\n * */\r\n addToCollection(model, fragmentEl) {\r\n const fragment = fragmentEl || null;\r\n const config = this.config;\r\n const el = model.get('el');\r\n const view = new PanelView({\r\n el,\r\n model,\r\n config\r\n });\r\n const rendered = view.render().el;\r\n const appendTo = model.get('appendTo');\r\n\r\n // Do nothing if the panel was requested to be another element\r\n if (el) {\r\n } else if (appendTo) {\r\n var appendEl = document.querySelector(appendTo);\r\n appendEl.appendChild(rendered);\r\n } else {\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.append(rendered);\r\n }\r\n }\r\n\r\n view.initResize();\r\n return rendered;\r\n },\r\n\r\n render() {\r\n const $el = this.$el;\r\n const frag = document.createDocumentFragment();\r\n $el.empty();\r\n this.collection.each(model => this.addToCollection(model, frag));\r\n $el.append(frag);\r\n $el.attr('class', this.className);\r\n return this;\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/panels/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * panels: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const panelManager = editor.Panels;\r\n * ```\r\n *\r\n * * [addPanel](#addpanel)\r\n * * [addButton](#addbutton)\r\n * * [getButton](#getbutton)\r\n * * [getPanel](#getpanel)\r\n * * [getPanels](#getpanels)\r\n * * [getPanelsEl](#getpanelsel)\r\n * * [removePanel](#removepanel)\r\n * * [removeButton](#removebutton)\r\n *\r\n * @module Panels\r\n */\r\nimport defaults from './config/config';\r\nimport Panel from './model/Panel';\r\nimport Panels from './model/Panels';\r\nimport PanelView from './view/PanelView';\r\nimport PanelsView from './view/PanelsView';\r\n\r\nexport default () => {\r\n var c = {};\r\n var panels, PanelsViewObj;\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Panels',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n var ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n panels = new Panels(c.defaults);\r\n PanelsViewObj = new PanelsView({\r\n collection: panels,\r\n config: c\r\n });\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns the collection of panels\r\n * @return {Collection} Collection of panel\r\n */\r\n getPanels() {\r\n return panels;\r\n },\r\n\r\n /**\r\n * Returns panels element\r\n * @return {HTMLElement}\r\n */\r\n getPanelsEl() {\r\n return PanelsViewObj.el;\r\n },\r\n\r\n /**\r\n * Add new panel to the collection\r\n * @param {Object|Panel} panel Object with right properties or an instance of Panel\r\n * @return {Panel} Added panel. Useful in case passed argument was an Object\r\n * @example\r\n * var newPanel = panelManager.addPanel({\r\n * id: 'myNewPanel',\r\n * visible : true,\r\n * buttons : [...],\r\n * });\r\n */\r\n addPanel(panel) {\r\n return panels.add(panel);\r\n },\r\n\r\n /**\r\n * Remove a panel from the collection\r\n * @param {Object|Panel|String} panel Object with right properties or an instance of Panel or Painel id\r\n * @return {Panel} Removed panel. Useful in case passed argument was an Object\r\n * @example\r\n * const newPanel = panelManager.removePanel({\r\n * id: 'myNewPanel',\r\n * visible : true,\r\n * buttons : [...],\r\n * });\r\n *\r\n * const newPanel = panelManager.removePanel('myNewPanel');\r\n *\r\n */\r\n removePanel(panel) {\r\n return panels.remove(panel);\r\n },\r\n\r\n /**\r\n * Get panel by ID\r\n * @param {string} id Id string\r\n * @return {Panel|null}\r\n * @example\r\n * var myPanel = panelManager.getPanel('myNewPanel');\r\n */\r\n getPanel(id) {\r\n var res = panels.where({ id });\r\n return res.length ? res[0] : null;\r\n },\r\n\r\n /**\r\n * Add button to the panel\r\n * @param {string} panelId Panel's ID\r\n * @param {Object|Button} button Button object or instance of Button\r\n * @return {Button|null} Added button. Useful in case passed button was an Object\r\n * @example\r\n * var newButton = panelManager.addButton('myNewPanel',{\r\n * id: 'myNewButton',\r\n * className: 'someClass',\r\n * command: 'someCommand',\r\n * attributes: { title: 'Some title'},\r\n * active: false,\r\n * });\r\n * // It's also possible to pass the command as an object\r\n * // with .run and .stop methods\r\n * ...\r\n * command: {\r\n * run: function(editor) {\r\n * ...\r\n * },\r\n * stop: function(editor) {\r\n * ...\r\n * }\r\n * },\r\n * // Or simply like a function which will be evaluated as a single .run command\r\n * ...\r\n * command: function(editor) {\r\n * ...\r\n * }\r\n */\r\n addButton(panelId, button) {\r\n var pn = this.getPanel(panelId);\r\n return pn ? pn.get('buttons').add(button) : null;\r\n },\r\n\r\n /**\r\n * Remove button from the panel\r\n * @param {String} panelId Panel's ID\r\n * @param {String} buttonId Button's ID\r\n * @return {Button|null} Removed button.\r\n * @example\r\n * const removedButton = panelManager.addButton('myNewPanel',{\r\n * id: 'myNewButton',\r\n * className: 'someClass',\r\n * command: 'someCommand',\r\n * attributes: { title: 'Some title'},\r\n * active: false,\r\n * });\r\n *\r\n * const removedButton = panelManager.removeButton('myNewPanel', 'myNewButton');\r\n *\r\n */\r\n removeButton(panelId, button) {\r\n var pn = this.getPanel(panelId);\r\n return pn && pn.get('buttons').remove(button);\r\n },\r\n\r\n /**\r\n * Get button from the panel\r\n * @param {string} panelId Panel's ID\r\n * @param {string} id Button's ID\r\n * @return {Button|null}\r\n * @example\r\n * var button = panelManager.getButton('myPanel','myButton');\r\n */\r\n getButton(panelId, id) {\r\n var pn = this.getPanel(panelId);\r\n if (pn) {\r\n var res = pn.get('buttons').where({ id });\r\n return res.length ? res[0] : null;\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Render panels and buttons\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n render() {\r\n return PanelsViewObj.render().el;\r\n },\r\n\r\n /**\r\n * Active activable buttons\r\n * @private\r\n */\r\n active() {\r\n this.getPanels().each(p => {\r\n p.get('buttons').each(btn => {\r\n btn.get('active') && btn.trigger('updateActive');\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Disable buttons flagged as disabled\r\n * @private\r\n */\r\n disableButtons() {\r\n this.getPanels().each(p => {\r\n p.get('buttons').each(btn => {\r\n if (btn.get('disable')) btn.trigger('change:disable');\r\n });\r\n });\r\n },\r\n\r\n Panel\r\n };\r\n};\r\n","export default {\r\n // Style prefix\r\n stylePrefix: 'css-',\r\n\r\n // Custom CSS string to render on top\r\n staticRules: '',\r\n\r\n // Default CSS style\r\n rules: []\r\n};\r\n","import { map } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport Styleable from 'domain_abstract/model/Styleable';\r\nimport { isEmpty, forEach } from 'underscore';\r\nimport Selectors from 'selector_manager/model/Selectors';\r\n\r\nexport default Backbone.Model.extend(Styleable).extend({\r\n defaults: {\r\n // Css selectors\r\n selectors: {},\r\n\r\n // Additional string css selectors\r\n selectorsAdd: '',\r\n\r\n // Css properties style\r\n style: {},\r\n\r\n // On which device width this rule should be rendered, eg. @media (max-width: 1000px)\r\n mediaText: '',\r\n\r\n // State of the rule, eg: hover | pressed | focused\r\n state: '',\r\n\r\n // Indicates if the rule is stylable\r\n stylable: true,\r\n\r\n // Type of at-rule, eg. 'media', 'font-face', etc.\r\n atRuleType: '',\r\n\r\n // This particolar property is used only on at-rules, like 'page' or\r\n // 'font-face', where the block containes only style declarations\r\n singleAtRule: 0,\r\n\r\n // If true, sets '!important' on all properties\r\n // You can use an array to specify properties to set important\r\n // Used in view\r\n important: 0\r\n },\r\n\r\n initialize(c, opt = {}) {\r\n this.config = c || {};\r\n const em = opt.em;\r\n let selectors = this.config.selectors || [];\r\n this.em = em;\r\n\r\n if (em) {\r\n const sm = em.get('SelectorManager');\r\n const slct = [];\r\n selectors.forEach(selector => {\r\n slct.push(sm.add(selector));\r\n });\r\n selectors = slct;\r\n }\r\n\r\n this.set('selectors', new Selectors(selectors));\r\n },\r\n\r\n /**\r\n * Returns an at-rule statement if possible, eg. '@media (...)', '@keyframes'\r\n * @return {string}\r\n */\r\n getAtRule() {\r\n const type = this.get('atRuleType');\r\n const condition = this.get('mediaText');\r\n // Avoid breaks with the last condition\r\n const typeStr = type ? `@${type}` : condition ? '@media' : '';\r\n\r\n return typeStr + (condition && typeStr ? ` ${condition}` : '');\r\n },\r\n\r\n /**\r\n * Return selectors fo the rule as a string\r\n * @return {string}\r\n */\r\n selectorsToString(opts = {}) {\r\n const result = [];\r\n const { em } = this;\r\n const state = this.get('state');\r\n const wrapper = this.get('wrapper');\r\n const addSelector = this.get('selectorsAdd');\r\n const isBody = wrapper && em && em.getConfig('wrapperIsBody');\r\n const selectors = isBody ? 'body' : this.get('selectors').getFullString();\r\n const stateStr = state ? `:${state}` : '';\r\n selectors && result.push(`${selectors}${stateStr}`);\r\n addSelector && !opts.skipAdd && result.push(addSelector);\r\n return result.join(', ');\r\n },\r\n\r\n /**\r\n * Get declaration block\r\n * @param {Object} [opts={}] Options\r\n * @return {string}\r\n */\r\n getDeclaration(opts = {}) {\r\n let result = '';\r\n const selectors = this.selectorsToString();\r\n const style = this.styleToString(opts);\r\n const singleAtRule = this.get('singleAtRule');\r\n\r\n if ((selectors || singleAtRule) && style) {\r\n result = singleAtRule ? style : `${selectors}{${style}}`;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Returns CSS string of the rule\r\n * @param {Object} [opts={}] Options\r\n * @return {string}\r\n */\r\n toCSS(opts = {}) {\r\n let result = '';\r\n const atRule = this.getAtRule();\r\n const block = this.getDeclaration(opts);\r\n block && (result = block);\r\n\r\n if (atRule && result) {\r\n result = `${atRule}{${result}}`;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n toJSON(...args) {\r\n const obj = Backbone.Model.prototype.toJSON.apply(this, args);\r\n\r\n if (this.em.getConfig('avoidDefaults')) {\r\n const defaults = this.defaults;\r\n\r\n forEach(defaults, (value, key) => {\r\n if (obj[key] === value) {\r\n delete obj[key];\r\n }\r\n });\r\n\r\n if (isEmpty(obj.selectors)) delete obj.selectors;\r\n if (isEmpty(obj.style)) delete obj.style;\r\n }\r\n\r\n return obj;\r\n },\r\n\r\n /**\r\n * Compare the actual model with parameters\r\n * @param {Object} selectors Collection of selectors\r\n * @param {String} state Css rule state\r\n * @param {String} width For which device this style is oriented\r\n * @param {Object} ruleProps Other rule props\r\n * @return {Boolean}\r\n * @private\r\n */\r\n compare(selectors, state, width, ruleProps = {}) {\r\n var st = state || '';\r\n var wd = width || '';\r\n var selectorsAdd = ruleProps.selectorsAdd || '';\r\n var atRuleType = ruleProps.atRuleType || '';\r\n var cId = 'cid';\r\n //var a1 = _.pluck(selectors.models || selectors, cId);\r\n //var a2 = _.pluck(this.get('selectors').models, cId);\r\n if (!(selectors instanceof Array) && !selectors.models)\r\n selectors = [selectors];\r\n var a1 = map(selectors.models || selectors, model => model.get('name'));\r\n var a2 = map(this.get('selectors').models, model => model.get('name'));\r\n var f = false;\r\n\r\n if (a1.length !== a2.length) return f;\r\n\r\n for (var i = 0; i < a1.length; i++) {\r\n var re = 0;\r\n for (var j = 0; j < a2.length; j++) {\r\n if (a1[i] === a2[j]) re = 1;\r\n }\r\n if (re === 0) return f;\r\n }\r\n\r\n if (\r\n this.get('state') !== st ||\r\n this.get('mediaText') !== wd ||\r\n this.get('selectorsAdd') !== selectorsAdd ||\r\n this.get('atRuleType') !== atRuleType\r\n ) {\r\n return f;\r\n }\r\n\r\n return true;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport CssRule from './CssRule';\r\n\r\nexport default Backbone.Collection.extend({\r\n initialize(models, opt) {\r\n // Inject editor\r\n if (opt && opt.em) this.editor = opt.em;\r\n\r\n // Not used\r\n this.model = (attrs, options) => {\r\n var model;\r\n\r\n if (!options.em && opt && opt.em) options.em = opt.em;\r\n\r\n switch (1) {\r\n default:\r\n model = new CssRule(attrs, options);\r\n }\r\n\r\n return model;\r\n };\r\n },\r\n\r\n add(models, opt = {}) {\r\n if (typeof models === 'string') {\r\n models = this.editor.get('Parser').parseCss(models);\r\n }\r\n opt.em = this.editor;\r\n return Backbone.Collection.prototype.add.apply(this, [models, opt]);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n tagName: 'style',\r\n\r\n initialize(o = {}) {\r\n this.config = o.config || {};\r\n const model = this.model;\r\n const toTrack = 'change:style change:state change:mediaText';\r\n this.listenTo(model, toTrack, this.render);\r\n this.listenTo(model, 'destroy remove', this.remove);\r\n this.listenTo(model.get('selectors'), 'change', this.render);\r\n },\r\n\r\n render() {\r\n const model = this.model;\r\n let important = model.get('important');\r\n if (model.get('isStateRecording')) {\r\n important = 1;\r\n let selModel = editor.getSelected();\r\n let states = {};\r\n states[model.get('recordingStateName')] = model.get('style');\r\n selModel.set('recordedState', states);\r\n }\r\n this.el.innerHTML = this.model.toCSS({ important });\r\n return this;\r\n }\r\n});\r\n","import CssRuleView from './CssRuleView';\r\n\r\nexport default CssRuleView.extend({\r\n _createElement: function(tagName) {\r\n return document.createTextNode('');\r\n },\r\n\r\n render() {\r\n const model = this.model;\r\n const important = model.get('important');\r\n this.el.textContent = model.getDeclaration({ important });\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport CssRuleView from './CssRuleView';\r\nimport CssGroupRuleView from './CssGroupRuleView';\r\n\r\nconst $ = Backbone.$;\r\n\r\nconst getBlockId = (pfx, order) =>\r\n `${pfx}${order ? `-${parseFloat(order)}` : ''}`;\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n const config = o.config || {};\r\n this.atRules = {};\r\n this.config = config;\r\n this.em = config.em;\r\n this.pfx = config.stylePrefix || '';\r\n this.className = this.pfx + 'rules';\r\n const coll = this.collection;\r\n this.listenTo(coll, 'add', this.addTo);\r\n this.listenTo(coll, 'reset', this.render);\r\n },\r\n\r\n /**\r\n * Add to collection\r\n * @param {Object} model\r\n * @private\r\n * */\r\n addTo(model) {\r\n this.addToCollection(model);\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param {Object} model\r\n * @param {Object} fragmentEl\r\n * @return {Object}\r\n * @private\r\n * */\r\n addToCollection(model, fragmentEl) {\r\n // If the render is not yet started\r\n if (!this.renderStarted) {\r\n return;\r\n }\r\n\r\n const fragment = fragmentEl || null;\r\n const { config } = this;\r\n const opts = { model, config };\r\n let rendered, view;\r\n\r\n // I have to render keyframes of the same name together\r\n // Unfortunately at the moment I didn't find the way of appending them\r\n // if not staticly, via appendData\r\n if (model.get('atRuleType') === 'keyframes') {\r\n const atRule = model.getAtRule();\r\n let atRuleEl = this.atRules[atRule];\r\n\r\n if (!atRuleEl) {\r\n const styleEl = document.createElement('style');\r\n atRuleEl = document.createTextNode('');\r\n styleEl.appendChild(document.createTextNode(`${atRule}{`));\r\n styleEl.appendChild(atRuleEl);\r\n styleEl.appendChild(document.createTextNode(`}`));\r\n this.atRules[atRule] = atRuleEl;\r\n rendered = styleEl;\r\n }\r\n\r\n view = new CssGroupRuleView(opts);\r\n atRuleEl.appendData(view.render().el.textContent);\r\n } else {\r\n view = new CssRuleView(opts);\r\n rendered = view.render().el;\r\n }\r\n\r\n const clsName = this.className;\r\n const mediaText = model.get('mediaText');\r\n const defaultBlockId = getBlockId(clsName);\r\n let blockId = defaultBlockId;\r\n\r\n // If the rule contains a media query it might have a different container\r\n // for it (eg. rules created with Device Manager)\r\n if (mediaText) {\r\n blockId = getBlockId(clsName, this.getMediaWidth(mediaText));\r\n }\r\n\r\n if (rendered) {\r\n const container = fragment || this.el;\r\n let contRules;\r\n\r\n // Try to find a specific container for the rule (if it\r\n // containes a media query), otherwise get the default one\r\n try {\r\n contRules = container.querySelector(`#${blockId}`);\r\n } catch (e) {}\r\n\r\n if (!contRules) {\r\n contRules = container.querySelector(`#${defaultBlockId}`);\r\n }\r\n\r\n contRules.appendChild(rendered);\r\n }\r\n\r\n return rendered;\r\n },\r\n\r\n getMediaWidth(mediaText) {\r\n return (\r\n mediaText &&\r\n mediaText\r\n .replace(`(${this.em.getConfig('mediaCondition')}: `, '')\r\n .replace(')', '')\r\n );\r\n },\r\n\r\n render() {\r\n this.renderStarted = 1;\r\n this.atRules = {};\r\n const { em, $el, className, collection } = this;\r\n const frag = document.createDocumentFragment();\r\n $el.empty();\r\n\r\n // Create devices related DOM structure, ensure also to have a default container\r\n const prs = em\r\n .get('DeviceManager')\r\n .getAll()\r\n .pluck('priority');\r\n prs.every(pr => pr) && prs.unshift(0);\r\n prs.forEach(pr =>\r\n $(`
    `).appendTo(frag)\r\n );\r\n\r\n collection.each(model => this.addToCollection(model, frag));\r\n $el.append(frag);\r\n $el.attr('class', className);\r\n return this;\r\n }\r\n});\r\n","/**\r\n * This module contains and manage CSS rules for the template inside the canvas.\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/css_composer/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * cssComposer: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const cssComposer = editor.CssComposer;\r\n * ```\r\n *\r\n * * [load](#load)\r\n * * [store](#store)\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getall)\r\n * * [clear](#clear)\r\n * * [setRule](#setrule)\r\n * * [getRule](#getrule)\r\n *\r\n * @module CssComposer\r\n */\r\n\r\nimport { isArray } from 'underscore';\r\nimport defaults from './config/config';\r\nimport CssRule from './model/CssRule';\r\nimport CssRules from './model/CssRules';\r\nimport CssRulesView from './view/CssRulesView';\r\nimport Selectors from 'selector_manager/model/Selectors';\r\nimport Selector from 'selector_manager/model/Selector';\r\n\r\nexport default () => {\r\n let em;\r\n var c = {};\r\n var rules, rulesView;\r\n\r\n return {\r\n Selectors,\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'CssComposer',\r\n\r\n /**\r\n * Mandatory for the storage manager\r\n * @type {String}\r\n * @private\r\n */\r\n storageKey() {\r\n var keys = [];\r\n var smc = (c.stm && c.stm.getConfig()) || {};\r\n if (smc.storeCss) keys.push('css');\r\n if (smc.storeStyles) keys.push('styles');\r\n return keys;\r\n },\r\n\r\n /**\r\n * Initializes module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n var ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n var elStyle = (c.em && c.em.config.style) || '';\r\n c.rules = elStyle || c.rules;\r\n\r\n em = c.em;\r\n rules = new CssRules([], c);\r\n rulesView = new CssRulesView({\r\n collection: rules,\r\n config: c\r\n });\r\n return this;\r\n },\r\n\r\n /**\r\n * On load callback\r\n * @private\r\n */\r\n onLoad() {\r\n rules.add(c.rules);\r\n },\r\n\r\n /**\r\n * Do stuff after load\r\n * @param {Editor} em\r\n * @private\r\n */\r\n postLoad(em) {\r\n const ev = 'add remove';\r\n const rules = this.getAll();\r\n const um = em.get('UndoManager');\r\n um && um.add(rules);\r\n em.stopListening(rules, ev, this.handleChange);\r\n em.listenTo(rules, ev, this.handleChange);\r\n rules.each(rule => this.handleChange(rule, { avoidStore: 1 }));\r\n },\r\n\r\n /**\r\n * Handle rule changes\r\n * @private\r\n */\r\n handleChange(model, opts = {}) {\r\n const ev = 'change:style';\r\n const um = em.get('UndoManager');\r\n um && um.add(model);\r\n const handleUpdates = em.handleUpdates.bind(em);\r\n em.stopListening(model, ev, handleUpdates);\r\n em.listenTo(model, ev, handleUpdates);\r\n !opts.avoidStore && handleUpdates('', '', opts);\r\n },\r\n\r\n /**\r\n * Load data from the passed object, if the object is empty will try to fetch them\r\n * autonomously from the storage manager.\r\n * The fetched data will be added to the collection\r\n * @param {Object} data Object of data to load\r\n * @return {Object} Loaded rules\r\n */\r\n load(data) {\r\n var d = data || '';\r\n\r\n if (!d && c.stm) {\r\n d = c.em.getCacheLoad();\r\n }\r\n\r\n var obj = d.styles || '';\r\n\r\n if (d.styles) {\r\n try {\r\n obj = JSON.parse(d.styles);\r\n } catch (err) {}\r\n } else if (d.css) {\r\n obj = c.em.get('Parser').parseCss(d.css);\r\n }\r\n\r\n if (isArray(obj)) {\r\n obj.length && rules.reset(obj);\r\n } else if (obj) {\r\n rules.reset(obj);\r\n }\r\n\r\n return obj;\r\n },\r\n\r\n /**\r\n * Store data to the selected storage\r\n * @param {Boolean} noStore If true, won't store\r\n * @return {Object} Data to store\r\n */\r\n store(noStore) {\r\n if (!c.stm) return;\r\n var obj = {};\r\n var keys = this.storageKey();\r\n if (keys.indexOf('css') >= 0) obj.css = c.em.getCss();\r\n if (keys.indexOf('styles') >= 0) obj.styles = JSON.stringify(rules);\r\n if (!noStore) c.stm.store(obj);\r\n return obj;\r\n },\r\n\r\n /**\r\n * Add new rule to the collection, if not yet exists with the same selectors\r\n * @param {Array} selectors Array of selectors\r\n * @param {String} state Css rule state\r\n * @param {String} width For which device this style is oriented\r\n * @param {Object} opts Other options for the rule\r\n * @return {Model}\r\n * @example\r\n * var sm = editor.SelectorManager;\r\n * var sel1 = sm.add('myClass1');\r\n * var sel2 = sm.add('myClass2');\r\n * var rule = cssComposer.add([sel1, sel2], 'hover');\r\n * rule.set('style', {\r\n * width: '100px',\r\n * color: '#fff',\r\n * });\r\n * */\r\n add(selectors, state, width, opts = {}) {\r\n var s = state || '';\r\n var w = width || '';\r\n var opt = { ...opts };\r\n var rule = this.get(selectors, s, w, opt);\r\n\r\n // do not create rules that were found before\r\n // unless this is a single at-rule, for which multiple declarations\r\n // make sense (e.g. multiple `@font-type`s)\r\n if (rule && rule.config && !rule.config.singleAtRule) {\r\n return rule;\r\n } else {\r\n opt.state = s;\r\n opt.mediaText = w;\r\n opt.selectors = '';\r\n rule = new CssRule(opt, c);\r\n rule.get('selectors').add(selectors);\r\n rules.add(rule);\r\n return rule;\r\n }\r\n },\r\n\r\n /**\r\n * Get the rule\r\n * @param {Array} selectors Array of selectors\r\n * @param {String} state Css rule state\r\n * @param {String} width For which device this style is oriented\r\n * @param {Object} ruleProps Other rule props\r\n * @return {Model|null}\r\n * @example\r\n * var sm = editor.SelectorManager;\r\n * var sel1 = sm.add('myClass1');\r\n * var sel2 = sm.add('myClass2');\r\n * var rule = cssComposer.get([sel1, sel2], 'hover');\r\n * // Update the style\r\n * rule.set('style', {\r\n * width: '300px',\r\n * color: '#000',\r\n * });\r\n * */\r\n get(selectors, state, width, ruleProps) {\r\n var rule = null;\r\n rules.each(m => {\r\n if (rule) return;\r\n if (m.compare(selectors, state, width, ruleProps)) rule = m;\r\n });\r\n return rule;\r\n },\r\n\r\n /**\r\n * Get the collection of rules\r\n * @return {Collection}\r\n * */\r\n getAll() {\r\n return rules;\r\n },\r\n\r\n /**\r\n * Remove all rules\r\n * @return {this}\r\n */\r\n clear() {\r\n this.getAll().reset();\r\n return this;\r\n },\r\n\r\n /**\r\n * Add a raw collection of rule objects\r\n * This method overrides styles, in case, of already defined rule\r\n * @param {Array} data Array of rule objects, eg . [{selectors: ['class1'], style: {....}}, ..]\r\n * @param {Object} opts Options\r\n * @return {Array}\r\n * @private\r\n */\r\n addCollection(data, opts = {}) {\r\n var result = [];\r\n var d = data instanceof Array ? data : [data];\r\n\r\n for (var i = 0, l = d.length; i < l; i++) {\r\n var rule = d[i] || {};\r\n if (!rule.selectors) continue;\r\n var sm = c.em && c.em.get('SelectorManager');\r\n if (!sm) console.warn('Selector Manager not found');\r\n var sl = rule.selectors;\r\n var sels = sl instanceof Array ? sl : [sl];\r\n var newSels = [];\r\n\r\n for (var j = 0, le = sels.length; j < le; j++) {\r\n var selec = sm.add(sels[j]);\r\n newSels.push(selec);\r\n }\r\n\r\n var modelExists = this.get(newSels, rule.state, rule.mediaText, rule);\r\n var model = this.add(newSels, rule.state, rule.mediaText, rule);\r\n var updateStyle = !modelExists || !opts.avoidUpdateStyle;\r\n const style = rule.style || {};\r\n\r\n if (updateStyle) {\r\n let styleUpdate = opts.extend\r\n ? { ...model.get('style'), ...style }\r\n : style;\r\n model.set('style', styleUpdate);\r\n }\r\n\r\n result.push(model);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Add/update the CSS rule with a generic selector\r\n * @param {string} selectors Selector, eg. '.myclass'\r\n * @param {Object} style Style properties and values\r\n * @param {Object} [opts={}] Additional properties\r\n * @param {String} [opts.atRuleType=''] At-rule type, eg. 'media'\r\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\r\n * @return {CssRule} The new/updated rule\r\n * @example\r\n * // Simple class-based rule\r\n * const rule = cc.setRule('.class1.class2', { color: 'red' });\r\n * console.log(rule.toCSS()) // output: .class1.class2 { color: red }\r\n * // With state and other mixed selector\r\n * const rule = cc.setRule('.class1.class2:hover, div#myid', { color: 'red' });\r\n * // output: .class1.class2:hover, div#myid { color: red }\r\n * // With media\r\n * const rule = cc.setRule('.class1:hover', { color: 'red' }, {\r\n * atRuleType: 'media',\r\n * atRuleParams: '(min-width: 500px)',\r\n * });\r\n * // output: @media (min-width: 500px) { .class1:hover { color: red } }\r\n */\r\n setRule(selectors, style, opts = {}) {\r\n const { atRuleType, atRuleParams } = opts;\r\n const node = em.get('Parser').parserCss.checkNode({\r\n selectors,\r\n style\r\n })[0];\r\n const { state, selectorsAdd } = node;\r\n const sm = em.get('SelectorManager');\r\n const selector = sm.add(node.selectors);\r\n const rule = this.add(selector, state, atRuleParams, {\r\n selectorsAdd,\r\n atRule: atRuleType\r\n });\r\n rule.setStyle(style, opts);\r\n return rule;\r\n },\r\n\r\n /**\r\n * Get the CSS rule by a generic selector\r\n * @param {string} selectors Selector, eg. '.myclass:hover'\r\n * @param {String} [opts.atRuleType=''] At-rule type, eg. 'media'\r\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\r\n * @return {CssRule}\r\n * @example\r\n * const rule = cc.getRule('.myclass1:hover');\r\n * const rule2 = cc.getRule('.myclass1:hover, div#myid');\r\n * const rule3 = cc.getRule('.myclass1', {\r\n * atRuleType: 'media',\r\n * atRuleParams: '(min-width: 500px)',\r\n * });\r\n */\r\n getRule(selectors, opts = {}) {\r\n const sm = em.get('SelectorManager');\r\n const node = em.get('Parser').parserCss.checkNode({ selectors })[0];\r\n const selector = sm.get(node.selectors);\r\n const { state, selectorsAdd } = node;\r\n const { atRuleType, atRuleParams } = opts;\r\n return (\r\n selector &&\r\n this.get(selector, state, atRuleParams, {\r\n selectorsAdd,\r\n atRule: atRuleType\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Add/update the CSS rule with id selector\r\n * @param {string} name Id selector name, eg. 'my-id'\r\n * @param {Object} style Style properties and values\r\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\r\n * @return {CssRule} The new/updated rule\r\n * @private\r\n * @example\r\n * const rule = cc.setIdRule('myid', { color: 'red' });\r\n * const ruleHover = cc.setIdRule('myid', { color: 'blue' }, { state: 'hover' });\r\n * // This will add current CSS:\r\n * // #myid { color: red }\r\n * // #myid:hover { color: blue }\r\n */\r\n setIdRule(name, style = {}, opts = {}) {\r\n const state = opts.state || '';\r\n const media = opts.mediaText || em.getCurrentMedia();\r\n const sm = em.get('SelectorManager');\r\n const selector = sm.add({ name, type: Selector.TYPE_ID });\r\n const rule = this.add(selector, state, media);\r\n rule.setStyle(style, opts);\r\n return rule;\r\n },\r\n\r\n /**\r\n * Get the CSS rule by id selector\r\n * @param {string} name Id selector name, eg. 'my-id'\r\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\r\n * @return {CssRule}\r\n * @private\r\n * @example\r\n * const rule = cc.getIdRule('myid');\r\n * const ruleHover = cc.setIdRule('myid', { state: 'hover' });\r\n */\r\n getIdRule(name, opts = {}) {\r\n const state = opts.state || '';\r\n const media = opts.mediaText || em.getCurrentMedia();\r\n const selector = em.get('SelectorManager').get(name, Selector.TYPE_ID);\r\n return selector && this.get(selector, state, media);\r\n },\r\n\r\n /**\r\n * Add/update the CSS rule with class selector\r\n * @param {string} name Class selector name, eg. 'my-class'\r\n * @param {Object} style Style properties and values\r\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\r\n * @return {CssRule} The new/updated rule\r\n * @private\r\n * @example\r\n * const rule = cc.setClassRule('myclass', { color: 'red' });\r\n * const ruleHover = cc.setClassRule('myclass', { color: 'blue' }, { state: 'hover' });\r\n * // This will add current CSS:\r\n * // .myclass { color: red }\r\n * // .myclass:hover { color: blue }\r\n */\r\n setClassRule(name, style = {}, opts = {}) {\r\n const state = opts.state || '';\r\n const media = opts.mediaText || em.getCurrentMedia();\r\n const sm = em.get('SelectorManager');\r\n const selector = sm.add({ name, type: Selector.TYPE_CLASS });\r\n const rule = this.add(selector, state, media);\r\n rule.setStyle(style, opts);\r\n return rule;\r\n },\r\n\r\n /**\r\n * Get the CSS rule by class selector\r\n * @param {string} name Class selector name, eg. 'my-class'\r\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\r\n * @return {CssRule}\r\n * @private\r\n * @example\r\n * const rule = cc.getClassRule('myclass');\r\n * const ruleHover = cc.getClassRule('myclass', { state: 'hover' });\r\n */\r\n getClassRule(name, opts = {}) {\r\n const state = opts.state || '';\r\n const media = opts.mediaText || em.getCurrentMedia();\r\n const selector = em.get('SelectorManager').get(name, Selector.TYPE_CLASS);\r\n return selector && this.get(selector, state, media);\r\n },\r\n\r\n /**\r\n * Render the block of CSS rules\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n render() {\r\n return rulesView.render().el;\r\n }\r\n };\r\n};\r\n","import Backbone from 'backbone';\r\nimport { bindAll } from 'underscore';\r\nimport {\r\n on,\r\n off,\r\n getElement,\r\n getKeyChar,\r\n isTextNode,\r\n getElRect\r\n} from 'utils/mixins';\r\nimport FrameView from './FrameView';\r\n\r\nconst $ = Backbone.$;\r\nlet timerZoom;\r\n\r\nexport default Backbone.View.extend({\r\n events: {\r\n wheel: 'onWheel'\r\n },\r\n\r\n template() {\r\n const { pfx } = this;\r\n return `\r\n
    \r\n
    \r\n `;\r\n },\r\n\r\n initialize(o) {\r\n bindAll(this, 'renderBody', 'onFrameScroll', 'clearOff', 'onKeyPress');\r\n on(window, 'scroll resize', this.clearOff);\r\n const { model } = this;\r\n this.config = o.config || {};\r\n this.em = this.config.em || {};\r\n this.pfx = this.config.stylePrefix || '';\r\n this.ppfx = this.config.pStylePrefix || '';\r\n this.className = this.config.stylePrefix + 'canvas';\r\n this.listenTo(this.em, 'change:canvasOffset', this.clearOff);\r\n this.listenTo(model, 'change:zoom change:x change:y', this.updateFrames);\r\n this.toggleListeners(1);\r\n this.frame = new FrameView({\r\n model: this.model.get('frame'),\r\n config: this.config\r\n });\r\n },\r\n\r\n remove() {\r\n Backbone.View.prototype.remove.apply(this, arguments);\r\n this.toggleListeners();\r\n },\r\n\r\n preventDefault(ev) {\r\n if (ev) {\r\n ev.preventDefault();\r\n ev._parentEvent && ev._parentEvent.preventDefault();\r\n }\r\n },\r\n\r\n toggleListeners(enable) {\r\n const method = enable ? 'on' : 'off';\r\n const methods = { on, off };\r\n methods[method](document, 'keypress', this.onKeyPress);\r\n },\r\n\r\n onKeyPress(ev) {\r\n const { em } = this;\r\n const key = getKeyChar(ev);\r\n\r\n if (key === ' ' && em.getZoomDecimal() !== 1) {\r\n this.preventDefault(ev);\r\n em.get('Editor').runCommand('core:canvas-move');\r\n }\r\n },\r\n\r\n onWheel(ev) {\r\n if ((ev.ctrlKey || ev.metaKey) && this.em.getConfig('multiFrames')) {\r\n this.preventDefault(ev);\r\n const { model } = this;\r\n const delta = Math.max(-1, Math.min(1, ev.wheelDelta || -ev.detail));\r\n const zoom = model.get('zoom');\r\n model.set('zoom', zoom + delta * 2);\r\n }\r\n },\r\n\r\n updateFrames(ev) {\r\n const { em, model } = this;\r\n const { x, y } = model.attributes;\r\n const zoom = this.getZoom();\r\n const defOpts = { preserveSelected: 1 };\r\n const mpl = zoom ? 1 / zoom : 1;\r\n this.framesArea.style.transform = `scale(${zoom}) translate(${x *\r\n mpl}px, ${y * mpl}px)`;\r\n this.clearOff();\r\n this.onFrameScroll();\r\n em.stopDefault(defOpts);\r\n em.trigger('canvas:update', ev);\r\n timerZoom && clearTimeout(timerZoom);\r\n timerZoom = setTimeout(() => em.runDefault(defOpts));\r\n },\r\n\r\n getZoom() {\r\n return this.em.getZoomDecimal();\r\n },\r\n\r\n /**\r\n * Checks if the element is visible in the canvas's viewport\r\n * @param {HTMLElement} el\r\n * @return {Boolean}\r\n */\r\n isElInViewport(el) {\r\n const rect = getElRect(getElement(el));\r\n const frameRect = this.getFrameOffset();\r\n const rTop = rect.top;\r\n const rLeft = rect.left;\r\n return (\r\n rTop >= 0 &&\r\n rLeft >= 0 &&\r\n rTop <= frameRect.height &&\r\n rLeft <= frameRect.width\r\n );\r\n },\r\n\r\n /**\r\n * Update tools position\r\n * @private\r\n */\r\n onFrameScroll() {\r\n var u = 'px';\r\n var body = this.frame.el.contentDocument.body;\r\n const zoom = this.getZoom();\r\n this.toolsEl.style.top = '-' + body.scrollTop * zoom + u;\r\n this.toolsEl.style.left = '-' + body.scrollLeft * zoom + u;\r\n this.em.trigger('canvasScroll');\r\n },\r\n\r\n /**\r\n * Insert scripts into head, it will call renderBody after all scripts loaded or failed\r\n * @private\r\n */\r\n renderScripts() {\r\n var frame = this.frame;\r\n var that = this;\r\n\r\n frame.el.onload = () => {\r\n var scripts = that.config.scripts.slice(0), // clone\r\n counter = 0;\r\n\r\n function appendScript(scripts) {\r\n if (scripts.length > 0) {\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = scripts.shift();\r\n script.onerror = script.onload = appendScript.bind(null, scripts);\r\n frame.el.contentDocument.head.appendChild(script);\r\n } else {\r\n that.renderBody();\r\n }\r\n }\r\n appendScript(scripts);\r\n };\r\n },\r\n\r\n /**\r\n * Render inside frame's body\r\n * @private\r\n */\r\n renderBody() {\r\n const { config, model } = this;\r\n const wrap = this.model.get('frame').get('wrapper');\r\n const em = config.em;\r\n\r\n if (wrap) {\r\n const Canvas = em.get('Canvas');\r\n const ppfx = this.ppfx;\r\n const body = $(Canvas.getBody());\r\n const head = $(Canvas.getDocument().head);\r\n const cssc = em.get('CssComposer');\r\n const conf = em.get('Config');\r\n let externalStyles = '';\r\n\r\n config.styles.forEach(style => {\r\n externalStyles += ``;\r\n });\r\n\r\n const colorWarn = '#ffca6f';\r\n\r\n // I need all this styles to make the editor work properly\r\n // Remove `html { height: 100%;}` from the baseCss as it gives jumpings\r\n // effects (on ENTER) with RTE like CKEditor (maybe some bug there?!?)\r\n // With `body {height: auto;}` jumps in CKEditor are removed but in\r\n // Firefox is impossible to drag stuff in empty canvas, so bring back\r\n // `body {height: 100%;}`.\r\n // For the moment I give the priority to Firefox as it might be\r\n // CKEditor's issue\r\n var frameCss = `\r\n ${em.config.baseCss || ''}\r\n body{\r\n font-family: Montserrat, sans-serif;\r\n }\r\n .${ppfx}dashed *[data-highlightable] {\r\n outline: 1px dashed rgba(170,170,170,0.7);\r\n outline-offset: -2px;\r\n }\r\n\r\n .${ppfx}comp-selected {\r\n outline: 3px solid #3b97e3 !important;\r\n outline-offset: -3px;\r\n }\r\n\r\n .${ppfx}comp-selected-parent {\r\n outline: 2px solid ${colorWarn} !important\r\n }\r\n\r\n .${ppfx}no-select {\r\n user-select: none;\r\n -webkit-user-select:none;\r\n -moz-user-select: none;\r\n }\r\n\r\n .${ppfx}freezed {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n }\r\n\r\n .${ppfx}no-pointer {\r\n pointer-events: none;\r\n }\r\n\r\n .${ppfx}plh-image {\r\n background: #f5f5f5;\r\n border: none;\r\n height: 100px;\r\n width: 100px;\r\n display: block;\r\n outline: 3px solid #ffca6f;\r\n cursor: pointer;\r\n outline-offset: -2px\r\n }\r\n\r\n .${ppfx}grabbing {\r\n cursor: grabbing;\r\n cursor: -webkit-grabbing;\r\n }\r\n\r\n .${ppfx}is__grabbing {\r\n overflow-x: hidden;\r\n }\r\n\r\n .${ppfx}is__grabbing,\r\n .${ppfx}is__grabbing * {\r\n cursor: grabbing !important;\r\n }\r\n\r\n ${conf.canvasCss || ''}\r\n ${conf.protectedCss || ''}\r\n `;\r\n\r\n if (externalStyles) {\r\n head.append(externalStyles);\r\n }\r\n\r\n body.append('');\r\n body.append(wrap.render()).append(cssc.render());\r\n body.append(this.getJsContainer());\r\n em.trigger('loaded');\r\n this.frame.el.contentWindow.onscroll = this.onFrameScroll;\r\n this.frame.updateOffset();\r\n\r\n // Avoid the default link behaviour in the canvas\r\n body.on(\r\n 'click',\r\n ev => ev && ev.target.tagName == 'A' && ev.preventDefault()\r\n );\r\n // Avoid the default form behaviour\r\n body.on('submit', ev => ev && ev.preventDefault());\r\n\r\n // When the iframe is focused the event dispatcher is not the same so\r\n // I need to delegate all events to the parent document\r\n const doc = document;\r\n const fdoc = this.frame.el.contentDocument;\r\n\r\n // Unfortunately just creating `KeyboardEvent(e.type, e)` is not enough,\r\n // the keyCode/which will be always `0`. Even if it's an old/deprecated\r\n // property keymaster (and many others) still use it... using `defineProperty`\r\n // hack seems the only way\r\n const createCustomEvent = (e, cls) => {\r\n let oEvent;\r\n try {\r\n oEvent = new window[cls](e.type, e);\r\n } catch (e) {\r\n oEvent = document.createEvent(cls);\r\n oEvent.initEvent(e.type, true, true);\r\n }\r\n oEvent.keyCodeVal = e.keyCode;\r\n oEvent._parentEvent = e;\r\n ['keyCode', 'which'].forEach(prop => {\r\n Object.defineProperty(oEvent, prop, {\r\n get() {\r\n return this.keyCodeVal;\r\n }\r\n });\r\n });\r\n return oEvent;\r\n };\r\n\r\n [\r\n { event: 'keydown keyup keypress', class: 'KeyboardEvent' },\r\n { event: 'wheel', class: 'WheelEvent' }\r\n ].forEach(obj =>\r\n obj.event.split(' ').forEach(event => {\r\n fdoc.addEventListener(event, e =>\r\n this.el.dispatchEvent(createCustomEvent(e, obj.class))\r\n );\r\n })\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Get the offset of the element\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n */\r\n offset(el) {\r\n var rect = getElRect(el);\r\n var docBody = el.ownerDocument.body;\r\n return {\r\n top: rect.top + docBody.scrollTop,\r\n left: rect.left + docBody.scrollLeft,\r\n width: rect.width,\r\n height: rect.height\r\n };\r\n },\r\n\r\n /**\r\n * Cleare cached offsets\r\n * @private\r\n */\r\n clearOff() {\r\n this.frmOff = null;\r\n this.cvsOff = null;\r\n },\r\n\r\n /**\r\n * Return frame offset\r\n * @return {Object}\r\n * @private\r\n */\r\n getFrameOffset(force = 0) {\r\n if (!this.frmOff || force) this.frmOff = this.offset(this.frame.el);\r\n return this.frmOff;\r\n },\r\n\r\n /**\r\n * Return canvas offset\r\n * @return {Object}\r\n * @private\r\n */\r\n getCanvasOffset() {\r\n if (!this.cvsOff) this.cvsOff = this.offset(this.el);\r\n return this.cvsOff;\r\n },\r\n\r\n /**\r\n * Returns element's data info\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n * @private\r\n */\r\n getElementPos(el, opts) {\r\n const zoom = this.getZoom();\r\n var opt = opts || {};\r\n var frmOff = this.getFrameOffset();\r\n var cvsOff = this.getCanvasOffset();\r\n var eo = this.offset(el);\r\n\r\n var frmTop = opt.avoidFrameOffset ? 0 : frmOff.top;\r\n var frmLeft = opt.avoidFrameOffset ? 0 : frmOff.left;\r\n\r\n const top = eo.top * zoom + frmTop - cvsOff.top;\r\n const left = eo.left * zoom + frmLeft - cvsOff.left;\r\n const height = eo.height * zoom;\r\n const width = eo.width * zoom;\r\n\r\n return { top, left, height, width, zoom, rect: eo };\r\n },\r\n\r\n /**\r\n * Returns element's offsets like margins and paddings\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n * @private\r\n */\r\n getElementOffsets(el) {\r\n if (!el || isTextNode(el)) return {};\r\n const result = {};\r\n const styles = window.getComputedStyle(el);\r\n [\r\n 'marginTop',\r\n 'marginRight',\r\n 'marginBottom',\r\n 'marginLeft',\r\n 'paddingTop',\r\n 'paddingRight',\r\n 'paddingBottom',\r\n 'paddingLeft'\r\n ].forEach(offset => {\r\n result[offset] = parseFloat(styles[offset]) * this.getZoom();\r\n });\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Returns position data of the canvas element\r\n * @return {Object} obj Position object\r\n * @private\r\n */\r\n getPosition() {\r\n const doc = this.frame.el.contentDocument;\r\n if (!doc) return;\r\n const bEl = doc.body;\r\n const zoom = this.getZoom();\r\n const fo = this.getFrameOffset();\r\n const co = this.getCanvasOffset();\r\n\r\n return {\r\n top: fo.top + bEl.scrollTop * zoom - co.top,\r\n left: fo.left + bEl.scrollLeft * zoom - co.left,\r\n width: co.width,\r\n height: co.height\r\n };\r\n },\r\n\r\n /**\r\n * Update javascript of a specific component passed by its View\r\n * @param {View} view Component's View\r\n * @private\r\n */\r\n updateScript(view) {\r\n const model = view.model;\r\n const id = model.getId();\r\n\r\n if (!view.scriptContainer) {\r\n view.scriptContainer = $(`
    `);\r\n this.getJsContainer().appendChild(view.scriptContainer.get(0));\r\n }\r\n\r\n view.el.id = id;\r\n view.scriptContainer.html('');\r\n // In editor, I make use of setTimeout as during the append process of elements\r\n // those will not be available immediately, therefore 'item' variable\r\n const script = document.createElement('script');\r\n script.innerHTML = `\r\n setTimeout(function() {\r\n var item = document.getElementById('${id}');\r\n if (!item) return;\r\n (function(){\r\n ${model.getScriptString()};\r\n }.bind(item))()\r\n }, 1);`;\r\n // #873\r\n // Adding setTimeout will make js components work on init of the editor\r\n setTimeout(() => view.scriptContainer.get(0).appendChild(script), 0);\r\n },\r\n\r\n /**\r\n * Get javascript container\r\n * @private\r\n */\r\n getJsContainer() {\r\n if (!this.jsContainer) {\r\n this.jsContainer = $(`
    `).get(0);\r\n }\r\n return this.jsContainer;\r\n },\r\n\r\n render() {\r\n const { el, $el, ppfx, model } = this;\r\n this.wrapper = model.get('wrapper');\r\n $el.html(this.template());\r\n const $frames = $el.find('[data-frames]');\r\n this.framesArea = $frames.get(0);\r\n\r\n if (this.wrapper && typeof this.wrapper.render == 'function') {\r\n model.get('frame').set('wrapper', this.wrapper);\r\n $frames.append(this.frame.render().el);\r\n var frame = this.frame;\r\n if (this.config.scripts.length === 0) {\r\n frame.el.onload = this.renderBody;\r\n } else {\r\n this.renderScripts(); // will call renderBody later\r\n }\r\n }\r\n $el.find('[data-tools]').append(`\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `);\r\n const toolsEl = el.querySelector(`#${ppfx}tools`);\r\n this.hlEl = el.querySelector(`.${ppfx}highlighter`);\r\n this.badgeEl = el.querySelector(`.${ppfx}badge`);\r\n this.placerEl = el.querySelector(`.${ppfx}placeholder`);\r\n this.ghostEl = el.querySelector(`.${ppfx}ghost`);\r\n this.toolbarEl = el.querySelector(`.${ppfx}toolbar`);\r\n this.resizerEl = el.querySelector(`.${ppfx}resizer`);\r\n this.offsetEl = el.querySelector(`.${ppfx}offset-v`);\r\n this.fixedOffsetEl = el.querySelector(`.${ppfx}offset-fixed-v`);\r\n this.toolsEl = toolsEl;\r\n this.el.className = this.className;\r\n return this;\r\n }\r\n});\r\n","/*\r\n This class makes the canvas droppable\r\n */\r\n\r\nimport { on } from 'utils/mixins';\r\nimport { bindAll, indexOf } from 'underscore';\r\n\r\nexport default class Droppable {\r\n constructor(em) {\r\n this.em = em;\r\n const el = em\r\n .get('DomComponents')\r\n .getWrapper()\r\n .getEl();\r\n this.el = el;\r\n this.counter = 0;\r\n bindAll(\r\n this,\r\n 'handleDragEnter',\r\n 'handleDragOver',\r\n 'handleDrop',\r\n 'handleDragLeave'\r\n );\r\n on(el, 'dragenter', this.handleDragEnter);\r\n on(el, 'dragover', this.handleDragOver);\r\n on(el, 'drop', this.handleDrop);\r\n on(el, 'dragleave', this.handleDragLeave);\r\n\r\n return this;\r\n }\r\n\r\n endDrop(cancel, ev) {\r\n const { em, dragStop } = this;\r\n this.counter = 0;\r\n this.over = 0;\r\n dragStop && dragStop(cancel);\r\n em.runDefault();\r\n em.trigger('canvas:dragend', ev);\r\n }\r\n\r\n handleDragLeave(ev) {\r\n this.updateCounter(-1, ev);\r\n }\r\n\r\n updateCounter(value, ev) {\r\n this.counter += value;\r\n this.counter === 0 && this.endDrop(1, ev);\r\n }\r\n\r\n handleDragEnter(ev) {\r\n const { em } = this;\r\n const dt = ev.dataTransfer;\r\n this.updateCounter(1, ev);\r\n if (this.over) return;\r\n this.over = 1;\r\n const utils = em.get('Utils');\r\n const canvas = em.get('Canvas');\r\n const container = canvas.getBody();\r\n // For security reason I can't read the drag data on dragenter, but\r\n // as I need it for the Sorter context I will use `dragContent` or just\r\n // any not empty element\r\n let content = em.get('dragContent') || '
    ';\r\n let dragStop, dragContent;\r\n em.stopDefault();\r\n\r\n if (em.inAbsoluteMode()) {\r\n const wrapper = em.get('DomComponents').getWrapper();\r\n const target = wrapper.append({})[0];\r\n const dragger = em.get('Commands').run('core:component-drag', {\r\n event: ev,\r\n guidesInfo: 1,\r\n center: 1,\r\n target,\r\n onEnd: (ev, dragger, { cancelled }) => {\r\n if (!cancelled) {\r\n const comp = wrapper.append(content)[0];\r\n const { left, top, position } = target.getStyle();\r\n comp.setStyle({ left, top, position });\r\n this.handleDragEnd(comp, dt);\r\n }\r\n target.remove();\r\n }\r\n });\r\n dragStop = cancel => dragger.stop(ev, { cancel });\r\n dragContent = cnt => (content = cnt);\r\n } else {\r\n const sorter = new utils.Sorter({\r\n em,\r\n wmargin: 1,\r\n nested: 1,\r\n canvasRelative: 1,\r\n direction: 'a',\r\n container,\r\n placer: canvas.getPlacerEl(),\r\n containerSel: '*',\r\n itemSel: '*',\r\n pfx: 'gjs-',\r\n onEndMove: model => this.handleDragEnd(model, dt),\r\n document: canvas.getFrameEl().contentDocument\r\n });\r\n sorter.setDropContent(content);\r\n sorter.startSort();\r\n this.sorter = sorter;\r\n dragStop = cancel => {\r\n cancel && (sorter.moved = 0);\r\n sorter.endMove();\r\n };\r\n dragContent = content => sorter.setDropContent(content);\r\n }\r\n\r\n this.dragStop = dragStop;\r\n this.dragContent = dragContent;\r\n em.trigger('canvas:dragenter', dt, content);\r\n }\r\n\r\n handleDragEnd(model, dt) {\r\n if (!model) return;\r\n const { em } = this;\r\n em.set('dragResult', model);\r\n em.trigger('canvas:drop', dt, model);\r\n }\r\n\r\n /**\r\n * Always need to have this handler active for enabling the drop\r\n * @param {Event} ev\r\n */\r\n handleDragOver(ev) {\r\n ev.preventDefault();\r\n this.em.trigger('canvas:dragover', ev);\r\n }\r\n\r\n handleDrop(ev) {\r\n ev.preventDefault();\r\n const { dragContent } = this;\r\n // const dt = ev.dataTransfer;\r\n // const content = this.getContentByData(dt).content;\r\n const content = this.em.get('dragContent');\r\n ev.target.style.border = '';\r\n content && dragContent && dragContent(content);\r\n this.endDrop(!content, ev);\r\n }\r\n\r\n getContentByData(dataTransfer) {\r\n const em = this.em;\r\n const types = dataTransfer.types;\r\n const files = dataTransfer.files || [];\r\n const dragContent = em.get('dragContent');\r\n let content = dataTransfer.getData('text');\r\n\r\n if (files.length) {\r\n content = [];\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n const type = file.type.split('/')[0];\r\n\r\n if (type == 'image') {\r\n content.push({\r\n type,\r\n file,\r\n attributes: { alt: file.name }\r\n });\r\n }\r\n }\r\n } else if (dragContent) {\r\n content = dragContent;\r\n } else if (indexOf(types, 'text/html') >= 0) {\r\n content = dataTransfer\r\n .getData('text/html')\r\n .replace(/<\\/?meta[^>]*>/g, '');\r\n } else if (indexOf(types, 'text/uri-list') >= 0) {\r\n content = {\r\n type: 'link',\r\n attributes: { href: content },\r\n content: content\r\n };\r\n } else if (indexOf(types, 'text/json') >= 0) {\r\n const json = dataTransfer.getData('text/json');\r\n json && (content = JSON.parse(json));\r\n }\r\n\r\n const result = { content };\r\n em.trigger('canvas:dragdata', dataTransfer, result);\r\n\r\n return result;\r\n }\r\n}\r\n","var sourceFile = require('../../../config/config.js');\r\nexport default {\r\n stylePrefix: 'cv-',\r\n\r\n /*\r\n * Append external scripts to the `` of the iframe.\r\n * Be aware that these scripts will not be printed in the export code\r\n * @example\r\n * scripts: [ 'https://...1.js', 'https://...2.js' ]\r\n */\r\n scripts: [],\r\n\r\n /*\r\n * Append external styles to the `` of the iframe\r\n * Be aware that these styles will not be printed in the export code\r\n * @example\r\n * styles: [ 'https://...1.css', 'https://...2.css' ]\r\n */\r\n styles: [sourceFile.montserrat, sourceFile.mavenpro, sourceFile.roboto],\r\n\r\n /**\r\n * Add custom badge naming strategy\r\n * @example\r\n * customBadgeLabel: function(component) {\r\n * return component.getName();\r\n * }\r\n */\r\n customBadgeLabel: '',\r\n\r\n /**\r\n * Indicate when to start the auto scroll of the canvas on component/block dragging (value in px )\r\n */\r\n autoscrollLimit: 50,\r\n\r\n /**\r\n * When some textable component is selected and focused (eg. input or text component) the editor\r\n * stops some commands (eg. disables the copy/paste of components with CTRL+C/V to allow the copy/paste of the text).\r\n * This option allows to customize, by a selector, which element should not be considered textable\r\n */\r\n notTextable: ['button', 'a', 'input[type=checkbox]', 'input[type=radio]']\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n wrapper: '',\r\n width: '',\r\n height: '',\r\n head: '',\r\n attributes: {}\r\n },\r\n\r\n initialize() {\r\n this.set('head', []);\r\n },\r\n\r\n getHead() {\r\n return [...this.get('head')];\r\n },\r\n\r\n setHead(value) {\r\n return this.set('head', [...value]);\r\n },\r\n\r\n addHeadItem(item) {\r\n const head = this.getHead();\r\n head.push(item);\r\n this.setHead(head);\r\n },\r\n\r\n getHeadByAttr(attr, value, tag) {\r\n const head = this.getHead();\r\n return head.filter(\r\n item =>\r\n item.attributes &&\r\n item.attributes[attr] == value &&\r\n (!tag || tag === item.tag)\r\n )[0];\r\n },\r\n\r\n removeHeadByAttr(attr, value, tag) {\r\n const head = this.getHead();\r\n const item = this.getHeadByAttr(attr, value, tag);\r\n const index = head.indexOf(item);\r\n\r\n if (index >= 0) {\r\n head.splice(index, 1);\r\n this.setHead(head);\r\n }\r\n },\r\n\r\n addLink(href) {\r\n const tag = 'link';\r\n !this.getHeadByAttr('href', href, tag) &&\r\n this.addHeadItem({\r\n tag,\r\n attributes: {\r\n href,\r\n rel: 'stylesheet'\r\n }\r\n });\r\n },\r\n\r\n removeLink(href) {\r\n this.removeHeadByAttr('href', href, 'link');\r\n },\r\n\r\n addScript(src) {\r\n const tag = 'script';\r\n !this.getHeadByAttr('src', src, tag) &&\r\n this.addHeadItem({\r\n tag,\r\n attributes: { src }\r\n });\r\n },\r\n\r\n removeScript(src) {\r\n this.removeHeadByAttr('src', src, 'script');\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Frame from './Frame';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n frame: '',\r\n wrapper: '',\r\n rulers: false,\r\n zoom: 100,\r\n x: 0,\r\n y: 0\r\n },\r\n\r\n initialize(config = {}) {\r\n const { styles = [], scripts = [] } = config;\r\n const frame = new Frame();\r\n styles.forEach(style => frame.addLink(style));\r\n scripts.forEach(script => frame.addScript(script));\r\n this.set('frame', frame);\r\n this.listenTo(this, 'change:zoom', this.onZoomChange);\r\n },\r\n\r\n onZoomChange() {\r\n const zoom = this.get('zoom');\r\n zoom < 1 && this.set('zoom', 1);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport { bindAll } from 'underscore';\r\nimport { appendVNodes, empty } from 'utils/dom';\r\n\r\nconst motionsEv =\r\n 'transitionend oTransitionEnd transitionend webkitTransitionEnd';\r\n\r\nexport default Backbone.View.extend({\r\n tagName: 'iframe',\r\n\r\n attributes: {\r\n allowfullscreen: 'allowfullscreen'\r\n },\r\n\r\n initialize(o) {\r\n bindAll(this, 'updateOffset');\r\n this.config = o.config || {};\r\n this.ppfx = this.config.pStylePrefix || '';\r\n this.em = this.config.em;\r\n this.listenTo(this.model, 'change:head', this.updateHead);\r\n this.listenTo(this.em, 'change:device', this.updateDim);\r\n },\r\n\r\n /**\r\n * Update `` content of the frame\r\n */\r\n updateHead() {\r\n const headEl = this.getHead();\r\n empty(headEl);\r\n appendVNodes(headEl, this.model.getHead());\r\n },\r\n\r\n /**\r\n * Update dimensions of the frame\r\n * @private\r\n */\r\n updateDim() {\r\n const { em, el, $el } = this;\r\n const { style } = el;\r\n const device = em.getDeviceModel();\r\n const currW = style.width || '';\r\n const currH = style.height || '';\r\n const newW = device ? device.get('width') : '';\r\n const newH = device ? device.get('height') : '';\r\n const noChanges = currW == newW && currH == newH;\r\n style.width = newW;\r\n style.height = newH;\r\n this.updateOffset();\r\n // Prevent fixed highlighting box which appears when on\r\n // component hover during the animation\r\n em.stopDefault({ preserveSelected: 1 });\r\n noChanges ? this.updateOffset() : $el.on(motionsEv, this.updateOffset);\r\n },\r\n\r\n updateOffset() {\r\n const em = this.em;\r\n const offset = em.get('Canvas').getOffset();\r\n em.set('canvasOffset', offset);\r\n em.runDefault({ preserveSelected: 1 });\r\n this.$el.off(motionsEv, this.updateOffset);\r\n },\r\n\r\n getDoc() {\r\n return this.$el.get(0).contentDocument;\r\n },\r\n\r\n getHead() {\r\n return this.getDoc().querySelector('head');\r\n },\r\n\r\n getBody() {\r\n return this.getDoc().querySelector('body');\r\n },\r\n\r\n getWrapper() {\r\n return this.$el.contents().find('body > div');\r\n },\r\n\r\n render() {\r\n this.$el.attr({ class: this.ppfx + 'frame' });\r\n return this;\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/canvas/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * canvas: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const canvas = editor.Canvas;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [getElement](#getelement)\r\n * * [getFrameEl](#getframeel)\r\n * * [getWindow](#getwindow)\r\n * * [getDocument](#getdocument)\r\n * * [getBody](#getbody)\r\n * * [getWrapperEl](#getwrapperel)\r\n * * [setCustomBadgeLabel](#setcustombadgelabel)\r\n * * [hasFocus](#hasfocus)\r\n * * [scrollTo](#scrollto)\r\n * * [setZoom](#setzoom)\r\n * * [getZoom](#getzoom)\r\n *\r\n * @module Canvas\r\n */\r\n\r\nimport { on, off, hasDnd, getElement, getPointerEvent } from 'utils/mixins';\r\nimport Droppable from 'utils/Droppable';\r\nimport defaults from './config/config';\r\nimport Canvas from './model/Canvas';\r\nimport canvasView from './view/CanvasView';\r\n\r\nconst { requestAnimationFrame } = window;\r\n\r\nexport default () => {\r\n let c = {};\r\n let canvas;\r\n let frameRect;\r\n let CanvasView;\r\n\r\n return {\r\n /**\r\n * Used inside RTE\r\n * @private\r\n */\r\n getCanvasView() {\r\n return CanvasView;\r\n },\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Canvas',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config = {}) {\r\n c = {\r\n ...defaults,\r\n ...config\r\n };\r\n\r\n this.em = c.em;\r\n const ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n canvas = new Canvas(config);\r\n CanvasView = new canvasView({\r\n model: canvas,\r\n config: c\r\n });\r\n\r\n var cm = c.em.get('DomComponents');\r\n if (cm) this.setWrapper(cm);\r\n\r\n this.startAutoscroll = this.startAutoscroll.bind(this);\r\n this.stopAutoscroll = this.stopAutoscroll.bind(this);\r\n this.autoscroll = this.autoscroll.bind(this);\r\n this.updateClientY = this.updateClientY.bind(this);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the configuration object\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Add wrapper\r\n * @param\t{Object}\twrp Wrapper\r\n * @private\r\n * */\r\n setWrapper(wrp) {\r\n canvas.set('wrapper', wrp);\r\n },\r\n\r\n /**\r\n * Get the canvas element\r\n * @return {HTMLElement}\r\n */\r\n getElement() {\r\n return CanvasView.el;\r\n },\r\n\r\n getFrame() {\r\n return canvas.get('frame');\r\n },\r\n\r\n /**\r\n * Get the iframe element of the canvas\r\n * @return {HTMLIFrameElement}\r\n */\r\n getFrameEl() {\r\n return CanvasView.frame.el;\r\n },\r\n\r\n /**\r\n * Get the window instance of the iframe element\r\n * @return {Window}\r\n */\r\n getWindow() {\r\n return this.getFrameEl().contentWindow;\r\n },\r\n\r\n /**\r\n * Get the document of the iframe element\r\n * @return {HTMLDocument}\r\n */\r\n getDocument() {\r\n return this.getFrameEl().contentDocument;\r\n },\r\n\r\n /**\r\n * Get the body of the iframe element\r\n * @return {HTMLBodyElement}\r\n */\r\n getBody() {\r\n const doc = this.getDocument();\r\n return doc && doc.body;\r\n },\r\n\r\n /**\r\n * Get the wrapper element containing all the components\r\n * @return {HTMLElement}\r\n */\r\n getWrapperEl() {\r\n const body = this.getBody();\r\n return body && body.querySelector('#wrapper');\r\n },\r\n\r\n /**\r\n * Returns element containing all canvas tools\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getToolsEl() {\r\n return CanvasView.toolsEl;\r\n },\r\n\r\n /**\r\n * Returns highlighter element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getHighlighter() {\r\n return CanvasView.hlEl;\r\n },\r\n\r\n /**\r\n * Returns badge element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getBadgeEl() {\r\n return CanvasView.badgeEl;\r\n },\r\n\r\n /**\r\n * Returns placer element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getPlacerEl() {\r\n return CanvasView.placerEl;\r\n },\r\n\r\n /**\r\n * Returns ghost element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getGhostEl() {\r\n return CanvasView.ghostEl;\r\n },\r\n\r\n /**\r\n * Returns toolbar element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getToolbarEl() {\r\n return CanvasView.toolbarEl;\r\n },\r\n\r\n /**\r\n * Returns resizer element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getResizerEl() {\r\n return CanvasView.resizerEl;\r\n },\r\n\r\n /**\r\n * Returns offset viewer element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getOffsetViewerEl() {\r\n return CanvasView.offsetEl;\r\n },\r\n\r\n /**\r\n * Returns fixed offset viewer element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getFixedOffsetViewerEl() {\r\n return CanvasView.fixedOffsetEl;\r\n },\r\n\r\n /**\r\n * Render canvas\r\n * @private\r\n * */\r\n render() {\r\n return CanvasView.render().el;\r\n },\r\n\r\n /**\r\n * Get frame position\r\n * @return {Object}\r\n * @private\r\n */\r\n getOffset() {\r\n var frameOff = this.offset(this.getFrameEl());\r\n var canvasOff = this.offset(this.getElement());\r\n return {\r\n top: frameOff.top - canvasOff.top,\r\n left: frameOff.left - canvasOff.left\r\n };\r\n },\r\n\r\n /**\r\n * Get the offset of the passed component element\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n * @private\r\n */\r\n offset(el) {\r\n return CanvasView.offset(el);\r\n },\r\n\r\n /**\r\n * Set custom badge naming strategy\r\n * @param {Function} f\r\n * @example\r\n * canvas.setCustomBadgeLabel(function(component){\r\n * return component.getName();\r\n * });\r\n */\r\n setCustomBadgeLabel(f) {\r\n c.customBadgeLabel = f;\r\n },\r\n\r\n /**\r\n * Get element position relative to the canvas\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n * @private\r\n */\r\n getElementPos(el, opts) {\r\n return CanvasView.getElementPos(el, opts);\r\n },\r\n\r\n /**\r\n * Returns element's offsets like margins and paddings\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n * @private\r\n */\r\n getElementOffsets(el) {\r\n return CanvasView.getElementOffsets(el);\r\n },\r\n\r\n /**\r\n * Get canvas rectangular data\r\n * @returns {Object}\r\n */\r\n getRect() {\r\n const { top, left } = CanvasView.getPosition();\r\n return {\r\n ...CanvasView.getCanvasOffset(),\r\n topScroll: top,\r\n leftScroll: left\r\n };\r\n },\r\n\r\n /**\r\n * This method comes handy when you need to attach something like toolbars\r\n * to elements inside the canvas, dealing with all relative position,\r\n * offsets, etc. and returning as result the object with positions which are\r\n * viewable by the user (when the canvas is scrolled the top edge of the element\r\n * is not viewable by the user anymore so the new top edge is the one of the canvas)\r\n *\r\n * The target should be visible before being passed here as invisible elements\r\n * return empty string as width\r\n * @param {HTMLElement} target The target in this case could be the toolbar\r\n * @param {HTMLElement} element The element on which I'd attach the toolbar\r\n * @param {Object} options Custom options\r\n * @param {Boolean} options.toRight Set to true if you want the toolbar attached to the right\r\n * @return {Object}\r\n * @private\r\n */\r\n getTargetToElementDim(target, element, options = {}) {\r\n var opts = options || {};\r\n var canvasPos = CanvasView.getPosition();\r\n if (!canvasPos) return;\r\n var pos = opts.elPos || CanvasView.getElementPos(element);\r\n var toRight = options.toRight || 0;\r\n var targetHeight = opts.targetHeight || target.offsetHeight;\r\n var targetWidth = opts.targetWidth || target.offsetWidth;\r\n var eventToTrigger = opts.event || null;\r\n\r\n var elTop = pos.top - targetHeight;\r\n var elLeft = pos.left;\r\n elLeft += toRight ? pos.width : 0;\r\n elLeft = toRight ? elLeft - targetWidth : elLeft;\r\n\r\n var leftPos = elLeft < canvasPos.left ? canvasPos.left : elLeft;\r\n var topPos = elTop < canvasPos.top ? canvasPos.top : elTop;\r\n topPos = topPos > pos.top + pos.height ? pos.top + pos.height : topPos;\r\n\r\n var result = {\r\n top: topPos,\r\n left: leftPos,\r\n elementTop: pos.top,\r\n elementLeft: pos.left,\r\n elementWidth: pos.width,\r\n elementHeight: pos.height,\r\n targetWidth: target.offsetWidth,\r\n targetHeight: target.offsetHeight,\r\n canvasTop: canvasPos.top,\r\n canvasLeft: canvasPos.left,\r\n canvasWidth: canvasPos.width,\r\n canvasHeight: canvasPos.height\r\n };\r\n\r\n // In this way I can catch data and also change the position strategy\r\n if (eventToTrigger && c.em) {\r\n c.em.trigger(eventToTrigger, result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Instead of simply returning e.clientX and e.clientY this function\r\n * calculates also the offset based on the canvas. This is helpful when you\r\n * need to get X and Y position while moving between the editor area and\r\n * canvas area, which is in the iframe\r\n * @param {Event} e\r\n * @return {Object}\r\n * @private\r\n */\r\n getMouseRelativePos(e, options) {\r\n var opts = options || {};\r\n var addTop = 0;\r\n var addLeft = 0;\r\n var subWinOffset = opts.subWinOffset;\r\n var doc = e.target.ownerDocument;\r\n var win = doc.defaultView || doc.parentWindow;\r\n var frame = win.frameElement;\r\n var yOffset = subWinOffset ? win.pageYOffset : 0;\r\n var xOffset = subWinOffset ? win.pageXOffset : 0;\r\n\r\n if (frame) {\r\n var frameRect = frame.getBoundingClientRect();\r\n addTop = frameRect.top || 0;\r\n addLeft = frameRect.left || 0;\r\n }\r\n\r\n return {\r\n y: e.clientY + addTop - yOffset,\r\n x: e.clientX + addLeft - xOffset\r\n };\r\n },\r\n\r\n /**\r\n * X and Y mouse position relative to the canvas\r\n * @param {Event} ev\r\n * @return {Object}\r\n * @private\r\n */\r\n getMouseRelativeCanvas(ev) {\r\n const zoom = this.getZoomDecimal();\r\n const { top, left } = CanvasView.getPosition();\r\n\r\n return {\r\n y: ev.clientY * zoom + top,\r\n x: ev.clientX * zoom + left\r\n };\r\n },\r\n\r\n /**\r\n * Check if the canvas is focused\r\n * @return {Boolean}\r\n */\r\n hasFocus() {\r\n return this.getDocument().hasFocus();\r\n },\r\n\r\n /**\r\n * Detects if some input is focused (input elements, text components, etc.)\r\n * @return {Boolean}\r\n * @private\r\n */\r\n isInputFocused() {\r\n const doc = this.getDocument();\r\n const toIgnore = ['body', ...this.getConfig().notTextable];\r\n const focused = doc && doc.activeElement;\r\n\r\n return focused && !toIgnore.some(item => focused.matches(item));\r\n },\r\n\r\n /**\r\n * Scroll canvas to the element if it's not visible. The scrolling is\r\n * executed via `scrollIntoView` API and options of this method are\r\n * passed to it. For instance, you can scroll smoothly by using\r\n * `{ behavior: 'smooth' }`.\r\n * @param {HTMLElement|Component} el\r\n * @param {Object} [opts={}] Options, same as options for `scrollIntoView`\r\n * @param {Boolean} [opts.force=false] Force the scroll, even if the element is already visible\r\n * @example\r\n * const selected = editor.getSelected();\r\n * // Scroll smoothly (this behavior can be polyfilled)\r\n * canvas.scrollTo(selected, { behavior: 'smooth' });\r\n * // Force the scroll, even if the element is alredy visible\r\n * canvas.scrollTo(selected, { force: true });\r\n */\r\n scrollTo(el, opts = {}) {\r\n const elem = getElement(el);\r\n const cv = this.getCanvasView();\r\n if (!elem) return;\r\n\r\n if (!cv.isElInViewport(elem) || opts.force) {\r\n const opt =\r\n typeof opts === 'object'\r\n ? opts\r\n : { behavior: 'smooth', block: 'nearest' };\r\n elem.scrollIntoView(opt);\r\n }\r\n },\r\n\r\n /**\r\n * Start autoscroll\r\n * @private\r\n */\r\n startAutoscroll() {\r\n this.dragging = 1;\r\n let toListen = this.getScrollListeners();\r\n frameRect = CanvasView.getFrameOffset(1);\r\n\r\n // By detaching those from the stack avoid browsers lags\r\n // Noticeable with \"fast\" drag of blocks\r\n setTimeout(() => {\r\n on(toListen, 'mousemove dragover', this.updateClientY);\r\n on(toListen, 'mouseup', this.stopAutoscroll);\r\n requestAnimationFrame(this.autoscroll);\r\n }, 0);\r\n },\r\n\r\n updateClientY(ev) {\r\n ev.preventDefault();\r\n this.lastClientY = getPointerEvent(ev).clientY * this.getZoomDecimal();\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n autoscroll() {\r\n if (this.dragging) {\r\n let frameWindow = this.getFrameEl().contentWindow;\r\n let actualTop = frameWindow.document.body.scrollTop;\r\n let nextTop = actualTop;\r\n let clientY = this.lastClientY;\r\n let limitTop = this.getConfig().autoscrollLimit;\r\n let limitBottom = frameRect.height - limitTop;\r\n\r\n if (clientY < limitTop) {\r\n nextTop -= limitTop - clientY;\r\n }\r\n\r\n if (clientY > limitBottom) {\r\n nextTop += clientY - limitBottom;\r\n }\r\n\r\n frameWindow.scrollTo(0, nextTop);\r\n requestAnimationFrame(this.autoscroll);\r\n }\r\n },\r\n\r\n /**\r\n * Stop autoscroll\r\n * @private\r\n */\r\n stopAutoscroll() {\r\n this.dragging = 0;\r\n let toListen = this.getScrollListeners();\r\n off(toListen, 'mousemove dragover', this.updateClientY);\r\n off(toListen, 'mouseup', this.stopAutoscroll);\r\n },\r\n\r\n getScrollListeners() {\r\n return [this.getFrameEl().contentWindow];\r\n },\r\n\r\n postRender() {\r\n if (hasDnd(c.em)) this.droppable = new Droppable(c.em);\r\n },\r\n\r\n /**\r\n * Set zoom value\r\n * @param {Number} value The zoom value, from 0 to 100\r\n * @returns {this}\r\n */\r\n setZoom(value) {\r\n canvas.set('zoom', parseFloat(value));\r\n return this;\r\n },\r\n\r\n /**\r\n * Get zoom value\r\n * @returns {Number}\r\n */\r\n getZoom() {\r\n return parseFloat(canvas.get('zoom'));\r\n },\r\n\r\n getZoomDecimal() {\r\n return this.getZoom() / 100;\r\n },\r\n\r\n getZoomMultiplier() {\r\n const zoom = this.getZoomDecimal();\r\n return zoom ? 1 / zoom : 1;\r\n },\r\n\r\n /**\r\n * Returns wrapper element\r\n * @return {HTMLElement}\r\n * ????\r\n * @private\r\n */\r\n getFrameWrapperEl() {\r\n return CanvasView.frame.getWrapper();\r\n }\r\n };\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n default: {\r\n control_name: '',\r\n display_name: '',\r\n control_id: null,\r\n icon_url: '',\r\n group: null,\r\n status: 0,\r\n isDeprecated: 0,\r\n isFromDesigner: 1,\r\n isOnMarketplace: 0\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Control from './Control';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Control,\r\n modelId: function(attrs) {\r\n return attrs.control_id;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport CommonFunction from '../../common/common';\r\nimport StateManager from '../../state_manager';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n this.model = o.model;\r\n this.em = o.config.em;\r\n this.parent = o.parent;\r\n this.url = o.gconfig.url;\r\n this.model.view = this;\r\n },\r\n\r\n events: {\r\n 'click .ctrl_item': 'opencontrol'\r\n },\r\n\r\n template() {\r\n let url, status, name;\r\n url = this.model.get('icon_url') || '';\r\n url =\r\n url.indexOf('app/src/images/controls') > -1 ? this.url + '' + url : url;\r\n status = this.getControlStatus();\r\n name = this.model.get('display_name');\r\n return `\r\n
    \r\n
    \r\n
    ${status.value}
    \r\n
    \r\n
    \r\n
    ${name}
    \r\n \r\n
    `;\r\n },\r\n\r\n opencontrol() {\r\n console.log('control to open');\r\n CommonFunction.showLoader();\r\n this.em.get('ControlManager').closeControlList();\r\n this.getComponent(this.model.get('control_id'));\r\n },\r\n\r\n getComponent(id) {\r\n var reqObj = {\r\n operation: 'getStudioControlByID',\r\n control_id: id\r\n };\r\n\r\n var onSuccess = function(resp) {\r\n resp = JSON.parse(resp);\r\n\r\n var data = JSON.parse(resp.mongoData);\r\n\r\n var dev_document = data.filter(function(element) {\r\n return element['doc_type'] == 'dev';\r\n })[0];\r\n\r\n var code = '';\r\n var html = dev_document.designer_html || '';\r\n var css = ``;\r\n code = html + css;\r\n\r\n this.em.get('CssComposer').clear();\r\n this.em\r\n .get('DomComponents')\r\n .getWrapper()\r\n .set('content', '');\r\n this.em.setComponents(code.trim());\r\n StateManager.init(editor, dev_document.states_data);\r\n\r\n dev_document['group'] = this.model.get('group');\r\n dev_document['status'] = this.model.get('status');\r\n dev_document['isDeprecated'] = this.model.get('isDeprecated');\r\n dev_document['isOnMarketplace'] = this.model.get('isOnMarketplace');\r\n this.em.config['current_control'] = JSON.stringify(dev_document);\r\n this.em\r\n .get('Panels')\r\n .getPanel('controlName')\r\n .set(\r\n 'prependContent',\r\n `
    ${this.model.get('display_name')}
    `\r\n );\r\n CommonFunction.hideLoader();\r\n };\r\n var onAjaxError = function(data) {\r\n CommonFunction.hideLoader();\r\n if (data.status == 401) {\r\n CommonFunction.ShowVSAlert(\r\n 'error',\r\n \"It seems like you've been logged out.\"\r\n );\r\n }\r\n };\r\n\r\n CommonFunction.fnAjaxRequest(\r\n this.url + 'Handler/ControlEditorHandler.ashx',\r\n 'POST',\r\n reqObj,\r\n onSuccess.bind(this),\r\n onAjaxError.bind(this)\r\n );\r\n },\r\n\r\n getControlStatus() {\r\n var status = { value: '', color: '' };\r\n if (this.model.get('isOnMarketplace')) {\r\n status.value = 'Marketplace';\r\n status.color = 'blue';\r\n } else if (this.model.get('isDeprecated')) {\r\n status.value = 'Deprecated';\r\n status.color = 'red';\r\n } else {\r\n status.value = this.model.get('status') ? 'Active' : 'Draft';\r\n status.color = this.model.get('status') ? 'green' : 'yellow';\r\n }\r\n return status;\r\n },\r\n\r\n hide() {\r\n this.$el.addClass('hide');\r\n },\r\n\r\n show() {\r\n this.$el.removeClass('hide');\r\n },\r\n\r\n render() {\r\n this.$el.append(this.template());\r\n this.$el.addClass('ctrl_item');\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport ControlView from './ControlView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n let config = o.config;\r\n this.gconfig = o.gconfig;\r\n this.config = config;\r\n this.em = config.em;\r\n this.render();\r\n },\r\n\r\n events: {\r\n 'click .add-new-control': 'addNewControl'\r\n },\r\n\r\n template() {\r\n return `
    +
    `;\r\n },\r\n\r\n addNewControl() {\r\n editor.studioPlugin.addControl();\r\n },\r\n\r\n addToCollection(model, fragmentEl) {\r\n var fragment = fragmentEl || null;\r\n var viewObject = ControlView;\r\n\r\n var view = new viewObject({\r\n model,\r\n parent: this,\r\n config: this.config,\r\n gconfig: this.gconfig\r\n });\r\n var rendered = view.render().el;\r\n\r\n if (fragment) {\r\n fragment.appendChild(rendered);\r\n } else {\r\n this.$el.append(rendered);\r\n }\r\n return rendered;\r\n },\r\n\r\n render() {\r\n this.is_rendering = true;\r\n var fragment = document.createDocumentFragment();\r\n this.$el.empty();\r\n this.collection.each(function(model) {\r\n this.addToCollection(model, fragment);\r\n }, this);\r\n this.$el.append(this.template());\r\n this.$el.append(fragment);\r\n this.$el.addClass('ctrl_item_wrapper');\r\n this.is_rendering = false;\r\n return this;\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport ControlsView from './ControlsView';\r\n\r\nexport default Backbone.View.extend({\r\n initialize(o) {\r\n let config = o.config;\r\n this.ControlsView = new ControlsView({\r\n collection: o.collection,\r\n config: config,\r\n gconfig: o.gconfig\r\n });\r\n this.url = o.gconfig.url;\r\n this.rootdir = o.gconfig.rootDir;\r\n this.em = config.em;\r\n },\r\n\r\n events: {\r\n 'click .header .close_icon img': 'close',\r\n 'input .control-search input': 'search'\r\n },\r\n\r\n template() {\r\n return `
    \r\n
    Designer
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n `;\r\n },\r\n\r\n search(e) {\r\n let value = e.target.value.toLowerCase();\r\n this.collection.forEach(function(model) {\r\n let dis_name = model.get('display_name').toLowerCase();\r\n if (dis_name.indexOf(value) > -1) {\r\n model.view.show();\r\n } else {\r\n model.view.hide();\r\n }\r\n });\r\n },\r\n\r\n close() {\r\n this.remove();\r\n },\r\n\r\n render() {\r\n this.$el.empty();\r\n this.$el.append(this.template());\r\n this.$el.append(this.ControlsView.render().$el);\r\n this.$el.addClass('control_list_wrapper');\r\n if (!this.em.config.current_control) {\r\n this.$el.find('.header .close_icon img').hide();\r\n }\r\n return this;\r\n }\r\n});\r\n","export default {};\r\n","import ControlsColl from './model/Controls';\r\nimport ControlListView from './view/ControlListView';\r\nimport GConfig from '../../config/config';\r\nimport defaults from './config/config';\r\nimport CommonFunction from '../common/common';\r\nimport { cmpPos } from 'codemirror';\r\n\r\nconst url = GConfig.url;\r\n\r\nexport default () => {\r\n let em;\r\n var c = {};\r\n var Controls, view;\r\n var success = function(data) {\r\n if (typeof data == 'string') {\r\n var index = data.indexOf(\r\n 'Object reference not set to an instance of an object'\r\n );\r\n if (index > -1) {\r\n $('.error-loading').removeClass('hide');\r\n return false;\r\n }\r\n }\r\n var controlsMeta = JSON.parse(JSON.parse(data)['controls']);\r\n var status = JSON.parse(JSON.parse(data)['status']);\r\n controlsMeta = CommonFunction.merge_object_arrays(\r\n controlsMeta,\r\n status,\r\n 'control_id'\r\n );\r\n controlsMeta = controlsMeta.sort(function(a, b) {\r\n return a['control_id'] - b['control_id'];\r\n });\r\n controlsMeta = controlsMeta.filter(control => control['isFromDesigner']);\r\n Controls = new ControlsColl(controlsMeta);\r\n view = new ControlListView({\r\n collection: Controls,\r\n config: c,\r\n gconfig: GConfig\r\n });\r\n return true;\r\n };\r\n\r\n var error = function(error) {\r\n if (data.status == 401) {\r\n $('.studio-loader')\r\n .find('.error-loading')\r\n .removeClass('hide');\r\n }\r\n };\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'ControlManager',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @return {this}\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n em = c.em;\r\n var ajaxUrl = url + 'Handler/ControlEditorHandler.ashx';\r\n var data = {\r\n operation: 'GetStudioControlsListForEditor'\r\n };\r\n var controlListSucces = function(data) {\r\n if (success(data)) {\r\n CommonFunction.hideLoader();\r\n var parameter = new URLSearchParams(window.location.search);\r\n if (parameter.get('id')) {\r\n this.openControl(parameter.get('id'));\r\n } else {\r\n this.openConrolList();\r\n }\r\n }\r\n };\r\n CommonFunction.fnAjaxRequest(\r\n ajaxUrl,\r\n 'POST',\r\n data,\r\n controlListSucces.bind(this),\r\n error\r\n );\r\n return this;\r\n },\r\n\r\n /**\r\n *opens control.\r\n * @param {int} id\r\n */\r\n openControl(id) {\r\n let ctrlmdl = this.get(id);\r\n if (ctrlmdl) {\r\n ctrlmdl.view.opencontrol();\r\n } else {\r\n this.openConrolList();\r\n CommonFunction.ShowVSAlert('error', 'Control not found!');\r\n }\r\n },\r\n /**\r\n * Return device by name\r\n */\r\n get(id) {\r\n return Controls.get(id.toString());\r\n },\r\n\r\n /**\r\n * return all controls collection;\r\n */\r\n getAll() {\r\n return Controls;\r\n },\r\n\r\n /**\r\n * refreshes the contorl lisnting form database\r\n */\r\n refreshList(id = null) {\r\n this.closeControlList();\r\n Controls = null;\r\n view = null;\r\n var ajaxUrl = url + 'Handler/ControlEditorHandler.ashx';\r\n var data = {\r\n operation: 'GetStudioControlsListForEditor'\r\n };\r\n var controlListSucces = function(data) {\r\n if (success(data)) {\r\n CommonFunction.hideLoader();\r\n this.openControl(id);\r\n }\r\n };\r\n if (id) {\r\n CommonFunction.showLoader();\r\n CommonFunction.fnAjaxRequest(\r\n ajaxUrl,\r\n 'POST',\r\n data,\r\n controlListSucces.bind(this),\r\n error\r\n );\r\n } else {\r\n CommonFunction.fnAjaxRequest(ajaxUrl, 'POST', data, success, error);\r\n }\r\n },\r\n\r\n /**\r\n * opens control listing\r\n * @return {string} HTML string\r\n * @private\r\n */\r\n openConrolList() {\r\n this.closeControlList();\r\n $('body').append(view.render().$el);\r\n },\r\n\r\n /**\r\n * closes the control listing\r\n */\r\n closeControlList() {\r\n view.remove();\r\n }\r\n };\r\n};\r\n","export default {\r\n devices: [],\r\n\r\n deviceLabel: 'Device'\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n idAttribute: 'name',\r\n\r\n defaults: {\r\n name: '',\r\n\r\n // Width to set for the editor iframe\r\n width: null,\r\n\r\n // Height to set for the editor iframe\r\n height: '',\r\n\r\n // The width which will be used in media queries,\r\n // If empty the width will be used\r\n widthMedia: null,\r\n\r\n // Setup the order of media queries\r\n priority: null\r\n },\r\n\r\n initialize() {\r\n this.get('widthMedia') === null &&\r\n this.set('widthMedia', this.get('width'));\r\n this.get('width') === null && this.set('width', this.get('widthMedia'));\r\n !this.get('priority') &&\r\n this.set('priority', parseFloat(this.get('widthMedia')) || 0);\r\n const toCheck = ['width', 'height', 'widthMedia'];\r\n toCheck.forEach(prop => this.checkUnit(prop));\r\n },\r\n\r\n checkUnit(prop) {\r\n const pr = this.get(prop) || '';\r\n const noUnit = (parseFloat(pr) || 0).toString() === pr.toString();\r\n noUnit && this.set(prop, `${pr}px`);\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport Device from './Device';\r\n\r\nexport default Backbone.Collection.extend({\r\n model: Device,\r\n\r\n comparator: (left, right) => {\r\n const max = Number.MAX_VALUE;\r\n return (right.get('priority') || max) - (left.get('priority') || max);\r\n },\r\n\r\n getSorted() {\r\n return this.sort();\r\n }\r\n});\r\n","import { template } from 'underscore';\r\nimport Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n template: template(`\r\n
    device-label\"><%= deviceLabel %>
    \r\n
    field <%= ppfx %>select\">\r\n input-holder\">\r\n \r\n \r\n
    sel-arrow\">\r\n
    d-s-arrow\">
    \r\n
    \r\n
    \r\n `),\r\n\r\n events: {\r\n change: 'updateDevice'\r\n },\r\n\r\n initialize(o) {\r\n this.config = o.config || {};\r\n this.em = this.config.em;\r\n this.ppfx = this.config.pStylePrefix || '';\r\n this.events['click .' + this.ppfx + 'add-trasp'] = this.startAdd;\r\n this.listenTo(this.em, 'change:device', this.updateSelect);\r\n this.delegateEvents();\r\n },\r\n\r\n /**\r\n * Start adding new device\r\n * @return {[type]} [description]\r\n * @private\r\n */\r\n startAdd() {\r\n // alert('asd');\r\n },\r\n\r\n /**\r\n * Update device of the editor\r\n * @private\r\n */\r\n updateDevice() {\r\n var em = this.em;\r\n if (em) {\r\n var devEl = this.devicesEl;\r\n var val = devEl ? devEl.val() : '';\r\n em.set('device', val);\r\n }\r\n },\r\n\r\n /**\r\n * Update select value on device update\r\n * @private\r\n */\r\n updateSelect() {\r\n var em = this.em;\r\n var devEl = this.devicesEl;\r\n if (em && em.getDeviceModel && devEl) {\r\n var device = em.getDeviceModel();\r\n var name = device ? device.get('name') : '';\r\n devEl.val(name);\r\n }\r\n },\r\n\r\n /**\r\n * Return devices options\r\n * @return {string} String of options\r\n * @private\r\n */\r\n getOptions() {\r\n var result = '';\r\n this.collection.each(device => {\r\n var name = device.get('name');\r\n result += '';\r\n });\r\n return result;\r\n },\r\n\r\n render() {\r\n // console.log('asd');\r\n var pfx = this.ppfx;\r\n this.$el.html(\r\n this.template({\r\n ppfx: pfx,\r\n deviceLabel: this.config.deviceLabel\r\n })\r\n );\r\n this.devicesEl = this.$el.find('.' + pfx + 'devices');\r\n this.devicesEl.append(this.getOptions());\r\n this.el.className = pfx + 'devices-c';\r\n return this;\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/device_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * deviceManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const deviceManager = editor.DeviceManager;\r\n * ```\r\n *\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getAll)\r\n *\r\n * @module DeviceManager\r\n */\r\nimport defaults from './config/config';\r\nimport Devices from './model/Devices';\r\nimport DevicesView from './view/DevicesView';\r\n\r\nexport default () => {\r\n var c = {};\r\n var devices, view;\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'DeviceManager',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @param {Array} [config.devices=[]] Default devices\r\n * @example\r\n * ...\r\n * {\r\n * devices: [\r\n * {name: 'Desktop', width: ''}\r\n * {name: 'Tablet', width: '991px'}\r\n * ],\r\n * }\r\n * ...\r\n * @return {this}\r\n * @private\r\n */\r\n init(config) {\r\n c = config || {};\r\n for (var name in defaults) {\r\n if (!(name in c)) c[name] = defaults[name];\r\n }\r\n\r\n devices = new Devices(c.devices);\r\n view = new DevicesView({\r\n collection: devices,\r\n config: c\r\n });\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new device to the collection. URLs are supposed to be unique\r\n * @param {string} name Device name\r\n * @param {string} width Width of the device\r\n * @param {Object} opts Custom options\r\n * @return {Device} Added device\r\n * @example\r\n * deviceManager.add('Tablet', '900px');\r\n * deviceManager.add('Tablet2', '900px', {\r\n * height: '300px',\r\n * widthMedia: '810px', // the width that will be used for the CSS media\r\n * });\r\n */\r\n add(name, width, opts) {\r\n var obj = opts || {};\r\n obj.name = name;\r\n obj.width = width;\r\n return devices.add(obj);\r\n },\r\n\r\n /**\r\n * Return device by name\r\n * @param {string} name Name of the device\r\n * @example\r\n * var device = deviceManager.get('Tablet');\r\n * console.log(JSON.stringify(device));\r\n * // {name: 'Tablet', width: '900px'}\r\n */\r\n get(name) {\r\n return devices.get(name);\r\n },\r\n\r\n /**\r\n * Return all devices\r\n * @return {Collection}\r\n * @example\r\n * var devices = deviceManager.getAll();\r\n * console.log(JSON.stringify(devices));\r\n * // [{name: 'Desktop', width: ''}, ...]\r\n */\r\n getAll() {\r\n return devices;\r\n },\r\n\r\n /**\r\n * Render devices\r\n * @return {string} HTML string\r\n * @private\r\n */\r\n render() {\r\n return view.render().el;\r\n }\r\n };\r\n};\r\n","import postcss from 'postcss';\r\n\r\n/**\r\n * Log stuff\r\n * @param {Editor} editor\r\n * @param {*} msg\r\n */\r\nexport const log = (editor, msg) =>\r\n editor && editor.log(msg, { ns: 'parser-poscss' });\r\n\r\n/**\r\n * Create rule from node\r\n * @param {Object} node\r\n * @return {Object}\r\n */\r\nexport const createRule = node => {\r\n const declarations = node.nodes || [];\r\n const style = {};\r\n\r\n declarations.forEach(({ prop, value, important }) => {\r\n style[prop] = value + (important ? ' !important' : '');\r\n });\r\n\r\n return {\r\n selectors: node.selector || '',\r\n style\r\n };\r\n};\r\n\r\n/**\r\n * Create at rule from node\r\n * @param {Object} node\r\n * @param {Array} result\r\n * @return {Object}\r\n */\r\nexport const createAtRule = (node, result) => {\r\n const { name, params } = node;\r\n const isNested = ['media', 'keyframes'].indexOf(name) >= 0;\r\n\r\n if (isNested) {\r\n node.nodes.forEach(node => {\r\n result.push({\r\n ...createRule(node),\r\n atRule: name,\r\n params\r\n });\r\n });\r\n } else {\r\n result.push({\r\n ...createRule(node),\r\n atRule: name\r\n });\r\n }\r\n};\r\n\r\nexport default (css, editor) => {\r\n const result = [];\r\n log(editor, ['Input CSS', css]);\r\n\r\n const ast = postcss.parse(css);\r\n log(editor, ['PostCSS AST', ast]);\r\n\r\n ast.nodes.forEach(node => {\r\n const { type } = node;\r\n\r\n switch (type) {\r\n case 'rule':\r\n result.push(createRule(node));\r\n break;\r\n case 'atrule':\r\n createAtRule(node, result);\r\n break;\r\n }\r\n });\r\n\r\n log(editor, ['Output', result]);\r\n\r\n return result;\r\n};\r\n","import CustomCssParser from '../model/CustomCssParser';\r\n\r\nexport default {\r\n textTags: ['br', 'b', 'i', 'u', 'a', 'ul', 'ol'],\r\n\r\n // Custom CSS parser\r\n parserCss: CustomCssParser,\r\n\r\n // Custom HTML parser\r\n parserHtml: null\r\n};\r\n","import { keys } from 'underscore';\r\n\r\n// At-rules\r\n// https://developer.mozilla.org/it/docs/Web/API/CSSRule#Type_constants\r\nconst atRules = {\r\n 4: 'media',\r\n 5: 'font-face',\r\n 6: 'page',\r\n 7: 'keyframes',\r\n 11: 'counter-style',\r\n 12: 'supports',\r\n 13: 'document',\r\n 14: 'font-feature-values',\r\n 15: 'viewport'\r\n};\r\nconst atRuleKeys = keys(atRules);\r\nconst singleAtRules = ['5', '6', '11', '15'];\r\nconst singleAtRulesNames = ['font-face', 'page', 'counter-style', 'viewport'];\r\n\r\n/**\r\n * Parse selector string to array.\r\n * Only classe based are valid as CSS rules inside editor, not valid\r\n * selectors will be dropped as additional\r\n * It's ok with the last part of the string as state (:hover, :active)\r\n * @param {string} str Selectors string\r\n * @return {Object}\r\n * @example\r\n * var res = parseSelector('.test1, .test1.test2, .test2 .test3');\r\n * console.log(res);\r\n * // {\r\n * //result: [['test1'], ['test1', 'test2']],\r\n * //add: ['.test2 .test3']\r\n * //}\r\n */\r\nexport const parseSelector = (str = '') => {\r\n const add = [];\r\n const result = [];\r\n const sels = str.split(',');\r\n\r\n for (var i = 0, len = sels.length; i < len; i++) {\r\n var sel = sels[i].trim();\r\n\r\n // Will accept only concatenated classes and last\r\n // class might be with state (eg. :hover), nothing else.\r\n // Can also accept SINGLE ID selectors, eg. `#myid`, `#myid:hover`\r\n // Composed are not valid: `#myid.some-class`, `#myid.some-class:hover`\r\n if (\r\n /^(\\.{1}[\\w\\-]+)+(:{1,2}[\\w\\-()]+)?$/gi.test(sel) ||\r\n /^(#{1}[\\w\\-]+){1}(:{1,2}[\\w\\-()]+)?$/gi.test(sel)\r\n ) {\r\n var cls = sel.split('.').filter(Boolean);\r\n result.push(cls);\r\n } else {\r\n add.push(sel);\r\n }\r\n }\r\n\r\n return {\r\n result,\r\n add\r\n };\r\n};\r\n\r\n/**\r\n * Parse style declarations of the node\r\n * @param {CSSRule} node\r\n * @return {Object}\r\n */\r\nexport const parseStyle = node => {\r\n const stl = node.style;\r\n const style = {};\r\n\r\n for (var i = 0, len = stl.length; i < len; i++) {\r\n const propName = stl[i];\r\n const propValue = stl.getPropertyValue(propName);\r\n const important = stl.getPropertyPriority(propName);\r\n style[propName] = `${propValue}${important ? ` !${important}` : ''}`;\r\n }\r\n\r\n return style;\r\n};\r\n\r\n/**\r\n * Get the condition when possible\r\n * @param {CSSRule} node\r\n * @return {string}\r\n */\r\nexport const parseCondition = node => {\r\n const condition =\r\n node.conditionText ||\r\n (node.media && node.media.mediaText) ||\r\n node.name ||\r\n node.selectorText ||\r\n '';\r\n return condition.trim();\r\n};\r\n\r\n/**\r\n * Create node for the editor\r\n * @param {Array} selectors Array containing strings of classes\r\n * @param {Object} style Key-value object of style declarations\r\n * @return {Object}\r\n */\r\nexport const createNode = (selectors, style = {}, opts = {}) => {\r\n const node = {};\r\n const selLen = selectors.length;\r\n const lastClass = selectors[selLen - 1];\r\n const stateArr = lastClass ? lastClass.split(/:(.+)/) : [];\r\n const state = stateArr[1];\r\n const { atRule, selectorsAdd, mediaText } = opts;\r\n const singleAtRule = singleAtRulesNames.indexOf(atRule) >= 0;\r\n singleAtRule && (node.singleAtRule = 1);\r\n atRule && (node.atRuleType = atRule);\r\n selectorsAdd && (node.selectorsAdd = selectorsAdd);\r\n mediaText && (node.mediaText = mediaText);\r\n\r\n // Isolate the state from selectors\r\n if (state) {\r\n selectors[selLen - 1] = stateArr[0];\r\n node.state = state;\r\n stateArr.splice(stateArr.length - 1, 1);\r\n }\r\n\r\n node.selectors = selectors;\r\n node.style = style;\r\n\r\n return node;\r\n};\r\n\r\n/**\r\n * Fetch data from node\r\n * @param {StyleSheet|CSSRule} el\r\n * @return {Array}\r\n */\r\nexport const parseNode = el => {\r\n var result = [];\r\n var nodes = el.cssRules || [];\r\n\r\n for (var i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n const type = node.type.toString();\r\n let singleAtRule = 0;\r\n let atRuleType = '';\r\n let condition = '';\r\n // keyText is for CSSKeyframeRule\r\n let sels = node.selectorText || node.keyText;\r\n const isSingleAtRule = singleAtRules.indexOf(type) >= 0;\r\n\r\n // Check if the node is an at-rule\r\n if (isSingleAtRule) {\r\n singleAtRule = 1;\r\n atRuleType = atRules[type];\r\n condition = parseCondition(node);\r\n } else if (atRuleKeys.indexOf(type) >= 0) {\r\n var subRules = parseNode(node);\r\n condition = parseCondition(node);\r\n\r\n for (var s = 0, lens = subRules.length; s < lens; s++) {\r\n var subRule = subRules[s];\r\n condition && (subRule.mediaText = condition);\r\n subRule.atRuleType = atRules[type];\r\n }\r\n result = result.concat(subRules);\r\n }\r\n\r\n if (!sels && !isSingleAtRule) continue;\r\n const style = parseStyle(node);\r\n const selsParsed = parseSelector(sels);\r\n const selsAdd = selsParsed.add;\r\n sels = selsParsed.result;\r\n\r\n let lastRule;\r\n // For each group of selectors\r\n for (var k = 0, len3 = sels.length; k < len3; k++) {\r\n const model = createNode(sels[k], style, {\r\n atRule: atRules[type]\r\n });\r\n result.push(model);\r\n lastRule = model;\r\n }\r\n\r\n // Need to push somewhere not class-based selectors, if some rule was\r\n // created will push them there, otherwise will create a new rule\r\n if (selsAdd.length) {\r\n var selsAddStr = selsAdd.join(', ');\r\n if (lastRule) {\r\n lastRule.selectorsAdd = selsAddStr;\r\n } else {\r\n const model = {\r\n selectors: [],\r\n selectorsAdd: selsAddStr,\r\n style\r\n };\r\n singleAtRule && (model.singleAtRule = singleAtRule);\r\n atRuleType && (model.atRuleType = atRuleType);\r\n condition && (model.mediaText = condition);\r\n result.push(model);\r\n }\r\n }\r\n // console.log('LAST PUSH', result[result.length - 1]);\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Parse CSS string and return the array of objects\r\n * @param {String} str CSS string\r\n * @return {Array} Array of objects for the definition of CSSRules\r\n */\r\nexport default str => {\r\n const el = document.createElement('style');\r\n el.innerHTML = str;\r\n\r\n // There is no .sheet before adding it to the \r\n document.head.appendChild(el);\r\n const sheet = el.sheet;\r\n document.head.removeChild(el);\r\n\r\n return parseNode(sheet);\r\n};\r\n","import { isString } from 'underscore';\r\nimport BrowserCssParser, {\r\n parseSelector,\r\n createNode\r\n} from './BrowserParserCss';\r\n\r\nexport default (config = {}) => ({\r\n /**\r\n * Parse CSS string to a desired model object\r\n * @param {String} str CSS string\r\n * @return {Array}\r\n */\r\n parse(str) {\r\n let result = [];\r\n const { parserCss, em = {} } = config;\r\n const editor = em && em.get && em.get('Editor');\r\n const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str);\r\n nodes.forEach(node => (result = result.concat(this.checkNode(node))));\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Check the returned node from a custom parser and transforms it to\r\n * a valid object for the CSS composer\r\n * @return {[type]}\r\n */\r\n checkNode(node) {\r\n const { selectors, style } = node;\r\n\r\n if (isString(selectors)) {\r\n const nodes = [];\r\n const selsParsed = parseSelector(selectors);\r\n const classSets = selsParsed.result;\r\n const selectorsAdd = selsParsed.add.join(', ');\r\n const opts = {\r\n atRule: node.atRule,\r\n mediaText: node.params\r\n };\r\n\r\n if (classSets.length) {\r\n classSets.forEach(classSet => {\r\n nodes.push(createNode(classSet, style, opts));\r\n });\r\n } else {\r\n nodes.push(createNode([], style, opts));\r\n }\r\n\r\n if (selectorsAdd) {\r\n const lastNode = nodes[nodes.length - 1];\r\n lastNode.selectorsAdd = selectorsAdd;\r\n }\r\n\r\n node = nodes;\r\n }\r\n\r\n return node;\r\n }\r\n});\r\n","import defaults from './config/config';\r\nimport parserCss from './model/ParserCss';\r\nimport parserHtml from './model/ParserHtml';\r\n\r\nexport default () => {\r\n let conf = {};\r\n let pHtml, pCss;\r\n\r\n return {\r\n compTypes: '',\r\n\r\n parserCss: null,\r\n\r\n parserHtml: null,\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Parser',\r\n\r\n /**\r\n * Get config object\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return conf;\r\n },\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @param {Array} [config.blocks=[]] Default blocks\r\n * @return {this}\r\n * @example\r\n * ...\r\n * {\r\n * blocks: [\r\n * {id:'h1-block' label: 'Heading', content:'

    ...

    '},\r\n * ...\r\n * ],\r\n * }\r\n * ...\r\n */\r\n init(config = {}) {\r\n conf = { ...defaults, ...config };\r\n conf.Parser = this;\r\n pHtml = new parserHtml(conf);\r\n pCss = new parserCss(conf);\r\n this.em = conf.em;\r\n this.parserCss = pCss;\r\n this.parserHtml = pHtml;\r\n return this;\r\n },\r\n\r\n /**\r\n * Parse HTML string and return valid model\r\n * @param {string} str HTML string\r\n * @return {Object}\r\n */\r\n parseHtml(str) {\r\n const { em, compTypes } = this;\r\n pHtml.compTypes = em ? em.get('DomComponents').getTypes() : compTypes;\r\n return pHtml.parse(str, pCss);\r\n },\r\n\r\n /**\r\n * Parse CSS string and return valid model\r\n * @param {string} str CSS string\r\n * @return {Array}\r\n */\r\n parseCss(str) {\r\n return pCss.parse(str);\r\n }\r\n };\r\n};\r\n","export default {\r\n // Prefix identifier that will be used inside storing and loading\r\n id: 'gjs-',\r\n\r\n // Enable/Disable autosaving\r\n autosave: 1,\r\n\r\n // Indicates if load data inside editor after init\r\n autoload: 1,\r\n\r\n // Indicates which storage to use. Available: local | remote\r\n type: 'local',\r\n\r\n // If autosave enabled, indicates how many steps (general changes to structure)\r\n // need to be done before save. Useful with remoteStorage to reduce remote calls\r\n stepsBeforeSave: 1,\r\n\r\n //Enable/Disable components model (JSON format)\r\n storeComponents: 1,\r\n\r\n //Enable/Disable styles model (JSON format)\r\n storeStyles: 1,\r\n\r\n //Enable/Disable saving HTML template\r\n storeHtml: 1,\r\n\r\n //Enable/Disable saving CSS template\r\n storeCss: 1,\r\n\r\n // ONLY FOR LOCAL STORAGE\r\n // If enabled, checks if browser supports Local Storage\r\n checkLocal: 1,\r\n\r\n // ONLY FOR REMOTE STORAGE\r\n // Custom parameters to pass with the remote storage request, eg. csrf token\r\n params: {},\r\n\r\n // Custom headers for the remote storage request\r\n headers: {},\r\n\r\n // Endpoint where to save all stuff\r\n urlStore: '',\r\n\r\n // Endpoint where to fetch data\r\n urlLoad: '',\r\n\r\n //Callback before request\r\n beforeSend(jqXHR, settings) {},\r\n\r\n //Callback after request\r\n onComplete(jqXHR, status) {},\r\n\r\n // set contentType paramater of $.ajax\r\n // true: application/json; charset=utf-8'\r\n // false: 'x-www-form-urlencoded'\r\n contentTypeJson: true,\r\n\r\n credentials: 'include',\r\n\r\n // Pass custom options to fetch API (remote storage)\r\n // You can pass a simple object: { someOption: 'someValue' }\r\n // or a function wich returns and object to add:\r\n // currentOpts => {\r\n // return currentOpts.method === 'post' ? { method: 'patch' } : {};\r\n // }\r\n fetchOptions: ''\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n checkLocal: true\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n store(data, clb) {\r\n this.checkStorageEnvironment();\r\n\r\n for (var key in data) localStorage.setItem(key, data[key]);\r\n\r\n if (typeof clb == 'function') {\r\n clb();\r\n }\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n load(keys, clb) {\r\n this.checkStorageEnvironment();\r\n var result = {};\r\n\r\n for (var i = 0, len = keys.length; i < len; i++) {\r\n var value = localStorage.getItem(keys[i]);\r\n if (value) result[keys[i]] = value;\r\n }\r\n\r\n if (typeof clb == 'function') {\r\n clb(result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * @private\r\n */\r\n remove(keys) {\r\n this.checkStorageEnvironment();\r\n\r\n for (var i = 0, len = keys.length; i < len; i++)\r\n localStorage.removeItem(keys[i]);\r\n },\r\n\r\n /**\r\n * Check storage environment\r\n * @private\r\n * */\r\n checkStorageEnvironment() {\r\n if (this.get('checkLocal') && !localStorage)\r\n console.warn(\"Your browser doesn't support localStorage\");\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\nimport fetch from 'utils/fetch';\r\nimport { isUndefined, isFunction } from 'underscore';\r\n\r\nexport default Backbone.Model.extend({\r\n fetch,\r\n\r\n defaults: {\r\n urlStore: '',\r\n urlLoad: '',\r\n params: {},\r\n beforeSend() {},\r\n onComplete() {},\r\n contentTypeJson: false,\r\n credentials: 'include',\r\n fetchOptions: ''\r\n },\r\n\r\n /**\r\n * Triggered before the request is started\r\n * @private\r\n */\r\n onStart() {\r\n const em = this.get('em');\r\n const before = this.get('beforeSend');\r\n before && before();\r\n },\r\n\r\n /**\r\n * Triggered on request error\r\n * @param {Object} err Error\r\n * @param {Function} [clbErr] Error callback\r\n * @private\r\n */\r\n onError(err, clbErr) {\r\n if (clbErr) {\r\n clbErr(err);\r\n } else {\r\n const em = this.get('em');\r\n console.error(err);\r\n em && em.trigger('storage:error', err);\r\n }\r\n },\r\n\r\n /**\r\n * Triggered on request response\r\n * @param {string} text Response text\r\n * @private\r\n */\r\n onResponse(text, clb) {\r\n const em = this.get('em');\r\n const complete = this.get('onComplete');\r\n const typeJson = this.get('contentTypeJson');\r\n const parsable = text && typeof text === 'string';\r\n const res = typeJson && parsable ? JSON.parse(text) : text;\r\n complete && complete(res);\r\n clb && clb(res);\r\n em && em.trigger('storage:response', res);\r\n },\r\n\r\n store(data, clb, clbErr) {\r\n const body = {};\r\n\r\n for (let key in data) {\r\n body[key] = data[key];\r\n }\r\n\r\n this.request(this.get('urlStore'), { body }, clb, clbErr);\r\n },\r\n\r\n load(keys, clb, clbErr) {\r\n this.request(this.get('urlLoad'), { method: 'get' }, clb, clbErr);\r\n },\r\n\r\n /**\r\n * Execute remote request\r\n * @param {string} url Url\r\n * @param {Object} [opts={}] Options\r\n * @param {Function} [clb=null] Callback\r\n * @param {Function} [clbErr=null] Error callback\r\n * @private\r\n */\r\n request(url, opts = {}, clb = null, clbErr = null) {\r\n const typeJson = this.get('contentTypeJson');\r\n const headers = this.get('headers') || {};\r\n const params = this.get('params');\r\n const reqHead = 'X-Requested-With';\r\n const typeHead = 'Content-Type';\r\n const bodyObj = opts.body || {};\r\n let fetchOptions;\r\n let body;\r\n\r\n for (let param in params) {\r\n bodyObj[param] = params[param];\r\n }\r\n\r\n if (isUndefined(headers[reqHead])) {\r\n headers[reqHead] = 'XMLHttpRequest';\r\n }\r\n\r\n // With `fetch`, have to send FormData without any 'Content-Type'\r\n // https://stackoverflow.com/questions/39280438/fetch-missing-boundary-in-multipart-form-data-post\r\n\r\n if (isUndefined(headers[typeHead]) && typeJson) {\r\n headers[typeHead] = 'application/json; charset=utf-8';\r\n }\r\n\r\n if (typeJson) {\r\n body = JSON.stringify(bodyObj);\r\n } else {\r\n body = new FormData();\r\n\r\n for (let bodyKey in bodyObj) {\r\n body.append(bodyKey, bodyObj[bodyKey]);\r\n }\r\n }\r\n fetchOptions = {\r\n method: opts.method || 'post',\r\n credentials: this.get('credentials'),\r\n headers\r\n };\r\n\r\n // Body should only be included on POST method\r\n if (fetchOptions.method === 'post') {\r\n fetchOptions.body = body;\r\n }\r\n\r\n const fetchOpts = this.get('fetchOptions') || {};\r\n const addOpts = isFunction(fetchOpts)\r\n ? fetchOpts(fetchOptions)\r\n : fetchOptions;\r\n\r\n this.onStart();\r\n this.fetch(url, {\r\n ...fetchOptions,\r\n ...(addOpts || {})\r\n })\r\n .then(res =>\r\n ((res.status / 200) | 0) == 1\r\n ? res.text()\r\n : res.text().then(text => Promise.reject(text))\r\n )\r\n .then(text => this.onResponse(text, clb))\r\n .catch(err => this.onError(err, clbErr));\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/storage_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * storageManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const storageManager = editor.StorageManager;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [isAutosave](#isautosave)\r\n * * [setAutosave](#setautosave)\r\n * * [getStepsBeforeSave](#getstepsbeforesave)\r\n * * [setStepsBeforeSave](#setstepsbeforesave)\r\n * * [setStepsBeforeSave](#setstepsbeforesave)\r\n * * [getStorages](#getstorages)\r\n * * [getCurrent](#getcurrent)\r\n * * [getCurrentStorage](#getcurrentstorage)\r\n * * [setCurrent](#setcurrent)\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [store](#store)\r\n * * [load](#load)\r\n *\r\n * @module StorageManager\r\n */\r\n\r\nimport defaults from './config/config';\r\nimport LocalStorage from './model/LocalStorage';\r\nimport RemoteStorage from './model/RemoteStorage';\r\n\r\nexport default () => {\r\n var c = {};\r\n let em;\r\n var storages = {};\r\n var defaultStorages = {};\r\n const eventStart = 'storage:start';\r\n const eventEnd = 'storage:end';\r\n const eventError = 'storage:error';\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'StorageManager',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @param {string} [config.id='gjs-'] The prefix for the fields, useful to differentiate storing/loading\r\n * with multiple editors on the same page. For example, in local storage, the item of HTML will be saved like 'gjs-html'\r\n * @param {Boolean} [config.autosave=true] Indicates if autosave mode is enabled, works in conjunction with stepsBeforeSave\r\n * @param {number} [config.stepsBeforeSave=1] If autosave enabled, indicates how many steps/changes are necessary\r\n * before autosave is triggered\r\n * @param {string} [config.type='local'] Default storage type. Available: 'local' | 'remote' | ''(do not store)\r\n * @private\r\n * @example\r\n * ...\r\n * {\r\n * autosave: false,\r\n * type: 'remote',\r\n * }\r\n * ...\r\n */\r\n init(config = {}) {\r\n c = { ...defaults, ...config };\r\n em = c.em;\r\n if (c._disable) c.type = 0;\r\n defaultStorages.remote = new RemoteStorage(c);\r\n defaultStorages.local = new LocalStorage(c);\r\n c.currentStorage = c.type;\r\n this.loadDefaultProviders().setCurrent(c.type);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get configuration object\r\n * @return {Object}\r\n * */\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Checks if autosave is enabled\r\n * @return {Boolean}\r\n * */\r\n isAutosave() {\r\n return !!c.autosave;\r\n },\r\n\r\n /**\r\n * Set autosave value\r\n * @param {Boolean} v\r\n * @return {this}\r\n * */\r\n setAutosave(v) {\r\n c.autosave = !!v;\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns number of steps required before trigger autosave\r\n * @return {number}\r\n * */\r\n getStepsBeforeSave() {\r\n return c.stepsBeforeSave;\r\n },\r\n\r\n /**\r\n * Set steps required before trigger autosave\r\n * @param {number} v\r\n * @return {this}\r\n * */\r\n setStepsBeforeSave(v) {\r\n c.stepsBeforeSave = v;\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new storage\r\n * @param {string} id Storage ID\r\n * @param {Object} storage Storage wrapper\r\n * @param {Function} storage.load Load method\r\n * @param {Function} storage.store Store method\r\n * @return {this}\r\n * @example\r\n * storageManager.add('local2', {\r\n * load: function(keys, clb, clbErr) {\r\n * var res = {};\r\n * for (var i = 0, len = keys.length; i < len; i++){\r\n * var v = localStorage.getItem(keys[i]);\r\n * if(v) res[keys[i]] = v;\r\n * }\r\n * clb(res); // might be called inside some async method\r\n * // In case of errors...\r\n * // clbErr('Went something wrong');\r\n * },\r\n * store: function(data, clb, clbErr) {\r\n * for(var key in data)\r\n * localStorage.setItem(key, data[key]);\r\n * clb(); // might be called inside some async method\r\n * }\r\n * });\r\n * */\r\n add(id, storage) {\r\n storages[id] = storage;\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns storage by id\r\n * @param {string} id Storage ID\r\n * @return {Object|null}\r\n * */\r\n get(id) {\r\n return storages[id] || null;\r\n },\r\n\r\n /**\r\n * Returns all storages\r\n * @return {Array}\r\n * */\r\n getStorages() {\r\n return storages;\r\n },\r\n\r\n /**\r\n * Returns current storage type\r\n * @return {string}\r\n * */\r\n getCurrent() {\r\n return c.currentStorage;\r\n },\r\n\r\n /**\r\n * Set current storage type\r\n * @param {string} id Storage ID\r\n * @return {this}\r\n * */\r\n setCurrent(id) {\r\n c.currentStorage = id;\r\n return this;\r\n },\r\n\r\n /**\r\n * Store key-value resources in the current storage\r\n * @param {Object} data Data in key-value format, eg. {item1: value1, item2: value2}\r\n * @param {Function} clb Callback function\r\n * @return {Object|null}\r\n * @example\r\n * storageManager.store({item1: value1, item2: value2});\r\n * */\r\n store(data, clb) {\r\n const st = this.get(this.getCurrent());\r\n const toStore = {};\r\n this.onStart('store', data);\r\n\r\n for (let key in data) {\r\n toStore[c.id + key] = data[key];\r\n }\r\n\r\n return st\r\n ? st.store(\r\n toStore,\r\n res => {\r\n clb && clb(res);\r\n this.onEnd('store', res);\r\n },\r\n err => {\r\n this.onError('store', err);\r\n }\r\n )\r\n : null;\r\n },\r\n\r\n /**\r\n * Load resource from the current storage by keys\r\n * @param {string|Array} keys Keys to load\r\n * @param {Function} clb Callback function\r\n * @example\r\n * storageManager.load(['item1', 'item2'], res => {\r\n * // res -> {item1: value1, item2: value2}\r\n * });\r\n * storageManager.load('item1', res => {\r\n * // res -> {item1: value1}\r\n * });\r\n * */\r\n load(keys, clb) {\r\n var st = this.get(this.getCurrent());\r\n var keysF = [];\r\n var result = {};\r\n\r\n if (typeof keys === 'string') keys = [keys];\r\n this.onStart('load', keys);\r\n\r\n for (var i = 0, len = keys.length; i < len; i++) {\r\n keysF.push(c.id + keys[i]);\r\n }\r\n\r\n if (st) {\r\n st.load(\r\n keysF,\r\n res => {\r\n // Restore keys name\r\n var reg = new RegExp('^' + c.id + '');\r\n for (var itemKey in res) {\r\n var itemKeyR = itemKey.replace(reg, '');\r\n result[itemKeyR] = res[itemKey];\r\n }\r\n\r\n clb && clb(result);\r\n this.onEnd('load', result);\r\n },\r\n err => {\r\n clb && clb(result);\r\n this.onError('load', err);\r\n }\r\n );\r\n } else {\r\n clb && clb(result);\r\n }\r\n },\r\n\r\n /**\r\n * Load default storages\r\n * @return {this}\r\n * @private\r\n * */\r\n loadDefaultProviders() {\r\n for (var id in defaultStorages) this.add(id, defaultStorages[id]);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get current storage\r\n * @return {Storage}\r\n * */\r\n getCurrentStorage() {\r\n return this.get(this.getCurrent());\r\n },\r\n\r\n /**\r\n * On start callback\r\n * @private\r\n */\r\n onStart(ctx, data) {\r\n if (em) {\r\n em.trigger(eventStart);\r\n ctx && em.trigger(`${eventStart}:${ctx}`, data);\r\n }\r\n },\r\n\r\n /**\r\n * On end callback\r\n * @private\r\n */\r\n onEnd(ctx, data) {\r\n if (em) {\r\n em.trigger(eventEnd);\r\n ctx && em.trigger(`${eventEnd}:${ctx}`, data);\r\n }\r\n },\r\n\r\n /**\r\n * On error callback\r\n * @private\r\n */\r\n onError(ctx, data) {\r\n if (em) {\r\n em.trigger(eventError, data);\r\n ctx && em.trigger(`${eventError}:${ctx}`, data);\r\n this.onEnd(ctx, data);\r\n }\r\n },\r\n\r\n /**\r\n * Check if autoload is possible\r\n * @return {Boolean}\r\n * @private\r\n * */\r\n canAutoload() {\r\n const storage = this.getCurrentStorage();\r\n return storage && this.getConfig().autoload;\r\n }\r\n };\r\n};\r\n","export default {\r\n // Style prefix\r\n stylePrefix: 'clm-',\r\n\r\n // Specify the element to use as a container, string (query) or HTMLElement\r\n // With the empty value, nothing will be rendered\r\n appendTo: '',\r\n\r\n // Default selectors\r\n selectors: [],\r\n\r\n // Label for selectors\r\n label: 'Classes',\r\n\r\n // Label for states\r\n statesLabel: '- State -',\r\n\r\n selectedLabel: 'Selected',\r\n\r\n // States\r\n states: [\r\n { name: 'hover', label: 'Hover' },\r\n { name: 'active', label: 'Click' },\r\n { name: 'nth-of-type(2n)', label: 'Even/Odd' }\r\n ],\r\n\r\n // Custom selector name escaping strategy, eg.\r\n // name => name.replace(' ', '_')\r\n escapeName: 0\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nconst inputProp = 'contentEditable';\r\n\r\nexport default Backbone.View.extend({\r\n template() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const label = this.model.get('label') || '';\r\n return `\r\n \r\n ${label}\r\n \r\n ⨯\r\n \r\n `;\r\n },\r\n\r\n events: {\r\n 'click [data-tag-remove]': 'removeTag',\r\n 'click [data-tag-status]': 'changeStatus',\r\n 'dblclick [data-tag-name]': 'startEditTag',\r\n 'focusout [data-tag-name]': 'endEditTag'\r\n },\r\n\r\n initialize(o) {\r\n const config = o.config || {};\r\n this.config = config;\r\n this.coll = o.coll || null;\r\n this.pfx = config.stylePrefix || '';\r\n this.ppfx = config.pStylePrefix || '';\r\n this.em = config.em;\r\n this.listenTo(this.model, 'change:active', this.updateStatus);\r\n },\r\n\r\n /**\r\n * Returns the element which containes the anme of the tag\r\n * @return {HTMLElement}\r\n */\r\n getInputEl() {\r\n if (!this.inputEl) {\r\n this.inputEl = this.el.querySelector('[data-tag-name]');\r\n }\r\n\r\n return this.inputEl;\r\n },\r\n\r\n /**\r\n * Start editing tag\r\n * @private\r\n */\r\n startEditTag() {\r\n const { em } = this;\r\n const inputEl = this.getInputEl();\r\n inputEl[inputProp] = true;\r\n inputEl.focus();\r\n em && em.setEditing(1);\r\n },\r\n\r\n /**\r\n * End editing tag. If the class typed already exists the\r\n * old one will be restored otherwise will be changed\r\n * @private\r\n */\r\n endEditTag() {\r\n const model = this.model;\r\n const inputEl = this.getInputEl();\r\n const label = inputEl.textContent;\r\n const em = this.em;\r\n const sm = em && em.get('SelectorManager');\r\n inputEl[inputProp] = false;\r\n em && em.setEditing(0);\r\n\r\n if (sm) {\r\n const name = sm.escapeName(label);\r\n\r\n if (sm.get(name)) {\r\n inputEl.innerText = model.get('label');\r\n } else {\r\n model.set({ name, label });\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Update status of the tag\r\n * @private\r\n */\r\n changeStatus() {\r\n const { model } = this;\r\n model.set('active', !model.get('active'));\r\n },\r\n\r\n /**\r\n * Remove tag from the selected component\r\n * @param {Object} e\r\n * @private\r\n */\r\n removeTag() {\r\n const { em, model } = this;\r\n const sel = em && em.getSelected();\r\n if (!model.get('protected') && sel) sel.getSelectors().remove(model);\r\n },\r\n\r\n /**\r\n * Update status of the checkbox\r\n * @private\r\n */\r\n updateStatus() {\r\n const { model, $el } = this;\r\n const chkOn = 'fa-check-square-o';\r\n const chkOff = 'fa-square-o';\r\n const $chk = $el.find('[data-tag-status]');\r\n\r\n if (model.get('active')) {\r\n $chk.removeClass(chkOff).addClass(chkOn);\r\n $el.removeClass('opac50');\r\n } else {\r\n $chk.removeClass(chkOn).addClass(chkOff);\r\n $el.addClass('opac50');\r\n }\r\n },\r\n\r\n render() {\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n this.$el.html(this.template());\r\n this.$el.attr('class', `${pfx}tag ${ppfx}three-bg`);\r\n this.updateStatus();\r\n return this;\r\n }\r\n});\r\n","import { template, debounce } from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ClassTagView from './ClassTagView';\r\n\r\nexport default Backbone.View.extend({\r\n template: template(`\r\n
    up\">\r\n
    label\"><%= label %>
    \r\n
    status-c\">\r\n input-c\">\r\n
    field <%= ppfx %>select\">\r\n input-holder\">\r\n \r\n \r\n
    sel-arrow\">\r\n
    d-s-arrow\">
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    tags-field\" class=\"<%= ppfx %>field\">\r\n
    tags-c\">
    \r\n new\" />\r\n add-tag\" class=\"fa fa-plus\">\r\n
    \r\n
    sel-help\">\r\n
    label\"><%= selectedLabel %>
    \r\n
    sel\">
    \r\n
    \r\n
    `),\r\n\r\n events: {},\r\n\r\n initialize(o = {}) {\r\n this.config = o.config || {};\r\n this.pfx = this.config.stylePrefix || '';\r\n this.ppfx = this.config.pStylePrefix || '';\r\n this.className = this.pfx + 'tags';\r\n this.addBtnId = this.pfx + 'add-tag';\r\n this.newInputId = this.pfx + 'new';\r\n this.stateInputId = this.pfx + 'states';\r\n this.stateInputC = this.pfx + 'input-c';\r\n this.states = this.config.states || [];\r\n this.events['click #' + this.addBtnId] = 'startNewTag';\r\n this.events['blur #' + this.newInputId] = 'endNewTag';\r\n this.events['keyup #' + this.newInputId] = 'onInputKeyUp';\r\n this.events['change #' + this.stateInputId] = 'stateChanged';\r\n const { em } = this.config;\r\n const emitter = this.getStyleEmitter();\r\n this.target = this.config.em;\r\n this.em = em;\r\n\r\n this.listenTo(emitter, 'styleManager:update', this.componentChanged);\r\n this.listenTo(\r\n em,\r\n 'component:toggled component:update:classes',\r\n this.componentChanged\r\n );\r\n this.listenTo(em, 'component:update:classes', this.updateSelector);\r\n\r\n this.listenTo(this.collection, 'add', this.addNew);\r\n this.listenTo(this.collection, 'reset', this.renderClasses);\r\n this.listenTo(this.collection, 'remove', this.tagRemoved);\r\n\r\n this.delegateEvents();\r\n },\r\n\r\n getStyleEmitter() {\r\n const { em } = this;\r\n const sm = em && em.get('StyleManager');\r\n const emitter = sm && sm.getEmitter();\r\n return emitter || {};\r\n },\r\n\r\n /**\r\n * Triggered when a tag is removed from collection\r\n * @param {Object} model Removed model\r\n * @private\r\n */\r\n tagRemoved(model) {\r\n this.updateStateVis();\r\n },\r\n\r\n /**\r\n * Create select input with states\r\n * @return {string} String of options\r\n * @private\r\n */\r\n getStateOptions() {\r\n var strInput = '';\r\n for (var i = 0; i < this.states.length; i++) {\r\n strInput +=\r\n '';\r\n }\r\n return strInput;\r\n },\r\n\r\n /**\r\n * Add new model\r\n * @param {Object} model\r\n * @private\r\n */\r\n addNew(model) {\r\n this.addToClasses(model);\r\n },\r\n\r\n /**\r\n * Start tag creation\r\n * @param {Object} e\r\n * @private\r\n */\r\n startNewTag(e) {\r\n this.$addBtn.get(0).style.display = 'none';\r\n this.$input.show().focus();\r\n },\r\n\r\n /**\r\n * End tag creation\r\n * @param {Object} e\r\n * @private\r\n */\r\n endNewTag(e) {\r\n this.$addBtn.get(0).style.display = '';\r\n this.$input.hide().val('');\r\n },\r\n\r\n /**\r\n * Checks what to do on keyup event\r\n * @param {Object} e\r\n * @private\r\n */\r\n onInputKeyUp(e) {\r\n if (e.keyCode === 13 || e.data === 13) this.addNewTag(this.$input.val());\r\n else if (e.keyCode === 27) this.endNewTag();\r\n },\r\n\r\n /**\r\n * Triggered when component is changed\r\n * @param {Object} e\r\n * @private\r\n */\r\n componentChanged: debounce(function(target) {\r\n target = target || this.getTarget();\r\n this.compTarget = target;\r\n let validSelectors = [];\r\n\r\n if (target) {\r\n const state = target.get('state');\r\n state && this.getStates().val(state);\r\n const selectors = target.getSelectors();\r\n validSelectors = selectors.getValid();\r\n }\r\n\r\n this.collection.reset(validSelectors);\r\n this.updateStateVis(target);\r\n }),\r\n\r\n getTarget() {\r\n return this.target.getSelected();\r\n },\r\n\r\n /**\r\n * Update states visibility. Hides states in case there is no tags\r\n * inside collection\r\n * @private\r\n */\r\n updateStateVis(target) {\r\n const em = this.em;\r\n const avoidInline = em && em.getConfig('avoidInlineStyle');\r\n const display = this.collection.length || avoidInline ? 'block' : 'none';\r\n this.getStatesC().css('display', display);\r\n this.updateSelector(target);\r\n },\r\n\r\n /**\r\n * Update selector helper\r\n * @return {this}\r\n * @private\r\n */\r\n updateSelector(target) {\r\n const { pfx, collection, el } = this;\r\n const selected = target || this.getTarget();\r\n this.compTarget = selected;\r\n if (!selected || !selected.get) return;\r\n\r\n const state = selected.get('state');\r\n const coll = collection;\r\n let result = coll.getFullString(selected.getSelectors().getStyleable());\r\n result =\r\n result ||\r\n selected.get('selectorsAdd') ||\r\n (selected.getId ? `#${selected.getId()}` : '');\r\n result += state ? `:${state}` : '';\r\n const elSel = el.querySelector(`#${pfx}sel`);\r\n elSel && (elSel.innerHTML = result);\r\n },\r\n\r\n /**\r\n * Triggered when the select with states is changed\r\n * @param {Object} e\r\n * @private\r\n */\r\n stateChanged(e) {\r\n if (this.compTarget) {\r\n this.compTarget.set('state', this.$states.val());\r\n this.updateSelector();\r\n }\r\n },\r\n\r\n /**\r\n * Add new tag to collection, if possible, and to the component\r\n * @param {Object} e\r\n * @private\r\n */\r\n addNewTag(label) {\r\n const target = this.target;\r\n const component = this.compTarget;\r\n\r\n if (!label.trim()) {\r\n return;\r\n }\r\n\r\n if (target) {\r\n const sm = target.get('SelectorManager');\r\n const model = sm.add({ label });\r\n\r\n if (component) {\r\n const compCls = component.getSelectors();\r\n compCls.add(model);\r\n this.collection.add(model);\r\n this.updateStateVis();\r\n }\r\n }\r\n this.endNewTag();\r\n },\r\n\r\n /**\r\n * Add new object to collection\r\n * @param {Object} model Model\r\n * @param {Object} fragmentEl Fragment collection\r\n * @return {Object} Object created\r\n * @private\r\n * */\r\n addToClasses(model, fragmentEl = null) {\r\n const fragment = fragmentEl;\r\n const classes = this.getClasses();\r\n const rendered = new ClassTagView({\r\n model,\r\n config: this.config,\r\n coll: this.collection\r\n }).render().el;\r\n\r\n fragment ? fragment.appendChild(rendered) : classes.append(rendered);\r\n\r\n return rendered;\r\n },\r\n\r\n /**\r\n * Render the collection of classes\r\n * @private\r\n */\r\n renderClasses() {\r\n const frag = document.createDocumentFragment();\r\n const classes = this.getClasses();\r\n classes.empty();\r\n this.collection.each(model => this.addToClasses(model, frag));\r\n classes.append(frag);\r\n },\r\n\r\n /**\r\n * Return classes element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getClasses() {\r\n return this.$el.find(`#${this.pfx}tags-c`);\r\n },\r\n\r\n /**\r\n * Return states element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getStates() {\r\n if (!this.$states) this.$states = this.$el.find('#' + this.stateInputId);\r\n return this.$states;\r\n },\r\n\r\n /**\r\n * Return states container element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getStatesC() {\r\n if (!this.$statesC) this.$statesC = this.$el.find('#' + this.stateInputC);\r\n return this.$statesC;\r\n },\r\n\r\n render() {\r\n const ppfx = this.ppfx;\r\n const config = this.config;\r\n const $el = this.$el;\r\n $el.html(\r\n this.template({\r\n selectedLabel: config.selectedLabel,\r\n statesLabel: config.statesLabel,\r\n label: config.label,\r\n pfx: this.pfx,\r\n ppfx: this.ppfx\r\n })\r\n );\r\n this.$input = $el.find('input#' + this.newInputId);\r\n this.$addBtn = $el.find('#' + this.addBtnId);\r\n this.$classes = $el.find('#' + this.pfx + 'tags-c');\r\n this.$states = $el.find('#' + this.stateInputId);\r\n this.$statesC = $el.find('#' + this.stateInputC);\r\n this.$states.append(this.getStateOptions());\r\n this.renderClasses();\r\n $el.attr('class', `${this.className} ${ppfx}one-bg ${ppfx}two-color`);\r\n return this;\r\n }\r\n});\r\n","/**\r\n * Selectors in GrapesJS are used in CSS Composer inside Rules and in Components as classes. To illustrate this concept let's take\r\n * a look at this code:\r\n *\r\n * ```css\r\n * span > #send-btn.btn{\r\n * ...\r\n * }\r\n * ```\r\n * ```html\r\n * \r\n * \r\n * \r\n * ```\r\n *\r\n * In this scenario we get:\r\n * * span -> selector of type `tag`\r\n * * send-btn -> selector of type `id`\r\n * * btn -> selector of type `class`\r\n *\r\n * So, for example, being `btn` the same class entity it'll be easier to refactor and track things.\r\n *\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/selector_manager/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * selectorManager: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const selectorManager = editor.SelectorManager;\r\n * ```\r\n *\r\n * * [getConfig](#getconfig)\r\n * * [add](#add)\r\n * * [addClass](#addclass)\r\n * * [get](#get)\r\n * * [getAll](#getAll)\r\n *\r\n * @module SelectorManager\r\n */\r\n\r\nimport { isString, isElement, isObject, isArray } from 'underscore';\r\nimport defaults from './config/config';\r\nimport Selector from './model/Selector';\r\nimport Selectors from './model/Selectors';\r\nimport ClassTagsView from './view/ClassTagsView';\r\n\r\nconst isId = str => isString(str) && str[0] == '#';\r\nconst isClass = str => isString(str) && str[0] == '.';\r\n\r\nexport default config => {\r\n var c = config || {};\r\n var selectors, selectorTags;\r\n\r\n return {\r\n Selector,\r\n\r\n Selectors,\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'SelectorManager',\r\n\r\n /**\r\n * Get configuration object\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @return {this}\r\n * @private\r\n */\r\n init(conf = {}) {\r\n c = {\r\n ...defaults,\r\n ...conf\r\n };\r\n const em = c.em;\r\n const ppfx = c.pStylePrefix;\r\n\r\n if (ppfx) {\r\n c.stylePrefix = ppfx + c.stylePrefix;\r\n }\r\n\r\n selectorTags = new ClassTagsView({\r\n collection: new Selectors([], { em, config: c }),\r\n config: c\r\n });\r\n\r\n // Global selectors container\r\n selectors = new Selectors(c.selectors);\r\n selectors.on('add', model => em.trigger('selector:add', model));\r\n\r\n return this;\r\n },\r\n\r\n postRender() {\r\n const elTo = this.getConfig().appendTo;\r\n\r\n if (elTo) {\r\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\r\n el.appendChild(this.render([]));\r\n }\r\n },\r\n\r\n addSelector(name, opt = {}) {\r\n let opts = { ...opt };\r\n\r\n if (isObject(name)) {\r\n opts = name;\r\n } else {\r\n opts.name = name;\r\n }\r\n\r\n if (isId(opts.name)) {\r\n opts.name = opts.name.substr(1);\r\n opts.type = Selector.TYPE_ID;\r\n } else if (isClass(opts.name)) {\r\n opts.name = opts.name.substr(1);\r\n }\r\n\r\n if (opts.label && !opts.name) {\r\n opts.name = this.escapeName(opts.label);\r\n }\r\n\r\n const cname = opts.name;\r\n const selector = cname\r\n ? this.get(cname, opts.type)\r\n : selectors.where(opts)[0];\r\n\r\n if (!selector) {\r\n return selectors.add(opts, { config: c });\r\n }\r\n\r\n return selector;\r\n },\r\n\r\n getSelector(name, type = Selector.TYPE_CLASS) {\r\n if (isId(name)) {\r\n name = name.substr(1);\r\n type = Selector.TYPE_ID;\r\n } else if (isClass(name)) {\r\n name = name.substr(1);\r\n }\r\n\r\n return selectors.where({ name, type })[0];\r\n },\r\n\r\n /**\r\n * Add a new selector to collection if it's not already exists. Class type is a default one\r\n * @param {String|Array} name Selector/s name\r\n * @param {Object} opts Selector options\r\n * @param {String} [opts.label=''] Label for the selector, if it's not provided the label will be the same as the name\r\n * @param {String} [opts.type=1] Type of the selector. At the moment, only 'class' (1) is available\r\n * @return {Model|Array}\r\n * @example\r\n * const selector = selectorManager.add('selectorName');\r\n * // Same as\r\n * const selector = selectorManager.add('selectorName', {\r\n * type: 1,\r\n * label: 'selectorName'\r\n * });\r\n * // Multiple selectors\r\n * const selectors = selectorManager.add(['.class1', '.class2', '#id1']);\r\n * */\r\n add(name, opts = {}) {\r\n if (isArray(name)) {\r\n return name.map(item => this.addSelector(item, opts));\r\n } else {\r\n return this.addSelector(name, opts);\r\n }\r\n },\r\n\r\n /**\r\n * Add class selectors\r\n * @param {Array|string} classes Array or string of classes\r\n * @return {Array} Array of added selectors\r\n * @example\r\n * sm.addClass('class1');\r\n * sm.addClass('class1 class2');\r\n * sm.addClass(['class1', 'class2']);\r\n * // -> [SelectorObject, ...]\r\n */\r\n addClass(classes) {\r\n const added = [];\r\n\r\n if (isString(classes)) {\r\n classes = classes.trim().split(' ');\r\n }\r\n\r\n classes.forEach(name => added.push(this.addSelector(name)));\r\n return added;\r\n },\r\n\r\n /**\r\n * Get the selector by its name\r\n * @param {String|Array} name Selector name\r\n * @param {String} type Selector type\r\n * @return {Model|Array}\r\n * @example\r\n * const selector = selectorManager.get('selectorName');\r\n * // or get an array\r\n * const selectors = selectorManager.get(['class1', 'class2']);\r\n * */\r\n get(name, type) {\r\n if (isArray(name)) {\r\n const result = [];\r\n const selectors = name\r\n .map(item => this.getSelector(item))\r\n .filter(item => item);\r\n selectors.forEach(\r\n item => result.indexOf(item) < 0 && result.push(item)\r\n );\r\n return result;\r\n } else {\r\n return this.getSelector(name, type);\r\n }\r\n },\r\n\r\n /**\r\n * Get all selectors\r\n * @return {Collection}\r\n * */\r\n getAll() {\r\n return selectors;\r\n },\r\n\r\n /**\r\n * Return escaped selector name\r\n * @param {String} name Selector name to escape\r\n * @returns {String} Escaped name\r\n */\r\n escapeName(name) {\r\n const { escapeName } = c;\r\n return escapeName ? escapeName(name) : Selector.escapeName(name);\r\n },\r\n\r\n /**\r\n * Render class selectors. If an array of selectors is provided a new instance of the collection will be rendered\r\n * @param {Array} selectors\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n render(selectors) {\r\n if (selectors) {\r\n var view = new ClassTagsView({\r\n collection: new Selectors(selectors),\r\n config: c\r\n });\r\n return view.render().el;\r\n } else return selectorTags.render().el;\r\n }\r\n };\r\n};\r\n","export default {\r\n stylePrefix: 'mdl-',\r\n\r\n title: '',\r\n\r\n content: '',\r\n\r\n backdrop: true\r\n};\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.Model.extend({\r\n defaults: {\r\n title: '',\r\n content: '',\r\n open: false\r\n }\r\n});\r\n","import Backbone from 'backbone';\r\n\r\nexport default Backbone.View.extend({\r\n template({ pfx, ppfx, content, title }) {\r\n return `
    \r\n
    \r\n
    ${title}
    \r\n
    \r\n
    \r\n
    \r\n
    ${content}
    \r\n
    \r\n
    \r\n
    \r\n
    `;\r\n },\r\n\r\n events: {\r\n click: 'onClick',\r\n 'click [data-close-modal]': 'hide'\r\n },\r\n\r\n initialize(o) {\r\n const model = this.model;\r\n const config = o.config || {};\r\n const pfx = config.stylePrefix || '';\r\n this.config = config;\r\n this.pfx = pfx;\r\n this.ppfx = config.pStylePrefix || '';\r\n this.listenTo(model, 'change:open', this.updateOpen);\r\n this.listenTo(model, 'change:title', this.updateTitle);\r\n this.listenTo(model, 'change:content', this.updateContent);\r\n },\r\n\r\n onClick(e) {\r\n const bkd = this.config.backdrop;\r\n bkd && e.target === this.el && this.hide();\r\n },\r\n\r\n /**\r\n * Returns collector element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getCollector() {\r\n if (!this.$collector)\r\n this.$collector = this.$el.find('.' + this.pfx + 'collector');\r\n return this.$collector;\r\n },\r\n\r\n /**\r\n * Returns content element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getContent() {\r\n const pfx = this.pfx;\r\n\r\n if (!this.$content) {\r\n this.$content = this.$el.find(`.${pfx}content #${pfx}c`);\r\n }\r\n\r\n return this.$content;\r\n },\r\n\r\n /**\r\n * Returns title element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getTitle() {\r\n if (!this.$title) this.$title = this.$el.find('.' + this.pfx + 'title');\r\n return this.$title.get(0);\r\n },\r\n\r\n /**\r\n * Update content\r\n * @private\r\n * */\r\n updateContent() {\r\n var content = this.getContent();\r\n const children = content.children();\r\n const coll = this.getCollector();\r\n const body = this.model.get('content');\r\n children.length && coll.append(children);\r\n content.empty().append(body);\r\n },\r\n\r\n /**\r\n * Update title\r\n * @private\r\n * */\r\n updateTitle() {\r\n var title = this.getTitle();\r\n if (title) title.innerHTML = this.model.get('title');\r\n },\r\n\r\n /**\r\n * Update open\r\n * @private\r\n * */\r\n updateOpen() {\r\n this.el.style.display = this.model.get('open') ? '' : 'none';\r\n },\r\n\r\n /**\r\n * Hide modal\r\n * @private\r\n * */\r\n hide() {\r\n this.model.set('open', 0);\r\n },\r\n\r\n /**\r\n * Show modal\r\n * @private\r\n * */\r\n show() {\r\n this.model.set('open', 1);\r\n },\r\n\r\n render() {\r\n const el = this.$el;\r\n const pfx = this.pfx;\r\n const ppfx = this.ppfx;\r\n const obj = this.model.toJSON();\r\n obj.pfx = this.pfx;\r\n obj.ppfx = this.ppfx;\r\n el.html(this.template(obj));\r\n el.attr('class', `${pfx}container`);\r\n this.updateOpen();\r\n return this;\r\n }\r\n});\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/modal_dialog/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * modal: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const modal = editor.Modal;\r\n * ```\r\n *\r\n * * [open](#open)\r\n * * [close](#close)\r\n * * [isOpen](#isopen)\r\n * * [setTitle](#settitle)\r\n * * [getTitle](#gettitle)\r\n * * [setContent](#setcontent)\r\n * * [getContent](#getcontent)\r\n * * [onceClose](#onceclose)\r\n * * [onceOpen](#onceopen)\r\n *\r\n * @module Modal\r\n */\r\n\r\nimport defaults from './config/config';\r\nimport ModalM from './model/Modal';\r\nimport ModalView from './view/ModalView';\r\n\r\nexport default () => {\r\n var c = {};\r\n var model, modal;\r\n\r\n const triggerEvent = (enable, em) => {\r\n em && em.trigger(`modal:${enable ? 'open' : 'close'}`);\r\n };\r\n\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Modal',\r\n\r\n getConfig() {\r\n return c;\r\n },\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config = {}) {\r\n c = {\r\n ...defaults,\r\n ...config\r\n };\r\n\r\n const em = c.em;\r\n this.em = em;\r\n var ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n model = new ModalM(c);\r\n model.on('change:open', (m, enb) => triggerEvent(enb, em));\r\n modal = new ModalView({\r\n model,\r\n config: c\r\n });\r\n\r\n return this;\r\n },\r\n\r\n postRender(view) {\r\n const el = view.model.getConfig().el || view.el;\r\n this.render().appendTo(el);\r\n },\r\n\r\n /**\r\n * Open the modal window\r\n * @param {Object} [opts={}] Options\r\n * @param {String|HTMLElement} [opts.title] Title to set for the modal\r\n * @param {String|HTMLElement} [opts.content] Content to set for the modal\r\n * @return {this}\r\n */\r\n open(opts = {}) {\r\n opts.title && this.setTitle(opts.title);\r\n opts.content && this.setContent(opts.content);\r\n modal.show();\r\n return this;\r\n },\r\n\r\n /**\r\n * Close the modal window\r\n * @return {this}\r\n */\r\n close() {\r\n modal.hide();\r\n return this;\r\n },\r\n\r\n /**\r\n * Execute callback when the modal will be closed.\r\n * The callback will be called one only time\r\n * @param {Function} clb\r\n * @returns {this}\r\n */\r\n onceClose(clb) {\r\n this.em.once('modal:close', clb);\r\n return this;\r\n },\r\n\r\n /**\r\n * Execute callback when the modal will be opened.\r\n * The callback will be called one only time\r\n * @param {Function} clb\r\n * @returns {this}\r\n */\r\n onceOpen(clb) {\r\n this.em.once('modal:open', clb);\r\n return this;\r\n },\r\n\r\n /**\r\n * Checks if the modal window is open\r\n * @return {Boolean}\r\n */\r\n isOpen() {\r\n return !!model.get('open');\r\n },\r\n\r\n /**\r\n * Set the title to the modal window\r\n * @param {string} title Title\r\n * @return {this}\r\n * @example\r\n * modal.setTitle('New title');\r\n */\r\n setTitle(title) {\r\n model.set('title', title);\r\n return this;\r\n },\r\n\r\n /**\r\n * Returns the title of the modal window\r\n * @return {string}\r\n */\r\n getTitle() {\r\n return model.get('title');\r\n },\r\n\r\n /**\r\n * Set the content of the modal window\r\n * @param {string|HTMLElement} content Content\r\n * @return {this}\r\n * @example\r\n * modal.setContent('
    Some HTML content
    ');\r\n */\r\n setContent(content) {\r\n model.set('content', ' ');\r\n model.set('content', content);\r\n return this;\r\n },\r\n\r\n /**\r\n * Get the content of the modal window\r\n * @return {string}\r\n */\r\n getContent() {\r\n return model.get('content');\r\n },\r\n\r\n /**\r\n * Returns content element\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n getContentEl() {\r\n return modal.getContent().get(0);\r\n },\r\n\r\n /**\r\n * Returns modal model\r\n * @return {Model}\r\n * @private\r\n */\r\n getModel() {\r\n return model;\r\n },\r\n\r\n /**\r\n * Render the modal window\r\n * @return {HTMLElement}\r\n * @private\r\n */\r\n render() {\r\n return modal.render().$el;\r\n }\r\n };\r\n};\r\n","import Backbone from 'backbone';\r\nimport {\r\n isString,\r\n isFunction,\r\n isArray,\r\n result,\r\n each,\r\n bindAll\r\n} from 'underscore';\r\nimport {\r\n on,\r\n off,\r\n matches,\r\n getElement,\r\n getPointerEvent,\r\n isTextNode,\r\n getModel\r\n} from 'utils/mixins';\r\nconst $ = Backbone.$;\r\n\r\nexport default Backbone.View.extend({\r\n initialize(opt) {\r\n this.opt = opt || {};\r\n bindAll(\r\n this,\r\n 'startSort',\r\n 'onMove',\r\n 'endMove',\r\n 'rollback',\r\n 'updateOffset',\r\n 'moveDragHelper'\r\n );\r\n var o = opt || {};\r\n this.elT = 0;\r\n this.elL = 0;\r\n this.borderOffset = o.borderOffset || 10;\r\n\r\n var el = o.container;\r\n this.el = typeof el === 'string' ? document.querySelector(el) : el;\r\n this.$el = $(this.el);\r\n\r\n this.containerSel = o.containerSel || 'div';\r\n this.itemSel = o.itemSel || 'div';\r\n this.draggable = o.draggable || true;\r\n this.nested = o.nested || 0;\r\n this.pfx = o.pfx || '';\r\n this.ppfx = o.ppfx || '';\r\n this.freezeClass = o.freezeClass || this.pfx + 'freezed';\r\n this.onStart = o.onStart || '';\r\n this.onEndMove = o.onEndMove || '';\r\n this.direction = o.direction || 'v'; // v (vertical), h (horizontal), a (auto)\r\n this.onMoveClb = o.onMove || '';\r\n this.relative = o.relative || 0;\r\n this.ignoreViewChildren = o.ignoreViewChildren || 0;\r\n this.ignoreModels = o.ignoreModels || 0;\r\n this.plh = o.placer || '';\r\n // Frame offset\r\n this.wmargin = o.wmargin || 0;\r\n this.offTop = o.offsetTop || 0;\r\n this.offLeft = o.offsetLeft || 0;\r\n this.document = o.document || document;\r\n this.$document = $(this.document);\r\n this.dropContent = null;\r\n this.em = o.em || '';\r\n this.dragHelper = null;\r\n this.canvasRelative = o.canvasRelative || 0;\r\n this.selectOnEnd = !o.avoidSelectOnEnd;\r\n this.scale = o.scale;\r\n this.activeTextModel = null;\r\n\r\n if (this.em && this.em.on) {\r\n this.em.on('change:canvasOffset', this.updateOffset);\r\n this.updateOffset();\r\n }\r\n },\r\n\r\n getScale() {\r\n return result(this, scale) || 1;\r\n },\r\n\r\n getContainerEl() {\r\n if (!this.el) {\r\n var el = this.opt.container;\r\n this.el = typeof el === 'string' ? document.querySelector(el) : el;\r\n this.$el = $(this.el);\r\n }\r\n return this.el;\r\n },\r\n\r\n getDocuments() {\r\n const em = this.em;\r\n const canvasDoc = em && em.get('Canvas').getBody().ownerDocument;\r\n const docs = [document];\r\n canvasDoc && docs.push(canvasDoc);\r\n return docs;\r\n },\r\n\r\n /**\r\n * Triggered when the offset of the editro is changed\r\n */\r\n updateOffset() {\r\n const offset = this.em.get('canvasOffset') || {};\r\n this.offTop = offset.top;\r\n this.offLeft = offset.left;\r\n },\r\n\r\n /**\r\n * Set content to drop\r\n * @param {String|Object} content\r\n */\r\n setDropContent(content) {\r\n this.dropModel = null;\r\n this.dropContent = content;\r\n },\r\n\r\n updateTextViewCursorPosition(e) {\r\n const Canvas = this.em.get('Canvas');\r\n const targetDoc = Canvas.getDocument();\r\n let range = null;\r\n\r\n if (targetDoc.caretRangeFromPoint) {\r\n // Chrome\r\n const poiner = getPointerEvent(e);\r\n range = targetDoc.caretRangeFromPoint(poiner.clientX, poiner.clientY);\r\n } else if (e.rangeParent) {\r\n // Firefox\r\n range = targetDoc.createRange();\r\n range.setStart(e.rangeParent, e.rangeOffset);\r\n }\r\n\r\n const sel = Canvas.getWindow().getSelection();\r\n Canvas.getFrameEl().focus();\r\n sel.removeAllRanges();\r\n range && sel.addRange(range);\r\n },\r\n\r\n setContentEditable(model, mode) {\r\n if (model) {\r\n const el = model.getEl();\r\n if (el.contentEditable != mode) el.contentEditable = mode;\r\n }\r\n },\r\n\r\n /**\r\n * Toggle cursor while sorting\r\n * @param {Boolean} active\r\n */\r\n toggleSortCursor(active) {\r\n var em = this.em;\r\n var body = document.body;\r\n var pfx = this.ppfx || this.pfx;\r\n var sortCls = pfx + 'grabbing';\r\n var emBody = em ? em.get('Canvas').getBody() : '';\r\n\r\n // Avoid updating body className as it causes a huge repaint\r\n // Noticeable with \"fast\" drag of blocks\r\n if (active) {\r\n em && em.get('Canvas').startAutoscroll();\r\n //body.className += ' ' + sortCls;\r\n //if (em) emBody.className += ' ' + sortCls;\r\n } else {\r\n em && em.get('Canvas').stopAutoscroll();\r\n //body.className = body.className.replace(sortCls, '').trim();\r\n //if(em) emBody.className = emBody.className.replace(sortCls, '').trim();\r\n }\r\n },\r\n\r\n /**\r\n * Set drag helper\r\n * @param {HTMLElement} el\r\n * @param {Event} event\r\n */\r\n setDragHelper(el, event) {\r\n const ev = event || '';\r\n const clonedEl = el.cloneNode(1);\r\n const rect = el.getBoundingClientRect();\r\n const computed = getComputedStyle(el);\r\n let style = '';\r\n\r\n for (var i = 0; i < computed.length; i++) {\r\n const prop = computed[i];\r\n style += `${prop}:${computed.getPropertyValue(prop)};`;\r\n }\r\n\r\n document.body.appendChild(clonedEl);\r\n clonedEl.className += ` ${this.pfx}bdrag`;\r\n clonedEl.setAttribute('style', style);\r\n this.dragHelper = clonedEl;\r\n clonedEl.style.width = `${rect.width}px`;\r\n clonedEl.style.height = `${rect.height}px`;\r\n ev && this.moveDragHelper(ev);\r\n\r\n // Listen mouse move events\r\n if (this.em) {\r\n $(this.em.get('Canvas').getBody().ownerDocument)\r\n .off('mousemove', this.moveDragHelper)\r\n .on('mousemove', this.moveDragHelper);\r\n }\r\n $(document)\r\n .off('mousemove', this.moveDragHelper)\r\n .on('mousemove', this.moveDragHelper);\r\n },\r\n\r\n /**\r\n * Update the position of the helper\r\n * @param {Event} e\r\n */\r\n moveDragHelper(e) {\r\n const doc = e.target.ownerDocument;\r\n\r\n if (!this.dragHelper || !doc) {\r\n return;\r\n }\r\n\r\n let posY = e.pageY;\r\n let posX = e.pageX;\r\n let addTop = 0;\r\n let addLeft = 0;\r\n const window = doc.defaultView || doc.parentWindow;\r\n const frame = window.frameElement;\r\n const dragHelperStyle = this.dragHelper.style;\r\n\r\n // If frame is present that means mouse has moved over the editor's canvas,\r\n // which is rendered inside the iframe and the mouse move event comes from\r\n // the iframe, not the parent window. Mouse position relative to the frame's\r\n // parent window needs to account for the frame's position relative to the\r\n // parent window.\r\n if (frame) {\r\n const frameRect = frame.getBoundingClientRect();\r\n addTop = frameRect.top + document.documentElement.scrollTop;\r\n addLeft = frameRect.left + document.documentElement.scrollLeft;\r\n posY = e.clientY;\r\n posX = e.clientX;\r\n }\r\n\r\n dragHelperStyle.top = posY + addTop + 'px';\r\n dragHelperStyle.left = posX + addLeft + 'px';\r\n },\r\n\r\n /**\r\n * Returns true if the element matches with selector\r\n * @param {Element} el\r\n * @param {String} selector\r\n * @return {Boolean}\r\n */\r\n matches(el, selector, useBody) {\r\n return matches.call(el, selector);\r\n },\r\n\r\n /**\r\n * Closest parent\r\n * @param {Element} el\r\n * @param {String} selector\r\n * @return {Element|null}\r\n */\r\n closest(el, selector) {\r\n if (!el) return;\r\n var elem = el.parentNode;\r\n while (elem && elem.nodeType === 1) {\r\n if (this.matches(elem, selector)) return elem;\r\n elem = elem.parentNode;\r\n }\r\n return null;\r\n },\r\n\r\n /**\r\n * Get the offset of the element\r\n * @param {HTMLElement} el\r\n * @return {Object}\r\n */\r\n offset(el) {\r\n var rect = el.getBoundingClientRect();\r\n return {\r\n top: rect.top + document.body.scrollTop,\r\n left: rect.left + document.body.scrollLeft\r\n };\r\n },\r\n\r\n /**\r\n * Create placeholder\r\n * @return {HTMLElement}\r\n */\r\n createPlaceholder() {\r\n var pfx = this.pfx;\r\n var el = document.createElement('div');\r\n var ins = document.createElement('div');\r\n el.className = pfx + 'placeholder';\r\n el.style.display = 'none';\r\n el.style['pointer-events'] = 'none';\r\n ins.className = pfx + 'placeholder-int';\r\n el.appendChild(ins);\r\n return el;\r\n },\r\n\r\n /**\r\n * Picking component to move\r\n * @param {HTMLElement} src\r\n * */\r\n startSort(src) {\r\n const em = this.em;\r\n const itemSel = this.itemSel;\r\n const contSel = this.containerSel;\r\n const container = this.getContainerEl();\r\n const docs = this.getDocuments();\r\n const onStart = this.onStart;\r\n let srcModel;\r\n let plh = this.plh;\r\n this.dropModel = null;\r\n this.moved = 0;\r\n\r\n // Check if the start element is a valid one, if not get the\r\n // closest valid one\r\n if (src && !this.matches(src, `${itemSel}, ${contSel}`)) {\r\n src = this.closest(src, itemSel);\r\n }\r\n\r\n this.eV = src;\r\n\r\n // Create placeholder if not yet exists\r\n if (!plh) {\r\n plh = this.createPlaceholder();\r\n container.appendChild(plh);\r\n this.plh = plh;\r\n }\r\n\r\n if (src) {\r\n srcModel = this.getSourceModel(src);\r\n srcModel && srcModel.set && srcModel.set('status', 'freezed');\r\n }\r\n\r\n on(container, 'mousemove dragover', this.onMove);\r\n on(docs, 'mouseup dragend touchend', this.endMove);\r\n on(docs, 'keydown', this.rollback);\r\n onStart && onStart();\r\n\r\n // Avoid strange effects on dragging\r\n em && em.clearSelection();\r\n this.toggleSortCursor(1);\r\n\r\n em && em.trigger('sorter:drag:start', src, srcModel);\r\n },\r\n\r\n /**\r\n * Get the model from HTMLElement target\r\n * @return {Model|null}\r\n */\r\n getTargetModel(el) {\r\n let elem = el || this.target;\r\n return $(elem).data('model');\r\n },\r\n\r\n /**\r\n * Get the model of the current source element (element to drag)\r\n * @return {Model}\r\n */\r\n getSourceModel(source, { target, avoidChildren = 1 } = {}) {\r\n const { em, eV } = this;\r\n const src = source || eV;\r\n let { dropModel, dropContent } = this;\r\n const isTextable = src =>\r\n src &&\r\n target &&\r\n src.opt &&\r\n src.opt.avoidChildren &&\r\n this.isTextableActive(src, target);\r\n\r\n if (dropContent && em) {\r\n if (isTextable(dropModel)) {\r\n dropModel = null;\r\n }\r\n\r\n if (!dropModel) {\r\n const comps = em.get('DomComponents').getComponents();\r\n const opts = {\r\n avoidChildren,\r\n avoidStore: 1,\r\n avoidUpdateStyle: 1\r\n };\r\n const tempModel = comps.add(dropContent, { ...opts, temporary: 1 });\r\n dropModel = comps.remove(tempModel, opts);\r\n dropModel = dropModel instanceof Array ? dropModel[0] : dropModel;\r\n this.dropModel = dropModel;\r\n\r\n if (isTextable(dropModel)) {\r\n return this.getSourceModel(src, { target, avoidChildren: 0 });\r\n }\r\n }\r\n\r\n return dropModel;\r\n }\r\n\r\n return src && $(src).data('model');\r\n },\r\n\r\n /**\r\n * Highlight target\r\n * @param {Model|null} model\r\n */\r\n selectTargetModel(model) {\r\n if (model instanceof Backbone.Collection) {\r\n return;\r\n }\r\n\r\n var prevModel = this.targetModel;\r\n if (prevModel) {\r\n prevModel.set('status', '');\r\n }\r\n\r\n if (model && model.set) {\r\n model.set('status', 'selected-parent');\r\n this.targetModel = model;\r\n }\r\n },\r\n\r\n /**\r\n * During move\r\n * @param {Event} e\r\n * */\r\n onMove(e) {\r\n const ev = e;\r\n const { em, onMoveClb, plh } = this;\r\n this.moved = 1;\r\n\r\n // Turn placeholder visibile\r\n var dsp = plh.style.display;\r\n if (!dsp || dsp === 'none') plh.style.display = 'block';\r\n\r\n // Cache all necessary positions\r\n var eO = this.offset(this.el);\r\n this.elT = this.wmargin ? Math.abs(eO.top) : eO.top;\r\n this.elL = this.wmargin ? Math.abs(eO.left) : eO.left;\r\n var rY = e.pageY - this.elT + this.el.scrollTop;\r\n var rX = e.pageX - this.elL + this.el.scrollLeft;\r\n\r\n if (this.canvasRelative && em) {\r\n var mousePos = em.get('Canvas').getMouseRelativeCanvas(e);\r\n rX = mousePos.x;\r\n rY = mousePos.y;\r\n }\r\n\r\n this.rX = rX;\r\n this.rY = rY;\r\n this.eventMove = e;\r\n\r\n //var targetNew = this.getTargetFromEl(e.target);\r\n const sourceModel = this.getSourceModel();\r\n const dims = this.dimsFromTarget(e.target, rX, rY);\r\n const target = this.target;\r\n const targetModel = this.getTargetModel(target);\r\n this.selectTargetModel(targetModel);\r\n if (!targetModel) plh.style.display = 'none';\r\n\r\n this.lastDims = dims;\r\n const pos = this.findPosition(dims, rX, rY);\r\n\r\n if (this.isTextableActive(sourceModel, targetModel)) {\r\n this.activeTextModel = targetModel;\r\n this.setContentEditable(targetModel, true);\r\n\r\n plh.style.display = 'none';\r\n this.lastPos = pos;\r\n this.updateTextViewCursorPosition(ev);\r\n } else {\r\n this.disableTextable();\r\n this.activeTextModel = null;\r\n\r\n // If there is a significant changes with the pointer\r\n if (\r\n !this.lastPos ||\r\n (this.lastPos.index != pos.index || this.lastPos.method != pos.method)\r\n ) {\r\n this.movePlaceholder(this.plh, dims, pos, this.prevTargetDim);\r\n if (!this.$plh) this.$plh = $(this.plh);\r\n\r\n // With canvasRelative the offset is calculated automatically for\r\n // each element\r\n if (!this.canvasRelative) {\r\n if (this.offTop) this.$plh.css('top', '+=' + this.offTop + 'px');\r\n if (this.offLeft) this.$plh.css('left', '+=' + this.offLeft + 'px');\r\n }\r\n\r\n this.lastPos = pos;\r\n }\r\n }\r\n\r\n isFunction(onMoveClb) && onMoveClb(e);\r\n\r\n em &&\r\n em.trigger('sorter:drag', {\r\n target,\r\n targetModel,\r\n sourceModel,\r\n dims,\r\n pos,\r\n x: rX,\r\n y: rY\r\n });\r\n },\r\n\r\n isTextableActive(src, trg) {\r\n return src && src.get && src.get('textable') && trg && trg.is('text');\r\n },\r\n\r\n disableTextable() {\r\n const { activeTextModel } = this;\r\n activeTextModel && activeTextModel.getView().disableEditing();\r\n },\r\n\r\n /**\r\n * Returns true if the elements is in flow, so is not in flow where\r\n * for example the component is with float:left\r\n * @param {HTMLElement} el\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n * @private\r\n * */\r\n isInFlow(el, parent) {\r\n if (!el) return false;\r\n\r\n parent = parent || document.body;\r\n var ch = -1,\r\n h;\r\n var elem = el;\r\n h = elem.offsetHeight;\r\n if (/*h < ch || */ !this.styleInFlow(elem, parent)) return false;\r\n else return true;\r\n },\r\n\r\n /**\r\n * Check if el has style to be in flow\r\n * @param {HTMLElement} el\r\n * @param {HTMLElement} parent\r\n * @return {Boolean}\r\n * @private\r\n */\r\n styleInFlow(el, parent) {\r\n if (isTextNode(el)) return;\r\n const style = el.style || {};\r\n const $el = $(el);\r\n const $parent = parent && $(parent);\r\n\r\n if (style.overflow && style.overflow !== 'visible') return;\r\n if ($el.css('float') !== 'none') return;\r\n if (\r\n $parent &&\r\n $parent.css('display') == 'flex' &&\r\n $parent.css('flex-direction') !== 'column'\r\n )\r\n return;\r\n switch (style.position) {\r\n case 'static':\r\n case 'relative':\r\n case '':\r\n break;\r\n default:\r\n return;\r\n }\r\n switch (el.tagName) {\r\n case 'TR':\r\n case 'TBODY':\r\n case 'THEAD':\r\n case 'TFOOT':\r\n return true;\r\n }\r\n switch ($el.css('display')) {\r\n case 'block':\r\n case 'list-item':\r\n case 'table':\r\n case 'flex':\r\n return true;\r\n }\r\n return;\r\n },\r\n\r\n /**\r\n * Check if the target is valid with the actual source\r\n * @param {HTMLElement} trg\r\n * @return {Boolean}\r\n */\r\n validTarget(trg, src) {\r\n const trgModel = this.getTargetModel(trg);\r\n const srcModel = this.getSourceModel(src, { target: trgModel });\r\n src = srcModel && srcModel.view && srcModel.view.el;\r\n trg = trgModel && trgModel.view && trgModel.view.el;\r\n let result = {\r\n valid: true,\r\n src,\r\n srcModel,\r\n trg,\r\n trgModel\r\n };\r\n\r\n if (!src || !trg) {\r\n result.valid = false;\r\n return result;\r\n }\r\n\r\n // check if the source is draggable in target\r\n let draggable = srcModel.get('draggable');\r\n draggable = draggable instanceof Array ? draggable.join(', ') : draggable;\r\n result.dragInfo = draggable;\r\n draggable = isString(draggable) ? this.matches(trg, draggable) : draggable;\r\n result.draggable = draggable;\r\n\r\n // Check if the target could accept the source\r\n let droppable = trgModel.get('droppable');\r\n droppable = droppable instanceof Backbone.Collection ? 1 : droppable;\r\n droppable = droppable instanceof Array ? droppable.join(', ') : droppable;\r\n result.dropInfo = droppable;\r\n droppable = isString(droppable) ? this.matches(src, droppable) : droppable;\r\n droppable =\r\n draggable && this.isTextableActive(srcModel, trgModel) ? 1 : droppable;\r\n result.droppable = droppable;\r\n\r\n if (!droppable || !draggable) {\r\n result.valid = false;\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Get dimensions of nodes relative to the coordinates\r\n * @param {HTMLElement} target\r\n * @param {number} rX Relative X position\r\n * @param {number} rY Relative Y position\r\n * @return {Array}\r\n */\r\n dimsFromTarget(target, rX, rY) {\r\n const em = this.em;\r\n var dims = [];\r\n\r\n if (!target) {\r\n return dims;\r\n }\r\n\r\n // Select the first valuable target\r\n if (!this.matches(target, `${this.itemSel}, ${this.containerSel}`)) {\r\n target = this.closest(target, this.itemSel);\r\n }\r\n\r\n // If draggable is an array the target will be one of those\r\n if (this.draggable instanceof Array) {\r\n target = this.closest(target, this.draggable.join(','));\r\n }\r\n\r\n if (!target) {\r\n return dims;\r\n }\r\n\r\n // Check if the target is different from the previous one\r\n if (this.prevTarget && this.prevTarget != target) {\r\n this.prevTarget = null;\r\n }\r\n\r\n // New target found\r\n if (!this.prevTarget) {\r\n this.targetP = this.closest(target, this.containerSel);\r\n\r\n // Check if the source is valid with the target\r\n let validResult = this.validTarget(target);\r\n em && em.trigger('sorter:drag:validation', validResult);\r\n\r\n if (!validResult.valid && this.targetP) {\r\n return this.dimsFromTarget(this.targetP, rX, rY);\r\n }\r\n\r\n this.prevTarget = target;\r\n this.prevTargetDim = this.getDim(target);\r\n this.cacheDimsP = this.getChildrenDim(this.targetP);\r\n this.cacheDims = this.getChildrenDim(target);\r\n }\r\n\r\n // If the target is the previous one will return the cached dims\r\n if (this.prevTarget == target) dims = this.cacheDims;\r\n\r\n // Target when I will drop element to sort\r\n this.target = this.prevTarget;\r\n\r\n // Generally, on any new target the poiner enters inside its area and\r\n // triggers nearBorders(), so have to take care of this\r\n if (\r\n this.nearBorders(this.prevTargetDim, rX, rY) ||\r\n (!this.nested && !this.cacheDims.length)\r\n ) {\r\n const targetParent = this.targetP;\r\n\r\n if (targetParent && this.validTarget(targetParent).valid) {\r\n dims = this.cacheDimsP;\r\n this.target = targetParent;\r\n }\r\n }\r\n\r\n this.lastPos = null;\r\n return dims;\r\n },\r\n\r\n /**\r\n * Get valid target from element\r\n * This method should replace dimsFromTarget()\r\n * @param {HTMLElement} el\r\n * @return {HTMLElement}\r\n */\r\n getTargetFromEl(el) {\r\n let target = el;\r\n let targetParent;\r\n let targetPrev = this.targetPrev;\r\n const em = this.em;\r\n const containerSel = this.containerSel;\r\n const itemSel = this.itemSel;\r\n\r\n // Select the first valuable target\r\n if (!this.matches(target, `${itemSel}, ${containerSel}`)) {\r\n target = this.closest(target, itemSel);\r\n }\r\n\r\n // If draggable is an array the target will be one of those\r\n // TODO check if this options is used somewhere\r\n if (this.draggable instanceof Array) {\r\n target = this.closest(target, this.draggable.join(','));\r\n }\r\n\r\n // Check if the target is different from the previous one\r\n if (targetPrev && targetPrev != target) {\r\n this.targetPrev = '';\r\n }\r\n\r\n // New target found\r\n if (!this.targetPrev) {\r\n targetParent = this.closest(target, containerSel);\r\n\r\n // If the current target is not valid (src/trg reasons) try with\r\n // the parent one (if exists)\r\n const validResult = this.validTarget(target);\r\n em && em.trigger('sorter:drag:validation', validResult);\r\n\r\n if (!validResult.valid && targetParent) {\r\n return this.getTargetFromEl(targetParent);\r\n }\r\n\r\n this.targetPrev = target;\r\n }\r\n\r\n // Generally, on any new target the poiner enters inside its area and\r\n // triggers nearBorders(), so have to take care of this\r\n if (this.nearElBorders(target)) {\r\n targetParent = this.closest(target, containerSel);\r\n\r\n if (targetParent && this.validTarget(targetParent).valid) {\r\n target = targetParent;\r\n }\r\n }\r\n\r\n return target;\r\n },\r\n\r\n /**\r\n * Check if the current pointer is neare to element borders\r\n * @return {Boolen}\r\n */\r\n nearElBorders(el) {\r\n const off = 10;\r\n const rect = el.getBoundingClientRect();\r\n const body = el.ownerDocument.body;\r\n const { x, y } = this.getCurrentPos();\r\n const top = rect.top + body.scrollTop;\r\n const left = rect.left + body.scrollLeft;\r\n const width = rect.width;\r\n const height = rect.height;\r\n\r\n if (\r\n y < top + off || // near top edge\r\n y > top + height - off || // near bottom edge\r\n x < left + off || // near left edge\r\n x > left + width - off // near right edge\r\n ) {\r\n return 1;\r\n }\r\n },\r\n\r\n getCurrentPos() {\r\n const ev = this.eventMove;\r\n const x = ev.pageX || 0;\r\n const y = ev.pageY || 0;\r\n return { x, y };\r\n },\r\n\r\n /**\r\n * Returns dimensions and positions about the element\r\n * @param {HTMLElement} el\r\n * @return {Array}\r\n */\r\n getDim(el) {\r\n const { em, canvasRelative } = this;\r\n var top, left, height, width;\r\n\r\n if (canvasRelative && em) {\r\n const canvas = em.get('Canvas');\r\n const pos = canvas.getElementPos(el);\r\n const elOffsets = canvas.getElementOffsets(el);\r\n top = pos.top - elOffsets.marginTop;\r\n left = pos.left - elOffsets.marginLeft;\r\n height = pos.height + elOffsets.marginTop + elOffsets.marginBottom;\r\n width = pos.width + elOffsets.marginLeft + elOffsets.marginRight;\r\n } else {\r\n var o = this.offset(el);\r\n top = this.relative\r\n ? el.offsetTop\r\n : o.top - (this.wmargin ? -1 : 1) * this.elT;\r\n left = this.relative\r\n ? el.offsetLeft\r\n : o.left - (this.wmargin ? -1 : 1) * this.elL;\r\n height = el.offsetHeight;\r\n width = el.offsetWidth;\r\n }\r\n\r\n return [top, left, height, width];\r\n },\r\n\r\n /**\r\n * Get children dimensions\r\n * @param {HTMLELement} el Element root\r\n * @retun {Array}\r\n * */\r\n getChildrenDim(trg) {\r\n const dims = [];\r\n if (!trg) return dims;\r\n\r\n // Get children based on getChildrenContainer\r\n const trgModel = this.getTargetModel(trg);\r\n if (trgModel && trgModel.view && !this.ignoreViewChildren) {\r\n trg = trgModel.view.getChildrenContainer();\r\n }\r\n\r\n each(trg.children, (el, i) => {\r\n const model = getModel(el, $);\r\n const elIndex = model && model.index ? model.index() : i;\r\n\r\n if (!isTextNode(el) && !this.matches(el, this.itemSel)) {\r\n return;\r\n }\r\n\r\n const dim = this.getDim(el);\r\n let dir = this.direction;\r\n\r\n if (dir == 'v') dir = true;\r\n else if (dir == 'h') dir = false;\r\n else dir = this.isInFlow(el, trg);\r\n\r\n dim.push(dir, el, elIndex);\r\n dims.push(dim);\r\n });\r\n\r\n return dims;\r\n },\r\n\r\n /**\r\n * Check if the coordinates are near to the borders\r\n * @param {Array} dim\r\n * @param {number} rX Relative X position\r\n * @param {number} rY Relative Y position\r\n * @return {Boolean}\r\n * */\r\n nearBorders(dim, rX, rY) {\r\n var result = 0;\r\n var off = this.borderOffset;\r\n var x = rX || 0;\r\n var y = rY || 0;\r\n var t = dim[0];\r\n var l = dim[1];\r\n var h = dim[2];\r\n var w = dim[3];\r\n if (t + off > y || y > t + h - off || l + off > x || x > l + w - off)\r\n result = 1;\r\n\r\n return !!result;\r\n },\r\n\r\n /**\r\n * Find the position based on passed dimensions and coordinates\r\n * @param {Array} dims Dimensions of nodes to parse\r\n * @param {number} posX X coordindate\r\n * @param {number} posY Y coordindate\r\n * @retun {Object}\r\n * */\r\n findPosition(dims, posX, posY) {\r\n var result = { index: 0, indexEl: 0, method: 'before' };\r\n var leftLimit = 0,\r\n xLimit = 0,\r\n dimRight = 0,\r\n yLimit = 0,\r\n xCenter = 0,\r\n yCenter = 0,\r\n dimDown = 0,\r\n dim = 0;\r\n // Each dim is: Top, Left, Height, Width\r\n for (var i = 0, len = dims.length; i < len; i++) {\r\n dim = dims[i];\r\n // Right position of the element. Left + Width\r\n dimRight = dim[1] + dim[3];\r\n // Bottom position of the element. Top + Height\r\n dimDown = dim[0] + dim[2];\r\n // X center position of the element. Left + (Width / 2)\r\n xCenter = dim[1] + dim[3] / 2;\r\n // Y center position of the element. Top + (Height / 2)\r\n yCenter = dim[0] + dim[2] / 2;\r\n // Skip if over the limits\r\n if (\r\n (xLimit && dim[1] > xLimit) ||\r\n (yLimit && yCenter >= yLimit) || // >= avoid issue with clearfixes\r\n (leftLimit && dimRight < leftLimit)\r\n )\r\n continue;\r\n result.index = i;\r\n result.indexEl = dim[6];\r\n // If it's not in flow (like 'float' element)\r\n if (!dim[4]) {\r\n if (posY < dimDown) yLimit = dimDown;\r\n //If x lefter than center\r\n if (posX < xCenter) {\r\n xLimit = xCenter;\r\n result.method = 'before';\r\n } else {\r\n leftLimit = xCenter;\r\n result.method = 'after';\r\n }\r\n } else {\r\n // If y upper than center\r\n if (posY < yCenter) {\r\n result.method = 'before';\r\n break;\r\n } else result.method = 'after'; // After last element\r\n }\r\n }\r\n return result;\r\n },\r\n\r\n /**\r\n * Updates the position of the placeholder\r\n * @param {HTMLElement} phl\r\n * @param {Array} dims\r\n * @param {Object} pos Position object\r\n * @param {Array} trgDim target dimensions\r\n * */\r\n movePlaceholder(plh, dims, pos, trgDim) {\r\n var marg = 0,\r\n t = 0,\r\n l = 0,\r\n w = 0,\r\n h = 0,\r\n un = 'px',\r\n margI = 5,\r\n brdCol = '#62c462',\r\n brd = 3,\r\n method = pos.method;\r\n var elDim = dims[pos.index];\r\n plh.style.borderColor = 'transparent ' + brdCol;\r\n plh.style.borderWidth = brd + un + ' ' + (brd + 2) + un;\r\n plh.style.margin = '-' + brd + 'px 0 0';\r\n if (elDim) {\r\n // If it's not in flow (like 'float' element)\r\n if (!elDim[4]) {\r\n w = 'auto';\r\n h = elDim[2] - marg * 2 + un;\r\n t = elDim[0] + marg;\r\n l = method == 'before' ? elDim[1] - marg : elDim[1] + elDim[3] - marg;\r\n plh.style.borderColor = brdCol + ' transparent';\r\n plh.style.borderWidth = brd + 2 + un + ' ' + brd + un;\r\n plh.style.margin = '0 0 0 -' + brd + 'px';\r\n } else {\r\n w = elDim[3] + un;\r\n h = 'auto';\r\n t = method == 'before' ? elDim[0] - marg : elDim[0] + elDim[2] - marg;\r\n l = elDim[1];\r\n }\r\n } else {\r\n if (!this.nested) {\r\n plh.style.display = 'none';\r\n return;\r\n }\r\n if (trgDim) {\r\n t = trgDim[0] + margI;\r\n l = trgDim[1] + margI;\r\n w = parseInt(trgDim[3]) - margI * 2 + un;\r\n h = 'auto';\r\n }\r\n }\r\n plh.style.top = t + un;\r\n plh.style.left = l + un;\r\n if (w) plh.style.width = w;\r\n if (h) plh.style.height = h;\r\n },\r\n\r\n /**\r\n * Leave item\r\n * @param event\r\n *\r\n * @return void\r\n * */\r\n endMove(e) {\r\n const moved = [null];\r\n const docs = this.getDocuments();\r\n const container = this.getContainerEl();\r\n const onEndMove = this.onEndMove;\r\n const { target, lastPos } = this;\r\n off(container, 'mousemove dragover', this.onMove);\r\n off(docs, 'mouseup dragend touchend', this.endMove);\r\n off(docs, 'keydown', this.rollback);\r\n this.plh.style.display = 'none';\r\n let src = this.eV;\r\n\r\n if (src && this.selectOnEnd) {\r\n var srcModel = this.getSourceModel();\r\n if (srcModel && srcModel.set) {\r\n srcModel.set('status', '');\r\n srcModel.set('status', 'selected');\r\n }\r\n }\r\n\r\n if (this.moved) {\r\n const toMove = this.toMove;\r\n const toMoveArr = isArray(toMove) ? toMove : toMove ? [toMove] : [src];\r\n toMoveArr.forEach(model => {\r\n moved.push(this.move(target, model, lastPos));\r\n });\r\n }\r\n\r\n if (this.plh) this.plh.style.display = 'none';\r\n var dragHelper = this.dragHelper;\r\n\r\n if (dragHelper) {\r\n dragHelper.parentNode.removeChild(dragHelper);\r\n this.dragHelper = null;\r\n }\r\n\r\n this.disableTextable();\r\n this.selectTargetModel();\r\n this.toggleSortCursor();\r\n\r\n this.toMove = null;\r\n isFunction(onEndMove) && moved.forEach(m => onEndMove(m, this));\r\n },\r\n\r\n /**\r\n * Move component to new position\r\n * @param {HTMLElement} dst Destination target\r\n * @param {HTMLElement} src Element to move\r\n * @param {Object} pos Object with position coordinates\r\n * */\r\n move(dst, src, pos) {\r\n const { em, activeTextModel, dropContent } = this;\r\n const srcEl = getElement(src);\r\n em && em.trigger('component:dragEnd:before', dst, srcEl, pos); // @depricated\r\n var warns = [];\r\n var index = pos.indexEl;\r\n var modelToDrop, modelTemp, created;\r\n var validResult = this.validTarget(dst, srcEl);\r\n var targetCollection = $(dst).data('collection');\r\n var model = validResult.srcModel;\r\n var droppable = validResult.droppable;\r\n var draggable = validResult.draggable;\r\n var dropInfo = validResult.dropInfo;\r\n var dragInfo = validResult.dragInfo;\r\n const { trgModel } = validResult;\r\n droppable = trgModel instanceof Backbone.Collection ? 1 : droppable;\r\n const isTextableActive = this.isTextableActive(model, trgModel);\r\n\r\n if (targetCollection && droppable && draggable) {\r\n index = pos.method === 'after' ? index + 1 : index;\r\n var opts = { at: index, noIncrement: 1 };\r\n\r\n if (!dropContent) {\r\n // Putting `avoidStore` here will make the UndoManager behave wrong\r\n opts.temporary = 1;\r\n modelTemp = targetCollection.add({}, { ...opts });\r\n\r\n if (model.collection) {\r\n modelToDrop = model.collection.remove(model, { temporary: 1 });\r\n }\r\n } else {\r\n modelToDrop = dropContent;\r\n opts.silent = false;\r\n opts.avoidUpdateStyle = 1;\r\n }\r\n\r\n if (isTextableActive) {\r\n const viewActive = activeTextModel.getView();\r\n activeTextModel.trigger('active');\r\n const { activeRte } = viewActive;\r\n const modelEl = model.getEl();\r\n delete model.opt.temporary;\r\n model.getView().render();\r\n modelEl.setAttribute('data-gjs-textable', 'true');\r\n const { outerHTML } = modelEl;\r\n activeRte.insertHTML && activeRte.insertHTML(outerHTML);\r\n } else {\r\n created = targetCollection.add(modelToDrop, opts);\r\n }\r\n\r\n if (!dropContent) {\r\n targetCollection.remove(modelTemp);\r\n } else {\r\n this.dropContent = null;\r\n }\r\n\r\n // This will cause to recalculate children dimensions\r\n this.prevTarget = null;\r\n } else {\r\n if (!targetCollection) {\r\n warns.push('Target collection not found');\r\n }\r\n\r\n if (!droppable) {\r\n warns.push(`Target is not droppable, accepts [${dropInfo}]`);\r\n }\r\n\r\n if (!draggable) {\r\n warns.push(`Component not draggable, acceptable by [${dragInfo}]`);\r\n }\r\n\r\n console.warn('Invalid target position: ' + warns.join(', '));\r\n }\r\n\r\n em && em.trigger('component:dragEnd', targetCollection, modelToDrop, warns); // @depricated\r\n em &&\r\n em.trigger('sorter:drag:end', {\r\n targetCollection,\r\n modelToDrop,\r\n warns,\r\n validResult,\r\n dst,\r\n srcEl\r\n });\r\n\r\n return created;\r\n },\r\n\r\n /**\r\n * Rollback to previous situation\r\n * @param {Event}\r\n * @param {Bool} Indicates if rollback in anycase\r\n * */\r\n rollback(e) {\r\n off(this.getDocuments(), 'keydown', this.rollback);\r\n const key = e.which || e.keyCode;\r\n\r\n if (key == 27) {\r\n this.moved = 0;\r\n this.endMove();\r\n }\r\n }\r\n});\r\n","import { bindAll, defaults, isFunction, each } from 'underscore';\r\nimport { on, off, normalizeFloat } from 'utils/mixins';\r\n\r\nvar defaultOpts = {\r\n // Function which returns custom X and Y coordinates of the mouse\r\n mousePosFetcher: null,\r\n // Indicates custom target updating strategy\r\n updateTarget: null,\r\n // Function which gets HTMLElement as an arg and returns it relative position\r\n ratioDefault: 0,\r\n posFetcher: null,\r\n onStart: null,\r\n onMove: null,\r\n onEnd: null,\r\n\r\n // Resize unit step\r\n step: 1,\r\n\r\n // Minimum dimension\r\n minDim: 32,\r\n\r\n // Maximum dimension\r\n maxDim: '',\r\n\r\n // Unit used for height resizing\r\n unitHeight: 'px',\r\n\r\n // Unit used for width resizing\r\n unitWidth: 'px',\r\n\r\n // The key used for height resizing\r\n keyHeight: 'height',\r\n\r\n // The key used for width resizing\r\n keyWidth: 'width',\r\n\r\n // If true, will override unitHeight and unitWidth, on start, with units\r\n // from the current focused element (currently used only in SelectComponent)\r\n currentUnit: 1,\r\n\r\n // With this option active the mousemove event won't be altered when\r\n // the pointer comes over iframes\r\n silentFrames: 0,\r\n\r\n // If true the container of handlers won't be updated\r\n avoidContainerUpdate: 0,\r\n\r\n // If height is 'auto', this setting will preserve it and only update width\r\n keepAutoHeight: false,\r\n\r\n // If width is 'auto', this setting will preserve it and only update height\r\n keepAutoWidth: false,\r\n\r\n // When keepAutoHeight is true and the height has the value 'auto', this is set to true and height isn't updated\r\n autoHeight: false,\r\n\r\n // When keepAutoWidth is true and the width has the value 'auto', this is set to true and width isn't updated\r\n autoWidth: false,\r\n\r\n // Handlers\r\n tl: 1, // Top left\r\n tc: 1, // Top center\r\n tr: 1, // Top right\r\n cl: 1, // Center left\r\n cr: 1, // Center right\r\n bl: 1, // Bottom left\r\n bc: 1, // Bottom center\r\n br: 1 // Bottom right\r\n};\r\n\r\nvar createHandler = (name, opts) => {\r\n var pfx = opts.prefix || '';\r\n var el = document.createElement('i');\r\n el.className = pfx + 'resizer-h ' + pfx + 'resizer-h-' + name;\r\n el.setAttribute('data-' + pfx + 'handler', name);\r\n return el;\r\n};\r\n\r\nvar getBoundingRect = (el, win) => {\r\n var w = win || window;\r\n var rect = el.getBoundingClientRect();\r\n return {\r\n left: rect.left + w.pageXOffset,\r\n top: rect.top + w.pageYOffset,\r\n width: rect.width,\r\n height: rect.height\r\n };\r\n};\r\n\r\nclass Resizer {\r\n /**\r\n * Init the Resizer with options\r\n * @param {Object} options\r\n */\r\n constructor(opts = {}) {\r\n this.setOptions(opts);\r\n bindAll(this, 'handleKeyDown', 'handleMouseDown', 'move', 'stop');\r\n return this;\r\n }\r\n\r\n /**\r\n * Get current connfiguration options\r\n * @return {Object}\r\n */\r\n getConfig() {\r\n return this.opts;\r\n }\r\n\r\n /**\r\n * Setup options\r\n * @param {Object} options\r\n */\r\n setOptions(options = {}) {\r\n this.opts = defaults(options, defaultOpts);\r\n this.setup();\r\n }\r\n\r\n /**\r\n * Setup resizer\r\n */\r\n setup() {\r\n const opts = this.opts;\r\n const pfx = opts.prefix || '';\r\n const appendTo = opts.appendTo || document.body;\r\n let container = this.container;\r\n\r\n // Create container if not yet exist\r\n if (!container) {\r\n container = document.createElement('div');\r\n container.className = `${pfx}resizer-c`;\r\n appendTo.appendChild(container);\r\n this.container = container;\r\n }\r\n\r\n while (container.firstChild) {\r\n container.removeChild(container.firstChild);\r\n }\r\n\r\n // Create handlers\r\n const handlers = {};\r\n ['tl', 'tc', 'tr', 'cl', 'cr', 'bl', 'bc', 'br'].forEach(\r\n hdl => (handlers[hdl] = opts[hdl] ? createHandler(hdl, opts) : '')\r\n );\r\n\r\n for (let n in handlers) {\r\n const handler = handlers[n];\r\n handler && container.appendChild(handler);\r\n }\r\n\r\n this.handlers = handlers;\r\n this.mousePosFetcher = opts.mousePosFetcher;\r\n this.updateTarget = opts.updateTarget;\r\n this.posFetcher = opts.posFetcher;\r\n this.onStart = opts.onStart;\r\n this.onMove = opts.onMove;\r\n this.onEnd = opts.onEnd;\r\n }\r\n\r\n /**\r\n * Toggle iframes pointer event\r\n * @param {Boolean} silent If true, iframes will be silented\r\n */\r\n toggleFrames(silent) {\r\n if (this.opts.silentFrames) {\r\n const frames = document.querySelectorAll('iframe');\r\n each(frames, frame => (frame.style.pointerEvents = silent ? 'none' : ''));\r\n }\r\n }\r\n\r\n /**\r\n * Detects if the passed element is a resize handler\r\n * @param {HTMLElement} el\r\n * @return {Boolean}\r\n */\r\n isHandler(el) {\r\n var handlers = this.handlers;\r\n\r\n for (var n in handlers) {\r\n if (handlers[n] === el) return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Returns the focused element\r\n * @return {HTMLElement}\r\n */\r\n getFocusedEl() {\r\n return this.el;\r\n }\r\n\r\n /**\r\n * Returns documents\r\n */\r\n getDocumentEl() {\r\n return [this.el.ownerDocument, document];\r\n }\r\n\r\n /**\r\n * Return element position\r\n * @param {HTMLElement} el\r\n * @param {Object} opts Custom options\r\n * @return {Object}\r\n */\r\n getElementPos(el, opts = {}) {\r\n var posFetcher = this.posFetcher || '';\r\n return posFetcher ? posFetcher(el, opts) : getBoundingRect(el);\r\n }\r\n\r\n /**\r\n * Focus resizer on the element, attaches handlers to it\r\n * @param {HTMLElement} el\r\n */\r\n focus(el) {\r\n // Avoid focusing on already focused element\r\n if (el && el === this.el) {\r\n return;\r\n }\r\n\r\n this.el = el;\r\n this.updateContainer({ forceShow: 1 });\r\n on(this.getDocumentEl(), 'mousedown', this.handleMouseDown);\r\n }\r\n\r\n /**\r\n * Blur from element\r\n */\r\n blur() {\r\n this.container.style.display = 'none';\r\n\r\n if (this.el) {\r\n off(this.getDocumentEl(), 'mousedown', this.handleMouseDown);\r\n this.el = null;\r\n }\r\n }\r\n\r\n /**\r\n * Start resizing\r\n * @param {Event} e\r\n */\r\n start(e) {\r\n //Right or middel click\r\n if (e.button !== 0) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const el = this.el;\r\n const resizer = this;\r\n const config = this.opts || {};\r\n var attrName = 'data-' + config.prefix + 'handler';\r\n var rect = this.getElementPos(el, { target: 'el' });\r\n this.handlerAttr = e.target.getAttribute(attrName);\r\n this.clickedHandler = e.target;\r\n this.startDim = {\r\n t: rect.top,\r\n l: rect.left,\r\n w: rect.width,\r\n h: rect.height\r\n };\r\n this.rectDim = {\r\n t: rect.top,\r\n l: rect.left,\r\n w: rect.width,\r\n h: rect.height\r\n };\r\n this.startPos = {\r\n x: e.clientX,\r\n y: e.clientY\r\n };\r\n\r\n // Listen events\r\n var doc = this.getDocumentEl();\r\n on(doc, 'mousemove', this.move);\r\n on(doc, 'keydown', this.handleKeyDown);\r\n on(doc, 'mouseup', this.stop);\r\n isFunction(this.onStart) &&\r\n this.onStart(e, { docs: doc, config, el, resizer });\r\n this.toggleFrames(1);\r\n this.move(e);\r\n }\r\n\r\n /**\r\n * While resizing\r\n * @param {Event} e\r\n */\r\n move(e) {\r\n const onMove = this.onMove;\r\n var mouseFetch = this.mousePosFetcher;\r\n var currentPos = mouseFetch\r\n ? mouseFetch(e)\r\n : {\r\n x: e.clientX,\r\n y: e.clientY\r\n };\r\n\r\n this.currentPos = currentPos;\r\n this.delta = {\r\n x: currentPos.x - this.startPos.x,\r\n y: currentPos.y - this.startPos.y\r\n };\r\n this.keys = {\r\n shift: e.shiftKey,\r\n ctrl: e.ctrlKey,\r\n alt: e.altKey\r\n };\r\n\r\n this.rectDim = this.calc(this);\r\n this.updateRect(0);\r\n\r\n // Move callback\r\n onMove && onMove(e);\r\n\r\n // In case the mouse button was released outside of the window\r\n if (e.which === 0) {\r\n this.stop(e);\r\n }\r\n }\r\n\r\n /**\r\n * Stop resizing\r\n * @param {Event} e\r\n */\r\n stop(e) {\r\n const config = this.opts;\r\n var doc = this.getDocumentEl();\r\n off(doc, 'mousemove', this.move);\r\n off(doc, 'keydown', this.handleKeyDown);\r\n off(doc, 'mouseup', this.stop);\r\n this.updateRect(1);\r\n this.toggleFrames();\r\n isFunction(this.onEnd) && this.onEnd(e, { docs: doc, config });\r\n }\r\n\r\n /**\r\n * Update rect\r\n */\r\n updateRect(store) {\r\n const el = this.el;\r\n const resizer = this;\r\n const config = this.opts;\r\n const rect = this.rectDim;\r\n const updateTarget = this.updateTarget;\r\n const selectedHandler = this.getSelectedHandler();\r\n const { unitHeight, unitWidth, keyWidth, keyHeight } = config;\r\n\r\n // Use custom updating strategy if requested\r\n if (isFunction(updateTarget)) {\r\n updateTarget(el, rect, {\r\n store,\r\n selectedHandler,\r\n resizer,\r\n config\r\n });\r\n } else {\r\n const elStyle = el.style;\r\n elStyle[keyWidth] = rect.w + unitWidth;\r\n elStyle[keyHeight] = rect.h + unitHeight;\r\n }\r\n\r\n this.updateContainer();\r\n }\r\n\r\n updateContainer(opt = {}) {\r\n const { opts, container, el } = this;\r\n const { style } = container;\r\n\r\n if (!opts.avoidContainerUpdate && el) {\r\n const toUpdate = ['left', 'top', 'width', 'height'];\r\n const rectEl = this.getElementPos(el, { target: 'container' });\r\n toUpdate.forEach(pos => (style[pos] = `${rectEl[pos]}px`));\r\n if (opt.forceShow) style.display = 'block';\r\n }\r\n }\r\n\r\n /**\r\n * Get selected handler name\r\n * @return {string}\r\n */\r\n getSelectedHandler() {\r\n var handlers = this.handlers;\r\n\r\n if (!this.selectedHandler) {\r\n return;\r\n }\r\n\r\n for (let n in handlers) {\r\n if (handlers[n] === this.selectedHandler) return n;\r\n }\r\n }\r\n\r\n /**\r\n * Handle ESC key\r\n * @param {Event} e\r\n */\r\n handleKeyDown(e) {\r\n if (e.keyCode === 27) {\r\n // Rollback to initial dimensions\r\n this.rectDim = this.startDim;\r\n this.stop(e);\r\n }\r\n }\r\n\r\n /**\r\n * Handle mousedown to check if it's possible to start resizing\r\n * @param {Event} e\r\n */\r\n handleMouseDown(e) {\r\n var el = e.target;\r\n if (this.isHandler(el)) {\r\n this.selectedHandler = el;\r\n this.start(e);\r\n } else if (el !== this.el) {\r\n this.selectedHandler = '';\r\n this.blur();\r\n }\r\n }\r\n\r\n /**\r\n * All positioning logic\r\n * @return {Object}\r\n */\r\n calc(data) {\r\n let value;\r\n const opts = this.opts || {};\r\n const step = opts.step;\r\n const startDim = this.startDim;\r\n const minDim = opts.minDim;\r\n const maxDim = opts.maxDim;\r\n const deltaX = data.delta.x;\r\n const deltaY = data.delta.y;\r\n const startW = startDim.w;\r\n const startH = startDim.h;\r\n var box = {\r\n t: 0,\r\n l: 0,\r\n w: startW,\r\n h: startH\r\n };\r\n\r\n if (!data) return;\r\n\r\n var attr = data.handlerAttr;\r\n if (~attr.indexOf('r')) {\r\n value = normalizeFloat(startW + deltaX * step, step);\r\n value = Math.max(minDim, value);\r\n maxDim && (value = Math.min(maxDim, value));\r\n box.w = value;\r\n }\r\n if (~attr.indexOf('b')) {\r\n value = normalizeFloat(startH + deltaY * step, step);\r\n value = Math.max(minDim, value);\r\n maxDim && (value = Math.min(maxDim, value));\r\n box.h = value;\r\n }\r\n if (~attr.indexOf('l')) {\r\n value = normalizeFloat(startW - deltaX * step, step);\r\n value = Math.max(minDim, value);\r\n maxDim && (value = Math.min(maxDim, value));\r\n box.w = value;\r\n }\r\n if (~attr.indexOf('t')) {\r\n value = normalizeFloat(startH - deltaY * step, step);\r\n value = Math.max(minDim, value);\r\n maxDim && (value = Math.min(maxDim, value));\r\n box.h = value;\r\n }\r\n\r\n // Enforce aspect ratio (unless shift key is being held)\r\n var ratioActive = opts.ratioDefault ? !data.keys.shift : data.keys.shift;\r\n if (attr.indexOf('c') < 0 && ratioActive) {\r\n var ratio = startDim.w / startDim.h;\r\n if (box.w / box.h > ratio) {\r\n box.h = Math.round(box.w / ratio);\r\n } else {\r\n box.w = Math.round(box.h * ratio);\r\n }\r\n }\r\n\r\n if (~attr.indexOf('l')) {\r\n box.l = startDim.w - box.w;\r\n }\r\n if (~attr.indexOf('t')) {\r\n box.t = startDim.h - box.h;\r\n }\r\n\r\n return box;\r\n }\r\n}\r\n\r\nexport default {\r\n init(opts) {\r\n return new Resizer(opts);\r\n }\r\n};\r\n","import Dragger from './Dragger';\r\nimport Sorter from './Sorter';\r\nimport Resizer from './Resizer';\r\n\r\nexport default () => {\r\n return {\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Utils',\r\n\r\n /**\r\n * Initialize module\r\n */\r\n init() {\r\n return this;\r\n },\r\n\r\n Sorter,\r\n Resizer,\r\n Dragger\r\n };\r\n};\r\n","// The initial version of this RTE was borrowed from https://github.com/jaredreich/pell\r\n// and adapted to the GrapesJS's need\r\n\r\nimport { on, off } from 'utils/mixins';\r\n\r\nconst RTE_KEY = '_rte';\r\n\r\nconst defActions = {\r\n bold: {\r\n name: 'bold',\r\n icon: 'B',\r\n attributes: { title: 'Bold' },\r\n result: rte => rte.exec('bold')\r\n },\r\n italic: {\r\n name: 'italic',\r\n icon: 'I',\r\n attributes: { title: 'Italic' },\r\n result: rte => rte.exec('italic')\r\n },\r\n underline: {\r\n name: 'underline',\r\n icon: 'U',\r\n attributes: { title: 'Underline' },\r\n result: rte => rte.exec('underline')\r\n },\r\n strikethrough: {\r\n name: 'strikethrough',\r\n icon: 'S',\r\n attributes: { title: 'Strike-through' },\r\n result: rte => rte.exec('strikeThrough')\r\n },\r\n link: {\r\n icon: ``,\r\n name: 'link',\r\n attributes: {\r\n style: 'font-size:1.4rem;padding:0 4px 2px;',\r\n title: 'Link'\r\n },\r\n result: rte => {\r\n const anchor = rte.selection().anchorNode;\r\n const nextSibling = anchor && anchor.nextSibling;\r\n if (nextSibling && nextSibling.nodeName == 'A') {\r\n rte.exec('unlink');\r\n } else {\r\n rte.insertHTML(`${rte.selection()}`);\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default class RichTextEditor {\r\n constructor(settings = {}) {\r\n const el = settings.el;\r\n\r\n if (el[RTE_KEY]) {\r\n return el[RTE_KEY];\r\n }\r\n\r\n el[RTE_KEY] = this;\r\n this.setEl(el);\r\n this.updateActiveActions = this.updateActiveActions.bind(this);\r\n\r\n const settAct = settings.actions || [];\r\n settAct.forEach((action, i) => {\r\n if (typeof action === 'string') {\r\n action = defActions[action];\r\n } else if (defActions[action.name]) {\r\n action = { ...defActions[action.name], ...action };\r\n }\r\n settAct[i] = action;\r\n });\r\n const actions = settAct.length\r\n ? settAct\r\n : Object.keys(defActions).map(action => defActions[action]);\r\n\r\n settings.classes = {\r\n ...{\r\n actionbar: 'actionbar',\r\n button: 'action',\r\n active: 'active'\r\n },\r\n ...settings.classes\r\n };\r\n\r\n const classes = settings.classes;\r\n let actionbar = settings.actionbar;\r\n this.actionbar = actionbar;\r\n this.settings = settings;\r\n this.classes = classes;\r\n this.actions = actions;\r\n\r\n if (!actionbar) {\r\n const actionbarCont = settings.actionbarContainer;\r\n actionbar = document.createElement('div');\r\n actionbar.className = classes.actionbar;\r\n actionbarCont.appendChild(actionbar);\r\n this.actionbar = actionbar;\r\n actions.forEach(action => this.addAction(action));\r\n }\r\n\r\n settings.styleWithCSS && this.exec('styleWithCSS');\r\n this.syncActions();\r\n\r\n return this;\r\n }\r\n\r\n setEl(el) {\r\n this.el = el;\r\n this.doc = el.ownerDocument;\r\n }\r\n\r\n updateActiveActions() {\r\n this.getActions().forEach(action => {\r\n const btn = action.btn;\r\n const update = action.update;\r\n const active = this.classes.active;\r\n const name = action.name;\r\n const doc = this.doc;\r\n btn.className = btn.className.replace(active, '').trim();\r\n\r\n // doc.queryCommandValue(name) != 'false'\r\n if (doc.queryCommandSupported(name) && doc.queryCommandState(name)) {\r\n btn.className += ` ${active}`;\r\n }\r\n\r\n update && update(this, action);\r\n });\r\n }\r\n\r\n enable() {\r\n if (this.enabled) {\r\n return this;\r\n }\r\n\r\n this.actionbarEl().style.display = '';\r\n this.el.contentEditable = true;\r\n on(this.el, 'mouseup keyup', this.updateActiveActions);\r\n this.syncActions();\r\n this.updateActiveActions();\r\n this.el.focus();\r\n this.enabled = 1;\r\n return this;\r\n }\r\n\r\n disable() {\r\n this.actionbarEl().style.display = 'none';\r\n this.el.contentEditable = false;\r\n off(this.el, 'mouseup keyup', this.updateActiveActions);\r\n this.enabled = 0;\r\n return this;\r\n }\r\n\r\n /**\r\n * Sync actions with the current RTE\r\n */\r\n syncActions() {\r\n this.getActions().forEach(action => {\r\n const event = action.event || 'click';\r\n action.btn[`on${event}`] = e => {\r\n action.result(this, action);\r\n this.updateActiveActions();\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Add new action to the actionbar\r\n * @param {Object} action\r\n * @param {Object} [opts={}]\r\n */\r\n addAction(action, opts = {}) {\r\n const sync = opts.sync;\r\n const btn = document.createElement('span');\r\n const icon = action.icon;\r\n const attr = action.attributes || {};\r\n btn.className = this.classes.button;\r\n action.btn = btn;\r\n\r\n for (let key in attr) {\r\n btn.setAttribute(key, attr[key]);\r\n }\r\n\r\n if (typeof icon == 'string') {\r\n btn.innerHTML = icon;\r\n } else {\r\n btn.appendChild(icon);\r\n }\r\n\r\n this.actionbarEl().appendChild(btn);\r\n\r\n if (sync) {\r\n this.actions.push(action);\r\n this.syncActions();\r\n }\r\n }\r\n\r\n /**\r\n * Get the array of current actions\r\n * @return {Array}\r\n */\r\n getActions() {\r\n return this.actions;\r\n }\r\n\r\n /**\r\n * Returns the Selection instance\r\n * @return {Selection}\r\n */\r\n selection() {\r\n return this.doc.getSelection();\r\n }\r\n\r\n /**\r\n * Execute the command\r\n * @param {string} command Command name\r\n * @param {any} [value=null Command's arguments\r\n */\r\n exec(command, value = null) {\r\n this.doc.execCommand(command, false, value);\r\n }\r\n\r\n /**\r\n * Get the actionbar element\r\n * @return {HTMLElement}\r\n */\r\n actionbarEl() {\r\n return this.actionbar;\r\n }\r\n\r\n /**\r\n * Set custom HTML to the selection, useful as the default 'insertHTML' command\r\n * doesn't work in the same way on all browsers\r\n * @param {string} value HTML string\r\n */\r\n insertHTML(value) {\r\n let lastNode;\r\n const doc = this.doc;\r\n const sel = doc.getSelection();\r\n\r\n if (sel && sel.rangeCount) {\r\n const node = doc.createElement('div');\r\n const range = sel.getRangeAt(0);\r\n range.deleteContents();\r\n node.innerHTML = value;\r\n Array.prototype.slice.call(node.childNodes).forEach(nd => {\r\n range.insertNode(nd);\r\n lastNode = nd;\r\n });\r\n\r\n sel.removeAllRanges();\r\n sel.addRange(range);\r\n this.el.focus();\r\n }\r\n }\r\n}\r\n","export default {\r\n stylePrefix: 'rte-',\r\n\r\n // If true, moves the toolbar below the element when the top canvas\r\n // edge is reached\r\n adjustToolbar: 1,\r\n\r\n // Default RTE actions\r\n actions: ['bold', 'italic', 'underline', 'strikethrough', 'link']\r\n};\r\n","/**\r\n * This module allows to customize the built-in toolbar of the Rich Text Editor and use commands from the [HTML Editing APIs](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand).\r\n * It's highly recommended to keep this toolbar as small as possible, especially from styling commands (eg. 'fontSize') and leave this task to the Style Manager\r\n *\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/rich_text_editor/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * richTextEditor: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const rte = editor.RichTextEditor;\r\n * ```\r\n *\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getall)\r\n * * [remove](#remove)\r\n * * [getToolbarEl](#gettoolbarel)\r\n *\r\n * @module RichTextEditor\r\n */\r\n\r\nimport RichTextEditor from './model/RichTextEditor';\r\n// import customeditor from './model/customrte';\r\nimport { on, off } from 'utils/mixins';\r\nimport defaults from './config/config';\r\n\r\nexport default () => {\r\n let config = {};\r\n let toolbar, actions, lastEl, globalRte;\r\n\r\n const hideToolbar = () => {\r\n const style = toolbar.style;\r\n const size = '-1000px';\r\n style.top = size;\r\n style.left = size;\r\n style.display = 'none';\r\n };\r\n\r\n return {\r\n // customRte: customeditor(),\r\n customRte: null,\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'RichTextEditor',\r\n\r\n getConfig() {\r\n return config;\r\n },\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} opts Options\r\n * @private\r\n */\r\n init(opts = {}) {\r\n config = {\r\n ...defaults,\r\n ...opts\r\n };\r\n const ppfx = config.pStylePrefix;\r\n\r\n if (ppfx) {\r\n config.stylePrefix = ppfx + config.stylePrefix;\r\n }\r\n\r\n this.pfx = config.stylePrefix;\r\n actions = config.actions || [];\r\n toolbar = document.createElement('div');\r\n toolbar.className = `${ppfx}rte-toolbar ${ppfx}one-bg`;\r\n globalRte = this.initRte(document.createElement('div'));\r\n\r\n //Avoid closing on toolbar clicking\r\n on(toolbar, 'mousedown', e => e.stopPropagation());\r\n return this;\r\n },\r\n\r\n /**\r\n * Post render callback\r\n * @param {View} ev\r\n * @private\r\n */\r\n postRender(ev) {\r\n const canvas = ev.model.get('Canvas');\r\n toolbar.style.pointerEvents = 'all';\r\n hideToolbar();\r\n canvas.getToolsEl().appendChild(toolbar);\r\n },\r\n\r\n /**\r\n * Init the built-in RTE\r\n * @param {HTMLElement} el\r\n * @return {RichTextEditor}\r\n * @private\r\n */\r\n initRte(el) {\r\n const pfx = this.pfx;\r\n const actionbarContainer = toolbar;\r\n const actionbar = this.actionbar;\r\n const actions = this.actions || config.actions;\r\n const classes = {\r\n actionbar: `${pfx}actionbar`,\r\n button: `${pfx}action`,\r\n active: `${pfx}active`\r\n };\r\n const rte = new RichTextEditor({\r\n el,\r\n classes,\r\n actions,\r\n actionbar,\r\n actionbarContainer\r\n });\r\n globalRte && globalRte.setEl(el);\r\n\r\n if (rte.actionbar) {\r\n this.actionbar = rte.actionbar;\r\n }\r\n\r\n if (rte.actions) {\r\n this.actions = rte.actions;\r\n }\r\n\r\n return rte;\r\n },\r\n\r\n /**\r\n * Add a new action to the built-in RTE toolbar\r\n * @param {string} name Action name\r\n * @param {Object} action Action options\r\n * @example\r\n * rte.add('bold', {\r\n * icon: 'B',\r\n * attributes: {title: 'Bold'},\r\n * result: rte => rte.exec('bold')\r\n * });\r\n * rte.add('link', {\r\n * icon: document.getElementById('t'),\r\n * attributes: {title: 'Link',}\r\n * // Example on it's easy to wrap a selected content\r\n * result: rte => rte.insertHTML(`${rte.selection()}`)\r\n * });\r\n * // An example with fontSize\r\n * rte.add('fontSize', {\r\n * icon: ``,\r\n * // Bind the 'result' on 'change' listener\r\n * event: 'change',\r\n * result: (rte, action) => rte.exec('fontSize', action.btn.firstChild.value),\r\n * // Callback on any input change (mousedown, keydown, etc..)\r\n * update: (rte, action) => {\r\n * const value = rte.doc.queryCommandValue(action.name);\r\n * if (value != 'false') { // value is a string\r\n * action.btn.firstChild.value = value;\r\n * }\r\n * }\r\n * })\r\n */\r\n add(name, action = {}) {\r\n action.name = name;\r\n globalRte.addAction(action, { sync: 1 });\r\n },\r\n\r\n /**\r\n * Get the action by its name\r\n * @param {string} name Action name\r\n * @return {Object}\r\n * @example\r\n * const action = rte.get('bold');\r\n * // {name: 'bold', ...}\r\n */\r\n get(name) {\r\n let result;\r\n globalRte.getActions().forEach(action => {\r\n if (action.name == name) {\r\n result = action;\r\n }\r\n });\r\n return result;\r\n },\r\n\r\n /**\r\n * Get all actions\r\n * @return {Array}\r\n */\r\n getAll() {\r\n return globalRte.getActions();\r\n },\r\n\r\n /**\r\n * Remove the action from the toolbar\r\n * @param {string} name\r\n * @return {Object} Removed action\r\n * @example\r\n * const action = rte.remove('bold');\r\n * // {name: 'bold', ...}\r\n */\r\n remove(name) {\r\n const actions = this.getAll();\r\n const action = this.get(name);\r\n\r\n if (action) {\r\n const btn = action.btn;\r\n const index = actions.indexOf(action);\r\n btn.parentNode.removeChild(btn);\r\n actions.splice(index, 1);\r\n }\r\n\r\n return action;\r\n },\r\n\r\n /**\r\n * Get the toolbar element\r\n * @return {HTMLElement}\r\n */\r\n getToolbarEl() {\r\n return toolbar;\r\n },\r\n\r\n /**\r\n * Triggered when the offset of the editor is changed\r\n * @private\r\n */\r\n updatePosition() {\r\n const un = 'px';\r\n const canvas = config.em.get('Canvas');\r\n const pos = canvas.getTargetToElementDim(toolbar, lastEl, {\r\n event: 'rteToolbarPosUpdate'\r\n });\r\n\r\n if (pos) {\r\n if (config.adjustToolbar) {\r\n const frameOffset = canvas.getCanvasView().getFrameOffset();\r\n // Move the toolbar down when the top canvas edge is reached\r\n if (\r\n pos.top <= pos.canvasTop &&\r\n !(pos.elementHeight + pos.targetHeight >= frameOffset.height)\r\n ) {\r\n pos.top = pos.elementTop + pos.elementHeight;\r\n }\r\n }\r\n\r\n const toolbarStyle = toolbar.style;\r\n toolbarStyle.top = pos.top + un;\r\n toolbarStyle.left = pos.left + un;\r\n }\r\n },\r\n\r\n /**\r\n * Enable rich text editor on the element\r\n * @param {View} view Component view\r\n * @param {Object} rte The instance of already defined RTE\r\n * @private\r\n * */\r\n enable(view, rte) {\r\n lastEl = view.el;\r\n const em = config.em;\r\n const el = view.getChildrenContainer();\r\n const customRte = this.customRte;\r\n\r\n toolbar.style.display = '';\r\n rte = customRte ? customRte.enable(el, rte) : this.initRte(el).enable();\r\n\r\n if (em) {\r\n setTimeout(this.updatePosition.bind(this), 0);\r\n const event = 'change:canvasOffset canvasScroll';\r\n em.off(event, this.updatePosition, this);\r\n em.on(event, this.updatePosition, this);\r\n em.trigger('rte:enable', view, rte);\r\n }\r\n\r\n return rte;\r\n },\r\n\r\n /**\r\n * Unbind rich text editor from the element\r\n * @param {View} view\r\n * @param {Object} rte The instance of already defined RTE\r\n * @private\r\n * */\r\n disable(view, rte) {\r\n const em = config.em;\r\n const customRte = this.customRte;\r\n var el = view.getChildrenContainer();\r\n\r\n if (customRte) {\r\n customRte.disable(el, rte);\r\n } else {\r\n rte && rte.disable();\r\n }\r\n\r\n hideToolbar();\r\n em && em.trigger('rte:disable', view, rte);\r\n }\r\n };\r\n};\r\n","export default {\r\n stylePrefix: 'com-',\r\n\r\n // Default array of commands\r\n defaults: [],\r\n\r\n // If true, stateful commands (with `run` and `stop` methods) can't be runned multiple times.\r\n // So, if the command is already active, running it again will not execute the `run` method\r\n strict: 1\r\n};\r\n","/**\r\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/commands/config/config.js)\r\n * ```js\r\n * const editor = grapesjs.init({\r\n * commands: {\r\n * // options\r\n * }\r\n * })\r\n * ```\r\n *\r\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\r\n *\r\n * ```js\r\n * const commands = editor.Commands;\r\n * ```\r\n *\r\n * * [add](#add)\r\n * * [get](#get)\r\n * * [getAll](#getall)\r\n * * [extend](#extend)\r\n * * [has](#has)\r\n * * [run](#run)\r\n * * [stop](#stop)\r\n * * [isActive](#isactive)\r\n * * [getActive](#getactive)\r\n *\r\n * @module Commands\r\n */\r\n\r\nimport { isFunction, includes } from 'underscore';\r\nimport CommandAbstract from './view/CommandAbstract';\r\nimport defaults from './config/config';\r\n\r\nexport default () => {\r\n let em;\r\n let c = {};\r\n const commands = {};\r\n const defaultCommands = {};\r\n const active = {};\r\n const commandsDef = [\r\n ['preview', 'Preview', 'preview'],\r\n ['resize', 'Resize', 'resize'],\r\n ['fullscreen', 'Fullscreen', 'fullscreen'],\r\n ['copy', 'CopyComponent'],\r\n ['paste', 'PasteComponent'],\r\n ['canvas-move', 'CanvasMove'],\r\n ['canvas-clear', 'CanvasClear'],\r\n ['code-import', 'ImportTemplate', 'code-import'],\r\n ['studio-export', 'StudioCommands', 'studio-export'],\r\n ['show-sidebar', 'StudioCommands', 'show-sidebar'], //check, if not needed, remove\r\n ['edit-control', 'StudioCommands', 'edit-control'],\r\n ['save-control', 'StudioCommands', 'save-control'],\r\n ['add-new-control', 'StudioCommands', 'add-new-control'],\r\n ['add-to-marketplace', 'MarketplaceCommands', 'add-to-marketplace'],\r\n ['view-marketplace', 'MarketplaceCommands', 'view-marketplace'],\r\n ['open-template-preview', 'MarketplaceCommands', 'open-template-preview'],\r\n ['recordState', 'StateManager', 'recordState'],\r\n ['open-control-list', 'LeftButtonPanel', 'open-control-list'],\r\n ['open-menu', 'LeftButtonPanel', 'open-menu'],\r\n ['logoclicked', 'StudioLogo', 'logoclicked'],\r\n ['open-layers', 'OpenLayers', 'open-layers'],\r\n ['open-styles', 'OpenStyleManager', 'open-sm'],\r\n ['open-traits', 'OpenTraitManager', 'open-tm'],\r\n ['open-blocks', 'OpenBlocks', 'open-blocks'],\r\n ['open-assets', 'OpenAssets', 'open-assets'],\r\n ['change-device', 'DeviceManager', 'change-device'],\r\n ['component-select', 'SelectComponent', 'select-comp'],\r\n ['component-outline', 'SwitchVisibility', 'sw-visibility'],\r\n ['component-offset', 'ShowOffset', 'show-offset'],\r\n ['component-move', 'MoveComponent', 'move-comp'],\r\n ['component-next', 'ComponentNext'],\r\n ['component-prev', 'ComponentPrev'],\r\n ['component-enter', 'ComponentEnter'],\r\n ['component-exit', 'ComponentExit', 'select-parent'],\r\n ['component-delete', 'ComponentDelete'],\r\n ['component-style-clear', 'ComponentStyleClear'],\r\n ['component-drag', 'ComponentDrag']\r\n ];\r\n\r\n // Need it here as it would be used below\r\n const add = function(id, obj) {\r\n if (isFunction(obj)) obj = { run: obj };\r\n if (!obj.stop) obj.noStop = 1;\r\n delete obj.initialize;\r\n obj.id = id;\r\n commands[id] = CommandAbstract.extend(obj);\r\n return this;\r\n };\r\n\r\n return {\r\n CommandAbstract,\r\n\r\n /**\r\n * Name of the module\r\n * @type {String}\r\n * @private\r\n */\r\n name: 'Commands',\r\n\r\n /**\r\n * Initialize module. Automatically called with a new instance of the editor\r\n * @param {Object} config Configurations\r\n * @private\r\n */\r\n init(config = {}) {\r\n c = {\r\n ...defaults,\r\n ...config\r\n };\r\n em = c.em;\r\n const ppfx = c.pStylePrefix;\r\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\r\n\r\n // Load commands passed via configuration\r\n for (let k in c.defaults) {\r\n const obj = c.defaults[k];\r\n if (obj.id) this.add(obj.id, obj);\r\n }\r\n\r\n defaultCommands['tlb-delete'] = {\r\n run(ed) {\r\n return ed.runCommand('core:component-delete');\r\n }\r\n };\r\n\r\n defaultCommands['tlb-clone'] = {\r\n run(ed) {\r\n ed.runCommand('core:copy');\r\n ed.runCommand('core:paste');\r\n }\r\n };\r\n\r\n defaultCommands['tlb-move'] = {\r\n run(ed, sender, opts = {}) {\r\n let dragger;\r\n const em = ed.getModel();\r\n const event = opts && opts.event;\r\n const { target } = opts;\r\n const sel = target || ed.getSelected();\r\n const selAll = target ? [target] : [...ed.getSelectedAll()];\r\n const nativeDrag = event && event.type == 'dragstart';\r\n const defComOptions = { preserveSelected: 1 };\r\n const modes = ['absolute', 'translate'];\r\n const hideTlb = () => em.stopDefault(defComOptions);\r\n\r\n // Dirty patch to prevent parent selection on drop (in absolute mode)\r\n em.set('_cmpDrag', 1);\r\n\r\n if (!sel || !sel.get('draggable')) {\r\n console.warn('The element is not draggable');\r\n return;\r\n }\r\n\r\n const mode = sel.get('dmode') || em.get('dmode');\r\n\r\n // Without setTimeout the ghost image disappears\r\n nativeDrag ? setTimeout(hideTlb, 0) : hideTlb();\r\n\r\n const onEnd = (e, opts) => {\r\n em.runDefault(defComOptions);\r\n selAll.forEach(sel => sel.set('status', 'selected'));\r\n ed.select(selAll);\r\n sel.emitUpdate();\r\n };\r\n\r\n if (includes(modes, mode)) {\r\n // TODO move grabbing func in editor/canvas from the Sorter\r\n dragger = ed.runCommand('core:component-drag', {\r\n guidesInfo: 1,\r\n mode,\r\n target: sel,\r\n onEnd,\r\n event\r\n });\r\n } else {\r\n if (nativeDrag) {\r\n event.dataTransfer.setDragImage(sel.view.el, 0, 0);\r\n //sel.set('status', 'freezed');\r\n }\r\n\r\n const cmdMove = ed.Commands.get('move-comp');\r\n cmdMove.onEndMoveFromModel = onEnd;\r\n cmdMove.initSorterFromModels(selAll);\r\n }\r\n\r\n selAll.forEach(sel => sel.set('status', 'freezed-selected'));\r\n }\r\n };\r\n\r\n // Core commands\r\n defaultCommands['core:undo'] = e => e.UndoManager.undo();\r\n defaultCommands['core:redo'] = e => e.UndoManager.redo();\r\n commandsDef.forEach(item => {\r\n const oldCmd = item[2];\r\n const cmd = require(`./view/${item[1]}`).default;\r\n const cmdName = `core:${item[0]}`;\r\n defaultCommands[cmdName] = cmd;\r\n if (oldCmd) {\r\n defaultCommands[oldCmd] = cmd;\r\n // Propogate old commands (can be removed once we stop to call old commands)\r\n ['run', 'stop'].forEach(name => {\r\n em.on(`${name}:${oldCmd}`, (...args) =>\r\n em.trigger(`${name}:${cmdName}`, ...args)\r\n );\r\n });\r\n }\r\n });\r\n\r\n if (c.em) c.model = c.em.get('Canvas');\r\n\r\n this.loadDefaultCommands();\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Add new command to the collection\r\n * @param\t{string} id Command's ID\r\n * @param\t{Object|Function} command Object representing your command,\r\n * By passing just a function it's intended as a stateless command\r\n * (just like passing an object with only `run` method).\r\n * @return {this}\r\n * @example\r\n * commands.add('myCommand', {\r\n * \trun(editor, sender) {\r\n * \t\talert('Hello world!');\r\n * \t},\r\n * \tstop(editor, sender) {\r\n * \t},\r\n * });\r\n * // As a function\r\n * commands.add('myCommand2', editor => { ... });\r\n * */\r\n add,\r\n\r\n /**\r\n * Get command by ID\r\n * @param\t{string}\tid Command's ID\r\n * @return {Object} Object representing the command\r\n * @example\r\n * var myCommand = commands.get('myCommand');\r\n * myCommand.run();\r\n * */\r\n get(id) {\r\n let el = commands[id];\r\n\r\n if (isFunction(el)) {\r\n el = new el(c);\r\n commands[id] = el;\r\n } else if (!el) {\r\n em.logWarning(`'${id}' command not found`);\r\n }\r\n\r\n return el;\r\n },\r\n\r\n /**\r\n * Extend the command. The command to extend should be defined as an object\r\n * @param\t{string}\tid Command's ID\r\n * @param {Object} Object with the new command functions\r\n * @returns {this}\r\n * @example\r\n * commands.extend('old-command', {\r\n * someInnerFunction() {\r\n * // ...\r\n * }\r\n * });\r\n * */\r\n extend(id, cmd = {}) {\r\n const command = this.get(id);\r\n if (command) {\r\n const cmdObj = {\r\n ...command.constructor.prototype,\r\n ...cmd\r\n };\r\n this.add(id, cmdObj);\r\n // Extend also old name commands if exist\r\n const oldCmd = commandsDef.filter(\r\n cmd => `core:${cmd[0]}` === id && cmd[2]\r\n )[0];\r\n oldCmd && this.add(oldCmd[2], cmdObj);\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Check if command exists\r\n * @param\t{string}\tid Command's ID\r\n * @return {Boolean}\r\n * */\r\n has(id) {\r\n return !!commands[id];\r\n },\r\n\r\n /**\r\n * Get an object containing all the commands\r\n * @return {Object}\r\n */\r\n getAll() {\r\n return commands;\r\n },\r\n\r\n /**\r\n * Execute the command\r\n * @param {String} id Command ID\r\n * @param {Object} [options={}] Options\r\n * @return {*} The return is defined by the command\r\n * @example\r\n * commands.run('myCommand', { someOption: 1 });\r\n */\r\n run(id, options = {}) {\r\n return this.runCommand(this.get(id), options);\r\n },\r\n\r\n /**\r\n * Stop the command\r\n * @param {String} id Command ID\r\n * @param {Object} [options={}] Options\r\n * @return {*} The return is defined by the command\r\n * @example\r\n * commands.stop('myCommand', { someOption: 1 });\r\n */\r\n stop(id, options = {}) {\r\n return this.stopCommand(this.get(id), options);\r\n },\r\n\r\n /**\r\n * Check if the command is active. You activate commands with `run`\r\n * and disable them with `stop`. If the command was created without `stop`\r\n * method it can't be registered as active\r\n * @param {String} id Command id\r\n * @return {Boolean}\r\n * @example\r\n * const cId = 'some-command';\r\n * commands.run(cId);\r\n * commands.isActive(cId);\r\n * // -> true\r\n * commands.stop(cId);\r\n * commands.isActive(cId);\r\n * // -> false\r\n */\r\n isActive(id) {\r\n return this.getActive().hasOwnProperty(id);\r\n },\r\n\r\n /**\r\n * Get all active commands\r\n * @return {Object}\r\n * @example\r\n * console.log(commands.getActive());\r\n * // -> { someCommand: itsLastReturn, anotherOne: ... };\r\n */\r\n getActive() {\r\n return active;\r\n },\r\n\r\n /**\r\n * Load default commands\r\n * @return {this}\r\n * @private\r\n * */\r\n loadDefaultCommands() {\r\n for (var id in defaultCommands) {\r\n this.add(id, defaultCommands[id]);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Run command via its object\r\n * @param {Object} command\r\n * @param {Object} options\r\n * @return {*} Result of the command\r\n * @private\r\n */\r\n runCommand(command, options = {}) {\r\n let result;\r\n\r\n if (command && command.run) {\r\n const id = command.id;\r\n const editor = em.get('Editor');\r\n\r\n if (!this.isActive(id) || options.force || !c.strict) {\r\n result = command.callRun(editor, options);\r\n if (id && command.stop && !command.noStop && !options.abort) {\r\n active[id] = result;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Stop the command\r\n * @param {Object} command\r\n * @param {Object} options\r\n * @return {*} Result of the command\r\n * @private\r\n */\r\n stopCommand(command, options = {}) {\r\n let result;\r\n\r\n if (command && command.run) {\r\n const id = command.id;\r\n const editor = em.get('Editor');\r\n\r\n if (this.isActive(id) || options.force || !c.strict) {\r\n if (id) delete active[id];\r\n result = command.callStop(editor, options);\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n /**\r\n * Create anonymous Command instance\r\n * @param {Object} command Command object\r\n * @return {Command}\r\n * @private\r\n * */\r\n create(command) {\r\n if (!command.stop) command.noStop = 1;\r\n const cmd = CommandAbstract.extend(command);\r\n return new cmd(c);\r\n }\r\n };\r\n};\r\n"],"sourceRoot":""}