{"version":3,"file":"main.min.js","sources":["../../../../../../node_modules/workbox-window/build/workbox-window.prod.es5.mjs","../../../../../../node_modules/conditioner-core/conditioner-core.js","../../../../../../node_modules/@glidejs/glide/dist/glide.esm.js","../../../../../../node_modules/to-no-case/index.js","../../../../../../node_modules/to-space-case/index.js","../../../../../../node_modules/to-camel-case/index.js","../../../../../../source/js/utils/eventbus.js","../../../../../../node_modules/mitt/dist/mitt.es.js","../../../../../../source/js/components/base.js","../../../../../../node_modules/popper.js/dist/esm/popper.js","../../../../../../node_modules/tippy.js/dist/tippy.chunk.esm.js","../../../../../../node_modules/lit-html/lib/dom.js","../../../../../../node_modules/lit-html/lib/template.js","../../../../../../node_modules/lit-html/lib/modify-template.js","../../../../../../node_modules/lit-html/lib/directive.js","../../../../../../node_modules/lit-html/lib/part.js","../../../../../../node_modules/lit-html/lib/template-instance.js","../../../../../../node_modules/lit-html/lib/template-result.js","../../../../../../node_modules/lit-html/lib/parts.js","../../../../../../node_modules/lit-html/lib/template-factory.js","../../../../../../node_modules/lit-html/lib/render.js","../../../../../../node_modules/lit-html/lib/default-template-processor.js","../../../../../../node_modules/lit-html/lit-html.js","../../../../../../node_modules/lit-html/lib/shady-render.js","../../../../../../node_modules/lit-element/lib/updating-element.js","../../../../../../node_modules/lit-element/lib/css-tag.js","../../../../../../node_modules/lit-element/lit-element.js","../../../../../../source/js/tracking/utils.js","../../../../../../source/js/components/icon.js","../../../../../../source/js/components/broker-dropdown.js","../../../../../../node_modules/lodash.debounce/index.js","../../../../../../source/js/components/tooltip.js","../../../../../../source/js/components/copyValueButton.js","../../../../../../node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js","../../../../../../source/js/utils/get-polyfilled-dialog.js","../../../../../../source/js/utils/focusable-elements.js","../../../../../../source/js/components/dialog.js","../../../../../../source/js/components/dropdown.js","../../../../../../node_modules/js-cookie/src/js.cookie.js","../../../../../../source/js/components/loader.js","../../../../../../node_modules/lit-html/directives/until.js","../../../../../../node_modules/vi18n/lib/index.js","../../../../../../source/js/utils/intl.js","../../../../../../source/js/utils/webcomponents/translate.js","../../../../../../source/js/components/message.js","../../../../../../source/js/components/navigation.js","../../../../../../source/js/components/responsive-table.js","../../../../../../source/js/components/table-results-per-page.js","../../../../../../source/js/components/tabs.js","../../../../../../source/js/components/toggle.js","../../../../../../source/js/components/translations-toggle.js","../../../../../../source/js/components/underlying-select.js","../../../../../../source/js/components/underlying-quick-links.js","../../../../../../source/js/components/underlying-select-link.js","../../../../../../node_modules/natural-orderby/esm/natural-orderby.js","../../../../../../source/js/utils/ticker/ticker-data.js","../../../../../../source/js/utils/ticker/ticker-repository.js","../../../../../../source/js/components/ticker/ticker-element.js","../../../../../../source/js/components/ticker/ticker-performance-indicator.js","../../../../../../source/js/components/ticker/ticker-extremes.js","../../../../../../source/js/utils/ticker/ticker-observer.js","../../../../../../source/js/utils/ticker/ticker-element-factory.js","../../../../../../source/js/components/underlying-table.js","../../../../../../source/js/components/account/account-events.js","../../../../../../source/js/utils/dispatch-custom-event.js","../../../../../../source/js/components/account/account-subscriptions-edit-form.js","../../../../../../source/js/utils/webcomponents/create-component.js","../../../../../../source/js/utils/webcomponents/construct-dialog.js","../../../../../../source/js/components/account/account-subscriptions-edit.js","../../../../../../source/js/components/alert/alert-api.js","../../../../../../source/js/components/alert/alert-events.js","../../../../../../source/js/components/alert/alert-delete-button.js","../../../../../../source/js/components/alert/alert-edit-button.js","../../../../../../node_modules/imask/esm/_rollupPluginBabelHelpers-3c58f0e3.js","../../../../../../node_modules/imask/esm/core/utils.js","../../../../../../node_modules/imask/esm/core/action-details.js","../../../../../../node_modules/imask/esm/core/change-details.js","../../../../../../node_modules/imask/esm/core/continuous-tail-details.js","../../../../../../node_modules/imask/esm/core/holder.js","../../../../../../node_modules/imask/esm/masked/base.js","../../../../../../node_modules/imask/esm/masked/factory.js","../../../../../../node_modules/imask/esm/masked/pattern/input-definition.js","../../../../../../node_modules/imask/esm/masked/pattern/fixed-definition.js","../../../../../../node_modules/imask/esm/masked/pattern/chunk-tail-details.js","../../../../../../node_modules/imask/esm/masked/regexp.js","../../../../../../node_modules/imask/esm/masked/pattern.js","../../../../../../node_modules/imask/esm/masked/range.js","../../../../../../node_modules/imask/esm/masked/date.js","../../../../../../node_modules/imask/esm/controls/mask-element.js","../../../../../../node_modules/imask/esm/controls/html-mask-element.js","../../../../../../node_modules/imask/esm/controls/html-contenteditable-mask-element.js","../../../../../../node_modules/imask/esm/controls/input.js","../../../../../../node_modules/imask/esm/masked/enum.js","../../../../../../node_modules/imask/esm/masked/number.js","../../../../../../node_modules/imask/esm/masked/function.js","../../../../../../node_modules/imask/esm/masked/dynamic.js","../../../../../../node_modules/imask/esm/masked/pipe.js","../../../../../../node_modules/imask/esm/index.js","../../../../../../source/js/components/alert/alert-types.js","../../../../../../source/js/components/alert/alert-edit-form.js","../../../../../../source/js/components/alert/alert-item.js","../../../../../../source/js/components/alert/alert-mediator.js","../../../../../../source/js/components/alert/alert-remove-form.js","../../../../../../source/js/components/alert/alerts-sort.js","../../../../../../source/js/components/alert/alerts-overview.js","../../../../../../source/js/components/alert/alerts-table.js","../../../../../../source/js/components/cookie-acceptance/config.js","../../../../../../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../../../../../../source/js/components/market-sentiment/market-sentiment-large.js","../../../../../../source/js/components/portfolio/portfolio-api.js","../../../../../../source/js/components/portfolio/portfolio-events.js","../../../../../../source/js/components/portfolio/portfolio-item-edit-form.js","../../../../../../source/js/components/portfolio/portfolio-item-add-button.js","../../../../../../source/js/components/portfolio/portfolio-item-remove-form.js","../../../../../../source/js/components/watchlist/watchlist-events.js","../../../../../../source/js/components/portfolio/portfolio-item.js","../../../../../../source/js/components/portfolio/portfolio-utils.js","../../../../../../source/js/components/portfolio/portfolio-performance.js","../../../../../../node_modules/lit-html/directives/repeat.js","../../../../../../source/js/components/portfolio/portfolio-table.js","../../../../../../source/js/components/watchlist/watchlist-api.js","../../../../../../source/js/components/portfolio/portfolio.js","../../../../../../source/js/utils/storage.js","../../../../../../node_modules/lodash.merge/index.js","../../../../../../source/js/chart/config/defaults.js","../../../../../../node_modules/highcharts/highstock.js","../../../../../../source/js/chart/config/tooltip.js","../../../../../../source/js/chart/config/base-config.js","../../../../../../source/js/chart/chart-base.js","../../../../../../source/js/chart/ui/period-selector.js","../../../../../../source/js/chart/ui/chart-type-selector.js","../../../../../../source/js/chart/ui/legend.js","../../../../../../source/js/components/product/product-chart.js","../../../../../../source/js/components/product/product-disclaimer.js","../../../../../../node_modules/nouislider/distribute/nouislider.js","../../../../../../source/js/components/product/product-filters-slider.js","../../../../../../source/js/components/product/product-filters-linked-fields.js","../../../../../../source/js/components/product/product-table.js","../../../../../../source/js/components/product-calculator/calculator-message-factory.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-events.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-options.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-period-selector.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-warrants.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-turbo-booster.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-cappe-floore.js","../../../../../../source/js/components/product-calculator/calculator-forms/calculator-form-factory.js","../../../../../../source/js/components/product-calculator/calculator-table/calculator-table.js","../../../../../../source/js/components/product-calculator/calculator-table/calculator-table-warrant.js","../../../../../../source/js/components/product-calculator/calculator-table/calculator-table-capped-bonus.js","../../../../../../source/js/components/product-calculator/calculator-table/calculator-table-default.js","../../../../../../source/js/components/product-calculator/calculator-table/calculator-table-factory.js","../../../../../../source/js/utils/load-script.js","../../../../../../source/js/components/social/twitter-feed.js","../../../../../../source/js/components/transaction-lookup/transaction-lookup-api.js","../../../../../../node_modules/lit-html/directives/if-defined.js","../../../../../../source/js/components/transaction-lookup/transaction-lookup-form.js","../../../../../../source/js/components/transaction-lookup/transaction-lookup.js","../../../../../../source/js/components/turbomap/turbomap-api.js","../../../../../../source/js/components/turbomap/turbomap-events.js","../../../../../../source/js/components/turbomap/turbomap-filters.js","../../../../../../source/js/components/turbomap/turbomap-header.js","../../../../../../node_modules/d3-array/src/ascending.js","../../../../../../node_modules/d3-array/src/descending.js","../../../../../../node_modules/d3-array/src/bisector.js","../../../../../../node_modules/d3-array/src/bisect.js","../../../../../../node_modules/d3-array/src/number.js","../../../../../../node_modules/internmap/src/index.js","../../../../../../node_modules/d3-array/src/ticks.js","../../../../../../node_modules/d3-axis/src/identity.js","../../../../../../node_modules/d3-axis/src/axis.js","../../../../../../node_modules/d3-dispatch/src/dispatch.js","../../../../../../node_modules/d3-selection/src/namespaces.js","../../../../../../node_modules/d3-selection/src/namespace.js","../../../../../../node_modules/d3-selection/src/creator.js","../../../../../../node_modules/d3-selection/src/selector.js","../../../../../../node_modules/d3-selection/src/array.js","../../../../../../node_modules/d3-selection/src/selectorAll.js","../../../../../../node_modules/d3-selection/src/matcher.js","../../../../../../node_modules/d3-selection/src/selection/selectChild.js","../../../../../../node_modules/d3-selection/src/selection/selectChildren.js","../../../../../../node_modules/d3-selection/src/selection/sparse.js","../../../../../../node_modules/d3-selection/src/selection/enter.js","../../../../../../node_modules/d3-selection/src/selection/data.js","../../../../../../node_modules/d3-selection/src/selection/sort.js","../../../../../../node_modules/d3-selection/src/selection/attr.js","../../../../../../node_modules/d3-selection/src/window.js","../../../../../../node_modules/d3-selection/src/selection/style.js","../../../../../../node_modules/d3-selection/src/selection/property.js","../../../../../../node_modules/d3-selection/src/selection/classed.js","../../../../../../node_modules/d3-selection/src/selection/text.js","../../../../../../node_modules/d3-selection/src/selection/html.js","../../../../../../node_modules/d3-selection/src/selection/raise.js","../../../../../../node_modules/d3-selection/src/selection/lower.js","../../../../../../node_modules/d3-selection/src/selection/insert.js","../../../../../../node_modules/d3-selection/src/selection/remove.js","../../../../../../node_modules/d3-selection/src/selection/clone.js","../../../../../../node_modules/d3-selection/src/selection/on.js","../../../../../../node_modules/d3-selection/src/selection/dispatch.js","../../../../../../node_modules/d3-selection/src/selection/index.js","../../../../../../node_modules/d3-selection/src/select.js","../../../../../../node_modules/d3-color/src/define.js","../../../../../../node_modules/d3-color/src/color.js","../../../../../../node_modules/d3-selection/src/selection/select.js","../../../../../../node_modules/d3-selection/src/selection/selectAll.js","../../../../../../node_modules/d3-selection/src/selection/filter.js","../../../../../../node_modules/d3-selection/src/constant.js","../../../../../../node_modules/d3-selection/src/selection/exit.js","../../../../../../node_modules/d3-selection/src/selection/join.js","../../../../../../node_modules/d3-selection/src/selection/merge.js","../../../../../../node_modules/d3-selection/src/selection/order.js","../../../../../../node_modules/d3-selection/src/selection/call.js","../../../../../../node_modules/d3-selection/src/selection/nodes.js","../../../../../../node_modules/d3-selection/src/selection/node.js","../../../../../../node_modules/d3-selection/src/selection/size.js","../../../../../../node_modules/d3-selection/src/selection/empty.js","../../../../../../node_modules/d3-selection/src/selection/each.js","../../../../../../node_modules/d3-selection/src/selection/append.js","../../../../../../node_modules/d3-selection/src/selection/datum.js","../../../../../../node_modules/d3-selection/src/selection/iterator.js","../../../../../../node_modules/d3-interpolate/src/constant.js","../../../../../../node_modules/d3-interpolate/src/color.js","../../../../../../node_modules/d3-interpolate/src/rgb.js","../../../../../../node_modules/d3-interpolate/src/numberArray.js","../../../../../../node_modules/d3-interpolate/src/array.js","../../../../../../node_modules/d3-interpolate/src/date.js","../../../../../../node_modules/d3-interpolate/src/number.js","../../../../../../node_modules/d3-interpolate/src/object.js","../../../../../../node_modules/d3-interpolate/src/string.js","../../../../../../node_modules/d3-interpolate/src/value.js","../../../../../../node_modules/d3-interpolate/src/round.js","../../../../../../node_modules/d3-interpolate/src/transform/decompose.js","../../../../../../node_modules/d3-interpolate/src/transform/parse.js","../../../../../../node_modules/d3-interpolate/src/transform/index.js","../../../../../../node_modules/d3-timer/src/timer.js","../../../../../../node_modules/d3-timer/src/timeout.js","../../../../../../node_modules/d3-transition/src/transition/schedule.js","../../../../../../node_modules/d3-transition/src/transition/tween.js","../../../../../../node_modules/d3-transition/src/transition/interpolate.js","../../../../../../node_modules/d3-transition/src/transition/attr.js","../../../../../../node_modules/d3-transition/src/transition/attrTween.js","../../../../../../node_modules/d3-transition/src/transition/delay.js","../../../../../../node_modules/d3-transition/src/transition/duration.js","../../../../../../node_modules/d3-transition/src/transition/selection.js","../../../../../../node_modules/d3-transition/src/transition/style.js","../../../../../../node_modules/d3-transition/src/transition/index.js","../../../../../../node_modules/d3-transition/src/transition/select.js","../../../../../../node_modules/d3-transition/src/transition/selectAll.js","../../../../../../node_modules/d3-transition/src/transition/filter.js","../../../../../../node_modules/d3-transition/src/transition/merge.js","../../../../../../node_modules/d3-transition/src/transition/transition.js","../../../../../../node_modules/d3-transition/src/transition/on.js","../../../../../../node_modules/d3-transition/src/transition/styleTween.js","../../../../../../node_modules/d3-transition/src/transition/text.js","../../../../../../node_modules/d3-transition/src/transition/textTween.js","../../../../../../node_modules/d3-transition/src/transition/remove.js","../../../../../../node_modules/d3-transition/src/transition/ease.js","../../../../../../node_modules/d3-transition/src/transition/easeVarying.js","../../../../../../node_modules/d3-transition/src/transition/end.js","../../../../../../node_modules/d3-transition/src/selection/transition.js","../../../../../../node_modules/d3-ease/src/cubic.js","../../../../../../node_modules/d3-format/src/formatDecimal.js","../../../../../../node_modules/d3-format/src/exponent.js","../../../../../../node_modules/d3-transition/src/selection/index.js","../../../../../../node_modules/d3-transition/src/selection/interrupt.js","../../../../../../node_modules/d3-transition/src/interrupt.js","../../../../../../node_modules/d3-format/src/formatSpecifier.js","../../../../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../../../../node_modules/d3-format/src/formatRounded.js","../../../../../../node_modules/d3-format/src/formatTypes.js","../../../../../../node_modules/d3-format/src/identity.js","../../../../../../node_modules/d3-format/src/locale.js","../../../../../../node_modules/d3-format/src/defaultLocale.js","../../../../../../node_modules/d3-format/src/formatGroup.js","../../../../../../node_modules/d3-format/src/formatNumerals.js","../../../../../../node_modules/d3-format/src/formatTrim.js","../../../../../../node_modules/d3-scale/src/init.js","../../../../../../node_modules/d3-scale/src/ordinal.js","../../../../../../node_modules/d3-scale/src/band.js","../../../../../../node_modules/d3-array/src/range.js","../../../../../../node_modules/d3-scale/src/number.js","../../../../../../node_modules/d3-scale/src/continuous.js","../../../../../../node_modules/d3-scale/src/constant.js","../../../../../../node_modules/d3-scale/src/tickFormat.js","../../../../../../node_modules/d3-format/src/precisionPrefix.js","../../../../../../node_modules/d3-format/src/precisionRound.js","../../../../../../node_modules/d3-format/src/precisionFixed.js","../../../../../../node_modules/d3-scale/src/linear.js","../../../../../../node_modules/d3-scale/src/pow.js","../../../../../../source/js/components/turbomap/turbomap-settings.js","../../../../../../source/js/components/turbomap/turbomap-utils.js","../../../../../../source/js/components/turbomap/turbomap-node-factory.js","../../../../../../source/js/utils/get-url-variables.js","../../../../../../node_modules/round-to/index.js","../../../../../../source/js/components/turbomap/turbomap-visual.js","../../../../../../node_modules/d3-selection/src/selectAll.js","../../../../../../source/js/components/turbomap/turbomap.js","../../../../../../source/js/components/turbomap/turbomap-product-detail.js","../../../../../../source/js/components/turbomap/turbomap-page.js","../../../../../../source/js/utils/scroll-to.js","../../../../../../source/js/chart/ui/plot-lines.js","../../../../../../source/js/components/underlying/underlying-sentiment.js","../../../../../../source/js/components/underlying-overview/underlying-overview-api.js","../../../../../../source/js/components/underlying-overview/underlying-overview-filters.js","../../../../../../source/js/components/underlying-overview/underlying-overview-item.js","../../../../../../source/js/components/underlying-overview/underlying-overview-table.js","../../../../../../source/js/components/underlying-overview/underlying-overview.js","../../../../../../source/js/components/watchlist/watchlist-item-remove-form.js","../../../../../../source/js/components/watchlist/watchlist-item-toggle-button.js","../../../../../../source/js/components/watchlist/watchlist-item.js","../../../../../../source/js/components/watchlist/watchlist-table.js","../../../../../../source/js/components/watchlist/watchlist.js","../../../../../../source/js/components/announcements.js","../../../../../../source/js/components/carousel.js","../../../../../../source/js/components/form-filters-reinitiate.js","../../../../../../source/js/components/group.js","../../../../../../source/js/components/logo.js","../../../../../../source/js/components/preferred-broker-selector.js","../../../../../../source/js/components/sidebar.js","../../../../../../source/js/components/account/account-delete-form.js","../../../../../../source/js/components/account/account-register.js","../../../../../../source/js/components/cookie-acceptance/cookie-notification.js","../../../../../../source/js/components/cookie-acceptance/cookie-preferences.js","../../../../../../source/js/components/flatex/iframe.js","../../../../../../source/js/components/form/checkbox-selection-validation.js","../../../../../../source/js/components/form/input-matches-input.js","../../../../../../source/js/components/form/input-validation.js","../../../../../../source/js/components/form/patterns-validator.js","../../../../../../source/js/components/product/product-filters.js","../../../../../../source/js/components/product/product-maximum-leverage-exceeded.js","../../../../../../source/js/components/product-calculator/product-calculator.js","../../../../../../source/js/components/underlying/underlying-chart.js","../../../../../../source/js/components/underlying/underlying-mini-chart.js","../../../../../../source/js/tracking/click-tracking.js","../../../../../../source/js/tracking/load-tracking.js","../../../../../../source/js/tracking/main.js","../../../../../../source/js/shared.js","../../../../../../source/js/main.js"],"sourcesContent":["try{self[\"workbox:window:6.0.2\"]&&_()}catch(n){}function n(n,t){return new Promise((function(r){var e=new MessageChannel;e.port1.onmessage=function(n){r(n.data)},n.postMessage(t,[e.port2])}))}function t(n,t){for(var r=0;rn.length)&&(t=n.length);for(var r=0,e=new Array(t);r=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(e=n[Symbol.iterator]()).next.bind(e)}try{self[\"workbox:core:6.0.2\"]&&_()}catch(n){}var i=function(){var n=this;this.promise=new Promise((function(t,r){n.resolve=t,n.reject=r}))};function o(n,t){var r=location.href;return new URL(n,r).href===new URL(t,r).href}var u=function(n,t){this.type=n,Object.assign(this,t)};function a(n,t,r){return r?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function c(){}var f={type:\"SKIP_WAITING\"};function s(n,t){if(!t)return n&&n.then?n.then(c):Promise.resolve()}var v=function(r){var e,c;function v(n,t){var e,c;return void 0===t&&(t={}),(e=r.call(this)||this).nn={},e.tn=0,e.rn=new i,e.en=new i,e.on=new i,e.un=0,e.an=new Set,e.cn=function(){var n=e.fn,t=n.installing;e.tn>0||!o(t.scriptURL,e.sn)||performance.now()>e.un+6e4?(e.vn=t,n.removeEventListener(\"updatefound\",e.cn)):(e.hn=t,e.an.add(t),e.rn.resolve(t)),++e.tn,t.addEventListener(\"statechange\",e.ln)},e.ln=function(n){var t=e.fn,r=n.target,i=r.state,o=r===e.vn,a={sw:r,isExternal:o,originalEvent:n};!o&&e.mn&&(a.isUpdate=!0),e.dispatchEvent(new u(i,a)),\"installed\"===i?e.wn=self.setTimeout((function(){\"installed\"===i&&t.waiting===r&&e.dispatchEvent(new u(\"waiting\",a))}),200):\"activating\"===i&&(clearTimeout(e.wn),o||e.en.resolve(r))},e.dn=function(n){var t=e.hn;t===navigator.serviceWorker.controller&&(e.dispatchEvent(new u(\"controlling\",{sw:t,originalEvent:n,isUpdate:e.mn})),e.on.resolve(t))},e.gn=(c=function(n){var t=n.data,r=n.source;return a(e.getSW(),(function(){e.an.has(r)&&e.dispatchEvent(new u(\"message\",{data:t,sw:r,originalEvent:n}))}))},function(){for(var n=[],t=0;t [ ['media', '(min-width:30em)', false, false], ['visible', 'true', false, true] ]\n\tvar parseQuery = function parseQuery(query) {\n\t\treturn query.match(queryRegex).map(extractParams);\n\t};\n\n\t// add intert and retain properties to monitor\n\tvar decorateMonitor = function decorateMonitor(monitor, invert, retain) {\n\t\tmonitor.invert = invert;\n\t\tmonitor.retain = retain;\n\t\tmonitor.matched = false;\n\t\treturn monitor;\n\t};\n\n\t// finds monitor plugins and calls the create method on the first found monitor\n\tvar getContextMonitor = function getContextMonitor(element, name, context) {\n\t\tvar monitor = getPlugins('monitor').find(function (monitor) {\n\t\t\treturn monitor.name === name;\n\t\t});\n\t\t// @exclude\n\t\tif (!monitor) {\n\t\t\tthrow new Error('Conditioner: Cannot find monitor with name \"@' + name + '\". Only the \"@media\" monitor is always available. Custom monitors can be added with the `addPlugin` method using the `monitors` key. The name of the custom monitor should not include the \"@\" symbol.');\n\t\t}\n\t\t// @endexclude\n\t\treturn monitor.create(context, element);\n\t};\n\n\t// test if monitor contexts are currently valid\n\tvar matchMonitors = function matchMonitors(monitors) {\n\t\treturn monitors.reduce(function (matches, monitor) {\n\t\t\t// an earlier monitor returned false, so current context will no longer be suitable\n\t\t\tif (!matches) return false;\n\n\t\t\t// get current match state, takes \"not\" into account\n\t\t\tvar matched = monitor.invert ? !monitor.matches : monitor.matches;\n\n\t\t\t// mark monitor as has been matched in the past\n\t\t\tif (matched) monitor.matched = true;\n\n\t\t\t// if retain is enabled with \"was\" and the monitor has been matched in the past, there's a match\n\t\t\tif (monitor.retain && monitor.matched) return true;\n\n\t\t\t// return current match state\n\t\t\treturn matched;\n\t\t},\n\n\t\t// initial value is always match\n\t\ttrue);\n\t};\n\n\tvar monitor = exports.monitor = function monitor(query, element) {\n\t\t// setup monitor api\n\t\tvar contextMonitor = {\n\t\t\tmatches: false,\n\t\t\tactive: false,\n\t\t\tonchange: function onchange() {},\n\t\t\tstart: function start() {\n\t\t\t\t// cannot be activated when already active\n\t\t\t\tif (contextMonitor.active) return;\n\n\t\t\t\t// now activating\n\t\t\t\tcontextMonitor.active = true;\n\n\t\t\t\t// listen for context changes\n\t\t\t\tmonitorSets.forEach(function (monitorSet) {\n\t\t\t\t\treturn monitorSet.forEach(function (monitor) {\n\t\t\t\t\t\treturn monitor.addListener(onMonitorEvent);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\t// get initial state\n\t\t\t\tonMonitorEvent();\n\t\t\t},\n\t\t\tstop: function stop() {\n\t\t\t\t// disable the monitor\n\t\t\t\tcontextMonitor.active = false;\n\n\t\t\t\t// disable\n\t\t\t\tmonitorSets.forEach(function (monitorSet) {\n\t\t\t\t\treturn monitorSet.forEach(function (monitor) {\n\t\t\t\t\t\t// stop listening (if possible)\n\t\t\t\t\t\tif (!monitor.removeListener) return;\n\t\t\t\t\t\tmonitor.removeListener(onMonitorEvent);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tdestroy: function destroy() {\n\t\t\t\tcontextMonitor.stop();\n\t\t\t\tmonitorSets.length = 0;\n\t\t\t}\n\t\t};\n\n\t\t// get different monitor sets (each 'or' creates a separate monitor set) > get monitors for each query\n\t\tvar monitorSets = query.split(' or ').map(function (subQuery) {\n\t\t\treturn parseQuery(subQuery).map(function (params) {\n\t\t\t\treturn decorateMonitor.apply(undefined, [getContextMonitor.apply(undefined, [element].concat(_toConsumableArray(params)))].concat(_toConsumableArray(params.splice(2))));\n\t\t\t});\n\t\t});\n\n\t\t// if all monitors return true for .matches getter, we mount the module\n\t\tvar onMonitorEvent = function onMonitorEvent() {\n\t\t\t// will keep returning false if one of the monitors does not match, else checks matches property\n\t\t\tvar matches = monitorSets.reduce(function (matches, monitorSet) {\n\t\t\t\treturn (\n\t\t\t\t\t// if one of the sets is true, it's all fine, no need to match the other sets\n\t\t\t\t\tmatches ? true : matchMonitors(monitorSet)\n\t\t\t\t);\n\t\t\t}, false);\n\n\t\t\t// store new state\n\t\t\tcontextMonitor.matches = matches;\n\n\t\t\t// if matches we mount the module, else we unmount\n\t\t\tcontextMonitor.onchange(matches);\n\t\t};\n\n\t\treturn contextMonitor;\n\t};\n\n\t// handles contextual loading and unloading\n\tvar createContextualModule = function createContextualModule(query, boundModule) {\n\t\t// setup query monitor\n\t\tvar moduleMonitor = monitor(query, boundModule.element);\n\t\tmoduleMonitor.onchange = function (matches) {\n\t\t\treturn matches ? boundModule.mount() : boundModule.unmount();\n\t\t};\n\n\t\t// start monitoring\n\t\tmoduleMonitor.start();\n\n\t\t// export monitor\n\t\treturn moduleMonitor;\n\t};\n\n\t// pass in an element and outputs a bound module object, will wrap bound module in a contextual module if required\n\tvar createModule = function createModule(element) {\n\n\t\t// called when the module is destroyed\n\t\tvar unbindModule = function unbindModule() {\n\t\t\treturn monitor && monitor.destroy();\n\t\t};\n\n\t\t// bind the module to the element and receive the module wrapper API\n\t\tvar boundModule = bindModule(element, unbindModule);\n\n\t\t// get context requirements for this module (if any have been defined)\n\t\tvar query = runPlugin('moduleGetContext', element);\n\n\t\t// wait for the right context or load the module immidiately if no context supplied\n\t\tvar monitor = query && createContextualModule(query, boundModule);\n\n\t\t// return module\n\t\treturn query ? boundModule : boundModule.mount();\n\t};\n\n\t// parse a certain section of the DOM and load bound modules\n\tvar hydrate = exports.hydrate = function hydrate(context) {\n\t\treturn [].concat(_toConsumableArray(runPlugin('moduleSelector', context))).map(createModule);\n\t};\n\n\t// all registered plugins\n\tvar plugins = [];\n\n\t// array includes 'polyfill', Array.prototype.includes was the only feature not supported on Edge\n\tvar includes = function includes(arr, value) {\n\t\treturn arr.indexOf(value) > -1;\n\t};\n\n\t// plugins are stored in an array as multiple plugins can subscribe to one hook\n\tvar addPlugin = exports.addPlugin = function addPlugin(plugin) {\n\t\treturn plugins.push(plugin);\n\t};\n\n\t// returns the plugins that match the requested type, as plugins can subscribe to multiple hooks we need to loop over the plugin keys to see if it matches\n\tvar getPlugins = function getPlugins(type) {\n\t\treturn plugins.filter(function (plugin) {\n\t\t\treturn includes(Object.keys(plugin), type);\n\t\t}).map(function (plugin) {\n\t\t\treturn plugin[type];\n\t\t});\n\t};\n\n\t// run for each of the registered plugins\n\tvar eachPlugins = function eachPlugins(type) {\n\t\tfor (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t\targs[_key - 1] = arguments[_key];\n\t\t}\n\n\t\treturn getPlugins(type).forEach(function (plugin) {\n\t\t\treturn plugin.apply(undefined, args);\n\t\t});\n\t};\n\n\t// run registered plugins but chain input -> output (sync)\n\tvar chainPlugins = function chainPlugins(type) {\n\t\tfor (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n\t\t\targs[_key2 - 1] = arguments[_key2];\n\t\t}\n\n\t\treturn getPlugins(type).reduce(function (args, plugin) {\n\t\t\treturn [plugin.apply(undefined, _toConsumableArray(args))];\n\t\t}, args).shift();\n\t};\n\n\t// run on last registered plugin\n\tvar runPlugin = function runPlugin(type) {\n\t\tfor (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n\t\t\targs[_key3 - 1] = arguments[_key3];\n\t\t}\n\n\t\treturn getPlugins(type).pop().apply(undefined, args);\n\t};\n\n\t// default plugin configuration\n\taddPlugin({\n\t\t// select all elements that have modules assigned to them\n\t\tmoduleSelector: function moduleSelector(context) {\n\t\t\treturn context.querySelectorAll('[data-module]');\n\t\t},\n\n\t\t// returns the context query as defined on the element\n\t\tmoduleGetContext: function moduleGetContext(element) {\n\t\t\treturn element.dataset.context;\n\t\t},\n\n\t\t// load the referenced module, by default searches global scope for module name\n\t\tmoduleImport: function moduleImport(name) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tif (self[name]) return resolve(self[name]);\n\t\t\t\t// @exclude\n\t\t\t\treject('Cannot find module with name \"' + name + '\". By default Conditioner will import modules from the global scope, make sure a function named \"' + name + '\" is defined on the window object. The scope of a function defined with `let` or `const` is limited to the