@nebula.js/sn-distributionplot 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sn-distplot.systemjs.js","sources":["../src/index.js","../../../chart-modules/common/locale/index.js","../../../chart-modules/common/picasso/picasso-setup.js","../../../node_modules/picasso-plugin-hammer/src/index.js","../../../chart-modules/common/nebula/use-environment.js","../../../chart-modules/common/nebula/use-lasso.js","../../../chart-modules/common/nebula/snapshot.js","../../../chart-modules/common/nebula/resize.js","../../../node_modules/jquery/dist/jquery.js","../../../node_modules/picasso-plugin-hammer/src/hammer.js","../../../node_modules/hammerjs/hammer.js","../../../chart-modules/common/picasso/plugins/event-area.js","../../../chart-modules/common/picasso/disclaimer/disclaimer-component.jsx","../../../chart-modules/common/nebula/lasso-icon.js","../../../node_modules/qlik-chart-modules/dist/qlik-chart-modules.esm.js","../../../chart-modules/common/extra/class.js","../../../chart-modules/common/extra/backend-api/rect.js","../../../chart-modules/common/extra/backend-api/cube-slicer.js","../../../chart-modules/common/extra/backend-api/pivot-cube-slicer.js","../../../chart-modules/common/extra/backend-api/snapshot-api.js","../src/object-properties.js","../src/distributionplot-data.js","../../../node_modules/qlik-object-conversion/dist/conversion.js","../src/distributionplot-color-by.js","../src/distributionplot-import-export.js","../src/distributionplot-qae.js","../../../node_modules/extend/index.js","../../../chart-modules/common/picasso/expression-generator/expression-wrapper.js","../../../chart-modules/common/picasso/expression-generator/expression-replacer.js","../../../chart-modules/common/picasso/expression-generator/expression-generator.js","../../../chart-modules/common/picasso/hypercube-def-generator/hypercube-def-generator.js","../../../chart-modules/common/extra/sort-order/convert-functions.js","../../../chart-modules/common/extra/sort-order/sort-order.js","../src/distributionplot-constants.js","../src/distributionplot-utils.js","../../../chart-modules/common/extra/attribute-expression-util.js","../../../chart-modules/common/extra/property-logic-helper.js","../../../chart-modules/common/extra/number-format-util.js","../../../chart-modules/common/picasso/advanced-colorer.js","../src/distributionplot-properties-logic.js","../../../chart-modules/common/picasso/sorting/base-derived/Sorter.js","../../../chart-modules/common/picasso/sorting/base-derived/sorter-factory.js","../../../chart-modules/common/picasso/sorting/base-derived/sorter-facade.js","../../../chart-modules/common/picasso/sorting/base-derived/sorter-base-sorting-settings.js","../src/sorting/distributionplot-sorting-settings.js","../src/sorting/distributionplot-sorting-settings-retriever.js","../src/sorting/distributionplot-sorting-elements-retriever.js","../src/sorting/distributionplot-sorter.js","../src/sorting/distributionplot-expression-sort-orderer.js","../src/styling-panel-definition.js","../src/distributionplot-properties.js","../../../chart-modules/common/picasso/sorting/base-derived/explore-properties-sorting-definition-builder.js","../src/distributionplot-explore-properties.js","../src/ext.js","../../../chart-modules/common/extra/generate-id.js","../../../chart-modules/common/picasso/scroll/scroll-actions.js","../../../chart-modules/common/picasso/chart-builder/components/util/axis-dock-util.js","../../../chart-modules/common/extra/rtl-util.js","../../../chart-modules/common/picasso/chart-builder/components/util/ref-line-util.js","../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/constants.js","../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/layout-settings.js","../../../chart-modules/common/picasso/chart-builder/presets/dimension-measure-chart/dimension-measure-chart.js","../../../chart-modules/common/picasso/chart-builder/scale.js","../../../chart-modules/common/picasso/chart-builder/components/axis.js","../../../chart-modules/common/picasso/chart-builder/components/text.js","../../../chart-modules/common/picasso/chart-builder/components/util/range-util.js","../../../chart-modules/common/picasso/chart-builder/layout-modes.js","../../../chart-modules/common/picasso/chart-builder/components/labels.js","../../../chart-modules/common/picasso/chart-builder/components/categorical-legend.js","../../../chart-modules/common/picasso/chart-builder/chart-builder.js","../../../chart-modules/common/picasso/chart-builder/components/box-marker.js","../../../chart-modules/common/picasso/chart-builder/components/point-marker.js","../../../chart-modules/common/picasso/chart-builder/components/scrollbar.js","../../../chart-modules/common/picasso/chart-builder/components/lasso.js","../../../chart-modules/common/picasso/chart-builder/components/range.js","../../../chart-modules/common/picasso/chart-builder/components/range-area.js","../../../chart-modules/common/picasso/chart-builder/components/sequential-legend.js","../../../chart-modules/common/picasso/chart-builder/components/grid-line.js","../../../chart-modules/common/picasso/chart-builder/components/interaction.js","../../../chart-modules/common/picasso/chart-builder/components/ref-line.js","../../../chart-modules/common/picasso/chart-builder/components/event-area.js","../../../chart-modules/common/picasso/chart-builder/chart-presets.js","../../../chart-modules/common/picasso/disclaimer/disclaimers-config.js","../../../chart-modules/common/picasso/disclaimer/disclaimer-attributes-util.js","../../../chart-modules/common/picasso/disclaimer/disclaimer-component-helper.js","../../../chart-modules/common/picasso/disclaimer/disclaimer.js","../../../chart-modules/common/picasso/chart-view.js","../../../chart-modules/common/extra/hash-from-string.js","../../../chart-modules/common/picasso/derived-properties/hash/hash.js","../../../chart-modules/common/picasso/derived-properties/hash/hash-builder.js","../../../chart-modules/common/extra/json-patch.js","../../../chart-modules/common/extra/soft-property-handler.js","../../../chart-modules/common/extra/hard-properties-checker.js","../../../chart-modules/common/picasso/derived-properties/save/save.js","../../../chart-modules/common/picasso/derived-properties/input-validator/input-validator.js","../../../chart-modules/common/picasso/derived-properties/derived-properties.js","../../../node_modules/picasso-plugin-q/node_modules/extend/index.js","../../../node_modules/picasso-plugin-q/src/data/extractor-s.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/count.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/each.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/sum.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/sort.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/path.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/links.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/hierarchy/index.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/accessors.js","../../../node_modules/picasso-plugin-q/node_modules/d3-hierarchy/src/stratify.js","../../../node_modules/picasso-plugin-q/src/json-path-resolver.js","../../../node_modules/picasso-plugin-q/src/data/util.js","../../../node_modules/picasso-plugin-q/src/data/extractor-t.js","../../../node_modules/picasso-plugin-q/node_modules/number-format.js/lib/format.min.js","../../../node_modules/picasso-plugin-q/src/formatter/parts/qs-number-formatter.js","../../../node_modules/picasso-plugin-q/src/formatter/memoize.js","../../../node_modules/picasso-plugin-q/src/formatter/numberFormat.js","../../../node_modules/picasso-plugin-q/src/formatter/constants.js","../../../node_modules/picasso-plugin-q/src/formatter/parts/qs-date-formatter.js","../../../node_modules/picasso-plugin-q/src/formatter/timeFormat.js","../../../node_modules/picasso-plugin-q/src/formatter/index.js","../../../node_modules/picasso-plugin-q/src/data/field.js","../../../node_modules/picasso-plugin-q/src/data/dataset.js","../../../node_modules/picasso-plugin-q/src/brush/q-brush.js","../../../node_modules/picasso-plugin-q/src/index.js","../../../chart-modules/common/picasso/selections/selection-utils.js","../../../chart-modules/common/picasso/selections/selections-handler.js","../../../chart-modules/common/picasso/selections/selection-actions.js","../../../chart-modules/common/picasso/selections/gestures/on-component-checker.js","../../../chart-modules/common/picasso/selections/gestures/lasso-gesture.js","../../../chart-modules/common/picasso/selections/gestures/measure-range-gesture.js","../../../chart-modules/common/picasso/selections/gestures/area-range-gesture.js","../../../chart-modules/common/picasso/selections/gestures/dimension-range-gesture.js","../../../chart-modules/common/picasso/selections/gestures/drag-gesture.js","../../../chart-modules/common/picasso/selections/gestures/navigational-button-gesture.js","../../../chart-modules/common/picasso/selections/dependent-interactions.js","../../../chart-modules/common/picasso/tooltip/tooltip-actions.js","../../../chart-modules/common/picasso/formatting.js","../../../chart-modules/common/picasso/tooltip/tooltip-content.js","../../../chart-modules/common/picasso/tooltip/tooltips-component.js","../../../chart-modules/common/picasso/tooltip/tooltip-renderer.jsx","../../../chart-modules/common/picasso/tooltip/tooltips-handler.js","../../../chart-modules/common/picasso/scroll/scroll-handler.js","../../../chart-modules/common/extra/string-util.js","../../../chart-modules/common/extra/css-colors.js","../../../chart-modules/common/extra/color.js","../../../chart-modules/common/extra/chart-style-utils.js","../../../chart-modules/common/extra/hypercube-util.js","../src/jitter.js","../src/distributionplot-column-order-adapter.js","../src/distributionplot-cube-generator.js","../src/create-color-service.js","../src/distributionplot-view.js","../../../chart-modules/common/extra/backend-api/engine-throttle.js","../../../chart-modules/common/extra/backend-api/stacked-cube-slicer.js","../../../chart-modules/common/extra/backend-api/cache-cube.js","../src/backend-api.js"],"sourcesContent":["import {\n useConstraints,\n useEffect,\n useElement,\n useModel,\n usePromise,\n useRenderState,\n useSelections,\n useState,\n useStaleLayout,\n} from '@nebula.js/stardust';\nimport $ from 'jquery';\nimport locale from '@qlik/common/locale';\nimport picassoSetup from '@qlik/common/picasso/picasso-setup';\nimport useLasso from '@qlik/common/nebula/use-lasso';\nimport useResize from '@qlik/common/nebula/resize';\nimport useEnvironment from '@qlik/common/nebula/use-environment';\nimport setupSnapshot from '@qlik/common/nebula/snapshot';\nimport SnapshotAPI from '@qlik/common/extra/backend-api/snapshot-api';\n\nimport qae from './distributionplot-qae';\nimport ext from './ext';\nimport ChartView from './distributionplot-view';\nimport BackednAPI from './backend-api';\n\nfunction getBackedApi(model, layout) {\n const isSnapshot = !!layout.snapshotData;\n if (isSnapshot) {\n return new SnapshotAPI(layout, 'qUndoExclude.qHyperCube', 'qStackedDataPages');\n }\n return new BackednAPI(model);\n}\n\nexport default function supernova(env) {\n locale(env.translator);\n const picasso = picassoSetup();\n\n return {\n qae: qae(env),\n ext: ext(env),\n component() {\n const element = useElement();\n const environment = useEnvironment();\n const selections = useSelections();\n const layout = useStaleLayout();\n const model = useModel();\n const constraints = useConstraints();\n const lasso = useLasso();\n const renderState = useRenderState();\n\n const [instance, setInstance] = useState();\n\n useEffect(() => {\n const $element = $(element);\n const backendApi = getBackedApi(model, layout);\n const selectionsApi = selections;\n const view = new ChartView({\n environment,\n lasso,\n flags: env.flags,\n picasso,\n $element,\n backendApi,\n selectionsApi,\n });\n setInstance(view);\n\n return () => {\n view.destroy();\n };\n }, []);\n\n const [, error] = usePromise(async () => {\n if (!instance) {\n return;\n }\n instance.updateEnvironment(environment);\n instance.updateConstraints(constraints);\n\n const isSnapshot = !!layout.snapshotData;\n if (!isSnapshot) {\n const properties = await model.getEffectiveProperties();\n const updatingDerivedProperties = await instance.updateDerivedProperties(properties, layout);\n if (updatingDerivedProperties) {\n renderState.pending();\n return;\n }\n renderState.restore();\n }\n\n // TODO: confim selection if triggered from engine (another websocket to the same session (browser tab))\n\n await instance.updateData(layout);\n await instance.paint();\n }, [layout, instance, environment]);\n if (error) {\n throw error;\n }\n\n useResize(instance);\n setupSnapshot(instance);\n },\n };\n}\n","import all from './all.json';\n\nexport default function autoRegister(translator) {\n if (translator && translator.get && translator.add) {\n const t = 'Object.Disclaimer.LimitedData';\n const g = translator.get(t);\n // if translated string is different from its id\n // assume translations already exists for current locale\n if (g !== t) {\n return;\n }\n\n Object.keys(all).forEach((key) => {\n translator.add(all[key]);\n });\n }\n}\n","import picassojs from 'picasso.js';\nimport PicassoQ from 'picasso-plugin-q';\nimport PicassoHammer from 'picasso-plugin-hammer';\nimport Hammer from 'hammerjs';\nimport eventArea from './plugins/event-area';\nimport disclaimer from './disclaimer/disclaimer-component.jsx';\n\nexport default function setup() {\n const picasso = picassojs();\n // default to use canvas renderer\n picasso.renderer.prio(['canvas']);\n\n // TODO: investigate picasso warnings\n // if (DebugFlags.DEVELOPER) {\n // picasso.logger.level(picassojs.logger.LOG_LEVEL.WARN);\n // }\n\n picasso.use(PicassoQ);\n picasso.use(PicassoHammer(Hammer));\n picasso.use(eventArea);\n picasso.component('disclaimer', disclaimer);\n return picasso;\n}\n","/* global Hammer */\nimport hammer from './hammer';\n\nexport default function initialize(picassoOrHammer) {\n const isPicasso = typeof picassoOrHammer.interaction === 'function';\n if (!isPicasso) {\n return (picasso) => {\n picasso.interaction('hammer', hammer(picassoOrHammer));\n };\n }\n picassoOrHammer.interaction('hammer', hammer(Hammer));\n return undefined;\n}\n","import { useApp, useAppLayout, useTranslator, useOptions, useMemo, useTheme, useDeviceType } from '@nebula.js/stardust';\n\nexport default function useEnvironment() {\n const app = useApp();\n const appLayout = useAppLayout();\n const deviceType = useDeviceType();\n const options = useOptions();\n const theme = useTheme();\n const translator = useTranslator();\n\n const environment = useMemo(\n () => ({\n app,\n appLayout,\n deviceType,\n options,\n theme,\n translator,\n }),\n [app, appLayout, options.direction, options.freeResize, translator.language(), theme.name(), deviceType]\n );\n\n return environment;\n}\n","import { useAction, useConstraints, useEffect, useLayout, useState } from '@nebula.js/stardust';\nimport lassoIcon from './lasso-icon';\n\nexport default function useSelect() {\n const constraints = useConstraints();\n const [enabled, setEnabled] = useState(false);\n const [active, setActive] = useState(false);\n const isInSelections = !!useLayout().qSelectionInfo.qInSelections;\n const [lasso] = useState(() => ({\n toggle() {\n setActive((a) => !a);\n },\n }));\n\n useEffect(() => {\n if (!constraints) {\n return;\n }\n\n setEnabled(!constraints.select && !constraints.active);\n }, [constraints]);\n\n useAction(\n () => ({\n key: 'lasso',\n label: 'Lasso',\n icon: lassoIcon,\n hidden: !enabled || !isInSelections,\n active,\n action() {\n setActive((a) => !a);\n },\n }),\n [isInSelections, active, enabled]\n );\n\n lasso.enabled = () => enabled;\n lasso.active = () => active;\n return lasso;\n}\n","import { onTakeSnapshot, useImperativeHandle } from '@nebula.js/stardust';\n\nconst setupSnapshot = (chartInstance) => {\n onTakeSnapshot((layout) => {\n if (!chartInstance) {\n return undefined;\n }\n\n return chartInstance.setSnapshotData(layout);\n });\n\n useImperativeHandle(\n () => ({\n getViewState() {\n if (!chartInstance) {\n return undefined;\n }\n return chartInstance.getViewState();\n },\n }),\n [chartInstance]\n );\n};\n\nexport default setupSnapshot;\n","import { useConstraints, useOptions, usePromise, useRect } from '@nebula.js/stardust';\n\nexport default function useResize(chartInstance) {\n const rect = useRect();\n const options = useOptions();\n const constraints = useConstraints();\n\n const [, error] = usePromise(async () => {\n if (!chartInstance) {\n return;\n }\n chartInstance.updateConstraints(constraints);\n chartInstance.options = options;\n await chartInstance.resize();\n }, [rect.width, rect.height]);\n\n if (error) {\n throw error;\n }\n}\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\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}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\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\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\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\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\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\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","const translateKnownTypes = {\n click: 'Tap',\n Click: 'Tap',\n tap: 'Tap',\n pan: 'Pan',\n swipe: 'Swipe',\n rotate: 'Rotate',\n press: 'Press',\n pinch: 'Pinch',\n};\n\n/**\n * Helper function for translating typical non-hammer gesture to a hammer gesture. Currently only supporting 'click'\n * @param {String} type Gesture type\n * @private\n */\nfunction getGestureType(type) {\n return translateKnownTypes[type] || type;\n}\n\n/**\n * Manages event handlers for HammerJS.\n * @param {Hammer} Hammered - The Hammer instance\n */\nfunction hammered(Hammered) {\n return function hammer(chart, mediator, element) {\n let settings;\n let instance;\n let mc;\n let key;\n let hammerGestures = [];\n let isOn = true;\n /**\n * Set default settings\n * @private\n */\n function setDefaultSettings(newSettings) {\n key = newSettings.key; //eslint-disable-line\n settings = newSettings;\n instance = { chart, mediator, settings };\n settings.gestures = settings.gestures || [];\n if (settings.enable === undefined) {\n settings.enable = true;\n }\n }\n\n /**\n * @private\n * add hammer recognizers based on settings\n */\n function addRecognizers() {\n if (typeof settings.enable === 'function') {\n settings.enable = settings.enable.bind(instance)();\n }\n if (!settings.enable) {\n return; // interaction is disabled\n }\n settings.gestures.forEach((gesture) => {\n gesture.options = gesture.options || {};\n // handle action enable\n if (gesture.options.enable === undefined) {\n gesture.options.enable = true;\n }\n if (typeof gesture.options.enable === 'function') {\n gesture.options.enable = gesture.options.enable.bind(instance);\n }\n // setup hammer gestures\n const type = getGestureType(gesture.type);\n if (Hammered && Hammered[type]) {\n gesture.options.event = gesture.options.event || gesture.type.toLowerCase();\n mc = mc || new Hammered.Manager(element);\n mc.add(new Hammered[type](gesture.options));\n Object.keys(gesture.events).forEach((eventName) => {\n gesture.events[eventName] = gesture.events[eventName].bind(instance);\n mc.on(eventName, gesture.events[eventName]);\n });\n hammerGestures.push(gesture);\n }\n });\n\n // setup mixing hammer gestures\n settings.gestures.forEach((gesture) => {\n const type = getGestureType(gesture.type);\n if (Hammered && Hammered[type]) {\n if (gesture.recognizeWith) {\n mc.get(gesture.options.event).recognizeWith(gesture.recognizeWith.split(' ').filter((e) => e !== ''));\n }\n if (gesture.requireFailure) {\n mc.get(gesture.options.event).requireFailure(gesture.requireFailure.split(' ').filter((e) => e !== ''));\n }\n }\n });\n }\n /**\n * @private\n * removes all added hammer recognizers and native events\n */\n function removeAddedEvents() {\n // remove hammer recognizers and registered events\n hammerGestures.forEach((gesture) => {\n Object.keys(gesture.events).forEach((eventName) => {\n mc.off(eventName, gesture.events[eventName]);\n });\n mc.remove(gesture.options.event);\n });\n hammerGestures = [];\n }\n\n return {\n /**\n * Getter for the key.\n */\n get key() {\n return key;\n },\n /**\n * Updates this with new settings\n * @typedef settings\n * @type {object}\n * @property {string} [type] - The interaction type. Is 'hammer' for this component\n * @property {boolean|function} [enable] - Should the interaction be enabled or not.\n * This is only run when adding event handlers. In effect at startup, update or during on/off.\n * It does not run during every event loop.\n * @property {object} [events] - The keys in this object is the names of native events\n * that should be added to the chart element and they should all point to function which\n * will be the corresponding event handler.\n */\n set(newSettings) {\n setDefaultSettings(newSettings);\n removeAddedEvents();\n if (isOn) {\n addRecognizers();\n }\n },\n /**\n * Turns off interactions\n */\n off() {\n isOn = false;\n removeAddedEvents();\n },\n /**\n * Turns off interactions\n */\n on() {\n isOn = true;\n if (hammerGestures.length === 0) {\n addRecognizers();\n }\n },\n /**\n * Destroys and unbinds all event handlers\n */\n destroy() {\n removeAddedEvents();\n if (mc) {\n mc.destroy();\n }\n mc = null;\n instance = null;\n settings = null;\n },\n };\n };\n}\n\nexport default hammered;\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","export default function init(Picasso) {\n // Transparent component, placed on top of the data area and used to register event on\n Picasso.component('event-area', {\n mounted(element) {\n element.classList.add('event-area');\n element.style.pointerEvents = 'auto';\n element.style.zIndex = 1;\n },\n render() {\n const nodes = [];\n return nodes;\n },\n });\n}\n","/** @jsx h */\n\nfunction getStyle(dock, rect) {\n const style = {\n pointerEvents: 'auto',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#7b7a78',\n fontStyle: 'italic',\n fontSize: '13px',\n };\n\n switch (dock) {\n case 'left':\n style.width = `${rect.height}px`;\n style.transform = `rotate(-90deg) translate(-${rect.height}px, 0)`;\n style.transformOrigin = 'top left';\n break;\n\n case 'right':\n style.width = `${rect.height}px`;\n style.transform = `rotate(90deg) translate(0, -${rect.width}px)`;\n style.transformOrigin = 'top left';\n break;\n\n case 'center':\n style.width = `${rect.width}px`;\n style.height = `${rect.height}px`;\n style.color = '#595959';\n style.fontStyle = 'normal';\n style.fontSize = '1.2em';\n style.textAlign = 'center';\n break;\n\n default:\n case 'top':\n case 'bottom':\n style.justifyContent = 'flex-start';\n style.alignItems = 'flex-start';\n break;\n }\n return style;\n}\n\nexport default {\n renderer: 'dom',\n disableTriggers: true,\n preferredSize: function preferredSize() {\n return 22;\n },\n render(h) {\n const {\n settings: { label, rtl },\n layout: { dock },\n } = this.settings;\n const dir = (dock === 'top' || dock === 'bottom') && rtl ? 'rtl' : 'ltr';\n const style = getStyle(dock, this.rect);\n\n const modifiedLabel = dock === 'center' ? label : `* ${label}`;\n\n const spanStyle = dock !== 'center' ? { overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis' } : {};\n\n return (\n <div style={style} dir={dir}>\n <span ref={this.alignToRef} style={spanStyle} title={modifiedLabel}>\n {modifiedLabel}\n </span>\n </div>\n );\n },\n};\n","const lassoIcon = {\n shapes: [\n {\n type: 'path',\n attrs: {\n d: 'M15.9488039,5.20769129 C16.0487326,6.70662306 15.3492311,8.30548361 14.050157,9.30477145 C12.651154,10.5039169 10.8524359,10.8037032 8.85386017,10.4039881 L7.3549284,10.0042729 L5.75606786,9.70448659 C5.75606786,9.90434416 5.65613907,10.0042729 5.4562815,10.2041305 C5.05656637,10.6038456 4.55692244,10.8037032 4.05727852,10.8037032 C3.75749217,10.8037032 3.45770582,10.7037744 3.15791946,10.6038456 C3.05799068,10.903632 3.15791946,11.2034184 3.45770582,11.7030623 C5.05656637,14.0014243 3.85742095,15.9000712 3.75749217,16 L2.2585604,15.3004985 C2.2585604,15.2005697 2.95806189,14.0014243 1.95877405,12.6024213 C1.6589877,12.0028486 1.15934378,11.0035608 1.55905891,10.0042729 C1.6589877,9.80441537 1.75891648,9.6045578 1.95877405,9.40470024 C1.6589877,8.90505631 1.55905891,8.30548361 1.85884527,7.7059109 C1.55905891,7.40612455 1.25927256,7.1063382 1.15934378,6.70662306 C0.859557424,5.90719279 0.959486209,4.5081898 1.6589877,3.30904439 C1.95877405,2.6095429 2.55834676,2.0099702 3.15791946,1.51032628 C3.95734974,0.91075357 4.95663758,0.610967217 6.15578299,0.311180864 C9.05371774,-0.388320626 11.9516525,0.111323295 13.9502282,1.61025506 C15.1493736,2.50961412 15.8488751,3.80868831 15.9488039,5.20769129 Z M13.0508691,8.10562604 C13.8502994,7.40612455 14.3499433,6.40683671 14.3499433,5.30762008 C14.2500145,4.20840345 13.550513,3.40897318 12.9509403,2.90932926 C12.1515101,2.40968533 11.252151,2.0099702 10.1529344,1.81011263 C8.95378895,1.61025506 7.75464354,1.71018384 6.45556935,1.91004141 C4.75678001,2.30975655 3.65756338,3.00925804 3.05799068,4.10847467 C2.55834676,5.00783373 2.65827554,5.90719279 2.75820433,6.20697914 C2.75820433,6.30690792 2.85813311,6.40683671 3.05799068,6.40683671 C3.15791946,6.40683671 3.25784825,6.40683671 3.35777703,6.40683671 C3.45770582,6.40683671 3.45770582,6.40683671 3.45770582,6.40683671 L3.5576346,6.40683671 L3.65756338,6.40683671 C4.65685123,6.40683671 5.4562815,6.90648063 5.85599664,7.80583969 L5.85599664,8.00569726 C6.35564056,8.10562604 7.05514205,8.30548361 7.75464354,8.50534118 L9.25357531,8.90505631 C10.0530056,9.0049851 10.7525071,9.0049851 11.4520086,8.80512753 C12.0515813,8.70519875 12.5512252,8.40541239 13.0508691,8.10562604 Z',\n },\n },\n ],\n};\n\nexport default lassoIcon;\n","/*\n* qlik-chart-modules v0.44.0\n* Copyright (c) 2022 QlikTech International AB\n* Released under the MIT license.\n*/\n\nfunction e(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 t(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function n(){n=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,o=\"function\"==typeof Symbol?Symbol:{},i=o.iterator||\"@@iterator\",a=o.asyncIterator||\"@@asyncIterator\",u=o.toStringTag||\"@@toStringTag\";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},\"\")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var o=t&&t.prototype instanceof d?t:d,i=Object.create(o.prototype),a=new k(r||[]);return i._invoke=function(e,t,n){var r=\"suspendedStart\";return function(o,i){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=q(a,n);if(u){if(u===f)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var l=s(e,t,n);if(\"normal\"===l.type){if(r=n.done?\"completed\":\"suspendedYield\",l.arg===f)continue;return{value:l.arg,done:n.done}}\"throw\"===l.type&&(r=\"completed\",n.method=\"throw\",n.arg=l.arg)}}}(e,n,a),i}function s(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=c;var f={};function d(){}function p(){}function v(){}var h={};l(h,i,(function(){return this}));var m=Object.getPrototypeOf,y=m&&m(m(C([])));y&&y!==t&&r.call(y,i)&&(h=y);var g=v.prototype=d.prototype=Object.create(h);function b(e){[\"next\",\"throw\",\"return\"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function n(o,i,a,u){var l=s(e[o],e,i);if(\"throw\"!==l.type){var c=l.arg,f=c.value;return f&&\"object\"==typeof f&&r.call(f,\"__await\")?t.resolve(f.__await).then((function(e){n(\"next\",e,a,u)}),(function(e){n(\"throw\",e,a,u)})):t.resolve(f).then((function(e){c.value=e,a(c)}),(function(e){return n(\"throw\",e,a,u)}))}u(l.arg)}var o;this._invoke=function(e,r){function i(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(i,i):i()}}function q(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,q(e,t),\"throw\"===t.method))return f;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return f}var r=s(n,e.iterator,t.arg);if(\"throw\"===r.type)return t.method=\"throw\",t.arg=r.arg,t.delegate=null,f;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,f):o:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,f)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function M(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(w,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:S}}function S(){return{value:void 0,done:!0}}return p.prototype=v,l(g,\"constructor\",v),l(v,\"constructor\",p),p.displayName=l(v,u,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===p||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,l(e,u,\"GeneratorFunction\")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},b(x.prototype),l(x.prototype,a,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new x(c(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(g),l(g,u,\"Generator\"),l(g,i,(function(){return this})),l(g,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=C,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=void 0,this.tryEntries.forEach(M),!e)for(var t in this)\"t\"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return a.type=\"throw\",a.arg=e,t.next=n,r&&(t.method=\"next\",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return n(\"end\");if(i.tryLoc<=this.prev){var u=r.call(i,\"catchLoc\"),l=r.call(i,\"finallyLoc\");if(u&&l){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!l)throw new Error(\"try statement without catch or finally\");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===e||\"continue\"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method=\"next\",this.next=i.finallyLoc,f):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),M(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;M(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),f}},e}function r(e){return r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},r(e)}function o(e,t,n,r,o,i,a){try{var u=e[i](a),l=u.value}catch(e){return void n(e)}u.done?t(l):Promise.resolve(l).then(r,o)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var a=e.apply(t,n);function u(e){o(a,r,i,u,l,\"next\",e)}function l(e){o(a,r,i,u,l,\"throw\",e)}u(void 0)}))}}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==n)return;var r,o,i=[],a=!0,u=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw o}}return i}(e,t)||s(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||s(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(e,t){if(e){if(\"string\"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var d=Object.prototype.hasOwnProperty,p=Object.prototype.toString,v=Object.defineProperty,h=Object.getOwnPropertyDescriptor,m=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===p.call(e)},y=function(e){if(!e||\"[object Object]\"!==p.call(e))return!1;var t,n=d.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&d.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||d.call(e,t)},g=function(e,t){v&&\"__proto__\"===t.name?v(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},b=function(e,t){if(\"__proto__\"===t){if(!d.call(e,t))return;if(h)return h(e,t).value}return e[t]},x=function e(){var t,n,r,o,i,a,u=arguments[0],l=1,c=arguments.length,s=!1;for(\"boolean\"==typeof u&&(s=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=b(u,n),u!==(o=b(t,n))&&(s&&o&&(y(o)||(i=m(o)))?(i?(i=!1,a=r&&m(r)?r:[]):a=r&&y(r)?r:{},g(u,{name:n,newValue:e(s,a,o)})):void 0!==o&&g(u,{name:n,newValue:o}));return u};function q(e,t){return{range:function(e){var n=e.resources,r=e.data,o=n.theme.palette(\"categorical\",0===t?r.items.length:t);return r.items.map((function(e){return o[e.value%o.length]}))},valueAccessor:e.value}}function w(e,t){return{range:function(e){var n=e.resources,r=e.data,o=n.theme.palette(\"categorical\",0===t?r.items.length:t);return r.items.map((function(e){return o[e.row.value%o.length]}))},valueAccessor:e.value}}function M(e,t,n,r,o){var i,a=o.byRow,u=o.byElemNo;if(r&&(t.input.persistent||e.hc.qDimensionInfo.length>1||void 0===n.activeDimensionIndex&&e.hc.qSize.qcy>((null===(i=e.hc.qDataPages[0])||void 0===i?void 0:i.qArea.qHeight)||0)))return u(r,r.raw().qCardinal);if(r){var l=t.pic.extract({field:r.key(),trackBy:r.value}).length;return a(r,l)}return{}}function k(e,t){var n=e.hc.qDimensionInfo,r=t.input.byDimDef||{activeDimensionIndex:n.length-1};if(r.activeDimensionIndex>=0){var o=n[r.activeDimensionIndex];r=o.coloring&&o.coloring.colorMapRef?{type:\"libraryItem\",key:o.coloring.colorMapRef,activeDimensionIndex:r.activeDimensionIndex}:{activeDimensionIndex:r.activeDimensionIndex}}return r}function C(e,t){var n;return t.activeDimensionIndex>=0?n=e.pic.fields().filter((function(e){return\"dimension\"===e.type()}))[t.activeDimensionIndex]:\"libraryItem\"===t.type?!1===(n=t.key?e.pic.field((function(e){return e.raw().colorMapRef===t.key})):void 0)&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))):\"expression\"===t.type&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))),n}function S(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function D(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function I(){}var E=1/.7,O=\"\\\\s*([+-]?\\\\d+)\\\\s*\",A=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",N=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",P=/^#([0-9a-f]{3,8})$/,L=new RegExp(\"^rgb\\\\(\"+[O,O,O]+\"\\\\)$\"),T=new RegExp(\"^rgb\\\\(\"+[N,N,N]+\"\\\\)$\"),j=new RegExp(\"^rgba\\\\(\"+[O,O,O,A]+\"\\\\)$\"),F=new RegExp(\"^rgba\\\\(\"+[N,N,N,A]+\"\\\\)$\"),R=new RegExp(\"^hsl\\\\(\"+[A,N,N]+\"\\\\)$\"),H=new RegExp(\"^hsla\\\\(\"+[A,N,N,A]+\"\\\\)$\"),V={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function z(){return this.rgb().formatHex()}function _(){return this.rgb().formatRgb()}function B(e){var t,n;return e=(e+\"\").trim().toLowerCase(),(t=P.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?Y(t):3===n?new W(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?U(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?U(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=L.exec(e))?new W(t[1],t[2],t[3],1):(t=T.exec(e))?new W(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=j.exec(e))?U(t[1],t[2],t[3],t[4]):(t=F.exec(e))?U(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=R.exec(e))?Z(t[1],t[2]/100,t[3]/100,1):(t=H.exec(e))?Z(t[1],t[2]/100,t[3]/100,t[4]):V.hasOwnProperty(e)?Y(V[e]):\"transparent\"===e?new W(NaN,NaN,NaN,0):null}function Y(e){return new W(e>>16&255,e>>8&255,255&e,1)}function U(e,t,n,r){return r<=0&&(e=t=n=NaN),new W(e,t,n,r)}function K(e){return e instanceof I||(e=B(e)),e?new W((e=e.rgb()).r,e.g,e.b,e.opacity):new W}function G(e,t,n,r){return 1===arguments.length?K(e):new W(e,t,n,null==r?1:r)}function W(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function $(){return\"#\"+J(this.r)+J(this.g)+J(this.b)}function X(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?\"rgb(\":\"rgba(\")+Math.max(0,Math.min(255,Math.round(this.r)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.g)||0))+\", \"+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?\")\":\", \"+e+\")\")}function J(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?\"0\":\"\")+e.toString(16)}function Z(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ee(e,t,n,r)}function Q(e){if(e instanceof ee)return new ee(e.h,e.s,e.l,e.opacity);if(e instanceof I||(e=B(e)),!e)return new ee;if(e instanceof ee)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,u=i-o,l=(i+o)/2;return u?(a=t===i?(n-r)/u+6*(n<r):n===i?(r-t)/u+2:(t-n)/u+4,u/=l<.5?i+o:2-i-o,a*=60):u=l>0&&l<1?0:a,new ee(a,u,l,e.opacity)}function ee(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function te(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}S(I,B,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:z,formatHex:z,formatHsl:function(){return Q(this).formatHsl()},formatRgb:_,toString:_}),S(W,G,D(I,{brighter:function(e){return e=null==e?E:Math.pow(E,e),new W(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new W(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$,formatHex:$,formatRgb:X,toString:X})),S(ee,(function(e,t,n,r){return 1===arguments.length?Q(e):new ee(e,t,n,null==r?1:r)}),D(I,{brighter:function(e){return e=null==e?E:Math.pow(E,e),new ee(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?.7:Math.pow(.7,e),new ee(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new W(te(e>=240?e-240:e+120,o,r),te(e,o,r),te(e<120?e+240:e-120,o,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?\"hsl(\":\"hsla(\")+(this.h||0)+\", \"+100*(this.s||0)+\"%, \"+100*(this.l||0)+\"%\"+(1===e?\")\":\", \"+e+\")\")}}));var ne=Math.PI/180,re=180/Math.PI,oe=4/29,ie=6/29,ae=3*ie*ie;function ue(e){if(e instanceof le)return new le(e.l,e.a,e.b,e.opacity);if(e instanceof he)return me(e);e instanceof W||(e=K(e));var t,n,r=de(e.r),o=de(e.g),i=de(e.b),a=ce((.2225045*r+.7168786*o+.0606169*i)/1);return r===o&&o===i?t=n=a:(t=ce((.4360747*r+.3850649*o+.1430804*i)/.96422),n=ce((.0139322*r+.0971045*o+.7141733*i)/.82521)),new le(116*a-16,500*(t-a),200*(a-n),e.opacity)}function le(e,t,n,r){this.l=+e,this.a=+t,this.b=+n,this.opacity=+r}function ce(e){return e>.008856451679035631?Math.pow(e,1/3):e/ae+oe}function se(e){return e>ie?e*e*e:ae*(e-oe)}function fe(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function de(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function pe(e){if(e instanceof he)return new he(e.h,e.c,e.l,e.opacity);if(e instanceof le||(e=ue(e)),0===e.a&&0===e.b)return new he(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*re;return new he(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function ve(e,t,n,r){return 1===arguments.length?pe(e):new he(e,t,n,null==r?1:r)}function he(e,t,n,r){this.h=+e,this.c=+t,this.l=+n,this.opacity=+r}function me(e){if(isNaN(e.h))return new le(e.l,0,0,e.opacity);var t=e.h*ne;return new le(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}function ye(e){return function(){return e}}function ge(e){return 1==(e=+e)?be:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):ye(isNaN(t)?n:t)}}function be(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):ye(isNaN(e)?t:e)}S(le,(function(e,t,n,r){return 1===arguments.length?ue(e):new le(e,t,n,null==r?1:r)}),D(I,{brighter:function(e){return new le(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker:function(e){return new le(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb:function(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,n=isNaN(this.b)?e:e-this.b/200;return new W(fe(3.1338561*(t=.96422*se(t))-1.6168667*(e=1*se(e))-.4906146*(n=.82521*se(n))),fe(-.9787684*t+1.9161415*e+.033454*n),fe(.0719453*t-.2289914*e+1.4052427*n),this.opacity)}})),S(he,ve,D(I,{brighter:function(e){return new he(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker:function(e){return new he(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb:function(){return me(this).rgb()}}));var xe=function e(t){var n=ge(t);function r(e,t){var r=n((e=G(e)).r,(t=G(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=be(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+\"\"}}return r.gamma=e,r}(1),qe=/^class(-pyramid)?/,we=function(e,t,n,r){var o=void 0!==n.min?n.min:r.min(),i=void 0!==n.max?n.max:r.max(),a=o,u=i,l=t.limits,s={},f=\"percent\"===t.limitType?l.map((function(e){return o+(i-o)*e})):l,d=t.colors.map((function(t){return e.resolveUIColor(t)}));if(o=Math.min.apply(Math,[o].concat(c(f))),i=Math.max.apply(Math,[i].concat(c(f))),s.min=o,s.max=i,t.breakTypes&&-1===t.breakTypes.indexOf(!0))s.type=\"categorical\",Object.assign(s,function(e){var t=e.min,n=e.max,r=e.limits,o=e.range,i=[],a=[];if(r.length)if(r[r.length-1]<t)a.push(t,n),i.push(o[o.length-1],o[o.length-1],o[o.length-1]);else if(r[0]>n)a.push(t,n),i.push(o[0],o[0],o[0]);else{if(r[0]>t)a.push(t),i.push(o[0]);else{a.push(t);for(var u=0;u<r.length;u++)if(t<r[u]){i.push(o[u]);break}}for(var l=0;l<r.length;l++)t<r[l]&&r[l]<n&&(a.push(r[l]),i.push(o[l]));if(r[r.length-1]<n)a.push(n),i.push(o[r.length]),i.push(o[r.length]);else{a.push(n);for(var c=0;c<r.length;c++)if(r[c]>n){i.push(o[c]),i.push(o[c]);break}}}else i.push(o[0]);return{min:t,max:n,range:i,domain:a}}({min:\"percent\"===t.limitType?o:a,max:\"percent\"===t.limitType?i:u,range:d,limits:\"percent\"===t.limitType?f:l}));else if(t.breakTypes){var p=t.breakTypes;s.type=\"continuous\",s.domain=[o],s.range=[d[0]];for(var v=0;v<f.length;v+=1)if(p[v]){var h=d[v],m=d[v+1],y=xe(h,m)(.5);s.range.push(y),s.domain.push(f[v]),v<f.length-1&&p[v+1]&&(s.range.push(d[v+1]),s.domain.push((f[v]+f[v+1])/2))}else s.range.push(d[v]),s.range.push(d[v+1]),s.domain.push(f[v]),s.domain.push(f[v]+Math.min(1e-6,(i-o)/1e6));s.range.push(d[d.length-1]),s.domain.push(i)}else s.domain=f,s.range=d;return s};function Me(e,t,n,r,o){var i,a,u,l=0,c=[],s=(e-t)/(r+1);if(0===s)return 1;for(i=0;i<n.length;i+=1)a=.99*(n[i]-t),u=n[i]>e?Math.floor(e/s):n[i]<t?0:Math.floor(a/s),Number.isNaN(u)||(c[u]?c[u]+=1:c[u]=1);for(i=0;i<c.length;i+=1)c[i]&&(l+=1);return l<=r||l>=o?Math.max(l,r):Me(e,t,n,r+1,o)}var ke=function(e,t,n,r){var o,i,a=t.theme,u=t.hc,l=r.f,s={mode:\"field\",fieldType:\"measure\",field:l?l.key():void 0,reverse:n.input.reverseScheme||!1,type:\"continuous\",range:function(e){return e.resources.theme.palette(\"quant\")}},f=[],d=!0;if(l){if(Number.isNaN(+l.min())||Number.isNaN(+l.max()))return{invalid:!0};(d=!(\"S\"===(o=n.pic.raw()).qMode&&(o.qDataPages[0]&&o.qSize.qcy>o.qDataPages[0].qArea.qHeight||!o.qDataPages.length&&o.qSize.qcy>0)||\"K\"===o.qMode&&o.qStackedDataPages[0]&&o.qSize.qcy>o.qStackedDataPages[0].qArea.qHeight||\"T\"===o.qMode&&o.qSize.qcy>o.qTreeDataPages[0].qGroupSize))&&(f=n.pic.extract({field:0,props:{num:{field:l.key()},exclude:{fields:u.qDimensionInfo.map((function(e,t){return{field:\"qDimensionInfo/\".concat(t)}})),value:function(e){return Math.min.apply(Math,c(e))<0}}}}).filter((function(e){return e.value>=0&&!e.exclude.value})).map((function(e){return e.num.value})).filter((function(e){return\"number\"==typeof e})))}if(!1===n.input.autoMinMax){if(s.min=n.input.measureMin,s.max=n.input.measureMax,s.max<s.min)return{invalid:!0}}else if(l&&!d)s.min=l.min(),s.max=l.max();else if(l){if(!f.length)return{invalid:!0};s.min=Math.min.apply(Math,c(f)),s.max=Math.max.apply(Math,c(f))}if(n.input.measureScheme&&(s.palettes={quant:n.input.measureScheme}),a){var p=a.getDataColorScales().filter((function(e){return e.key===n.input.measureScheme}))[0];s.type=p&&qe.test(p.type)?\"categorical\":\"continuous\",\"categorical\"===s.type&&(i=p.colors.some((function(e){return Array.isArray(e)}))?Math.max.apply(Math,c(p.colors.map((function(e){return e?e.length:0})))):p.colors.length)}if(\"categorical\"===s.type){for(var v=d?Me(s.max,s.min,f,1,i):i,h=(s.max-s.min)/v,m=[],y=0;y<v+1;y+=1)m.push(s.min+h*y);s.domain=m,s.range=function(e){for(var t=e.resources.theme.palette(\"quant\",v),n=Math.max(1,Math.floor(t.length/v)),r=[],o=0;o<v;o+=1)r.push(t[o*n]);return[r[0]].concat(r,[r[r.length-1]])}}return s};function Ce(e,t){var n;return t.activeMeasureIndex>=0?n=e.pic.fields().filter((function(e){return\"measure\"===e.type()}))[t.activeMeasureIndex]:\"libraryItem\"===t.type?n=e.pic.field((function(e){return e.raw().colorMapRef===t.key&&void 0!==t.key})):\"expression\"===t.type&&(n=e.pic.field((function(e){return\"colorByAlternative\"===e.raw().id}))),n||(n=e.pic.field((function(e){return void 0!==e.raw().matchMeasure})))&&(n=e.pic.fields().filter((function(e){return\"measure\"===e.type()}))[n.raw().matchMeasure]),n}function Se(e){var n,r=e.cm,o=e.defaults,i=e.index,a=e.input,u=e.pic;if(!a||!a.on)return null;var l=null!==(n=a.mode)&&void 0!==n?n:\"primary\";return\"primary\"===l?function(e,n,r){var o=r.primary;return void 0!==n.paletteColor&&n.paletteColor&&(o=e.resolveUIColor(n.paletteColor)),t(t({},r),{},{mode:\"constant\",type:\"constant\",primary:o})}(r,a,o):\"byExpression\"===l?function(e,n,r){var o=\"qMeasureInfo/\".concat(e,\"/\"),i=n.field((function(e){return e.id().startsWith(o)&&\"colorByMeasureExpression\"===e.raw().id})),a=i;return t(t({},r),{},a?{mode:\"field\",fieldType:\"expression\",field:i?i.key():void 0,type:\"color\"}:{mode:\"constant\",type:\"constant\",primary:r.nil})}(i,u,o):null}function De(e){e.measureOverrides.every((function(e){return!e}))&&(e.measureOverrides=null)}function Ie(e,t){for(var n=(null==t?void 0:t.domain)||[],r=(null==t?void 0:t.range)||[],o=[],i=0;i<e.length;++i){var a=e[i];if(\"constant\"===(null==a?void 0:a.mode)){var u=n.indexOf(i);-1===u?(n.push(i),r.push(a.primary)):r[u]=a.primary,e[i]=null}else if(a){o.push(i);var l=n.indexOf(i);-1!==l&&(n.splice(l,1),r.splice(l,1))}}return{domain:n,range:r,exclude:o}}function Ee(e,t,n,r){if(t.input&&!t.input.auto){if(\"byMeasure\"===t.input.mode)return function(e,t,n){var r=t.theme,o=t.hc,i=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).getCField,a=void 0===i?Ce:i,u=n.input.byMeasureDef||{activeMeasureIndex:0},l=a(n,u),c=ke(0,{theme:r,hc:o},n,{f:l});if(c.invalid)return c;(\"expression\"===u.type||u.activeMeasureIndex<0)&&(c.label=u.label,l&&\"color.altLabel\"===l.raw().labelExpRef&&(c.label=n.input.altLabel)),!c.label&&l&&(c.label=l.title());var s=u.activeMeasureIndex>=0?l:null;if(!s&&l&&void 0!==l.raw().matchMeasure&&l.raw().matchMeasure>-1&&(s=n.pic.fields().filter((function(e){return\"measure\"===e.type()}))[l.raw().matchMeasure]),n.input.useMeasureGradient&&\"libraryItem\"===u.type)if(s){var f=s.raw().coloring;f&&f.gradient&&x(c,we(e,f.gradient,c,s))}else c.auxiliary=u;return c}(e,n,t);if(\"byDimension\"===t.input.mode)return function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=r.getCDef,i=void 0===o?k:o,a=r.getCByField,u=void 0===a?C:a,l=r.getPersistence,c=void 0===l?M:l,s=i(t,n),f=u(n,s),d=f?f.raw():{},p=n&&n.pic?n.pic.raw():{};if(d.qError||d.qSize&&0===d.qSize.qcy&&!p.qHasOtherValues)return{invalid:!0};var v={mode:\"field\",fieldType:\"dimension\",type:\"categorical\",field:f?f.key():void 0,isFieldLocked:d.qLocked};return(\"expression\"===s.type||s.activeDimensionIndex<0)&&(v.label=s.label,\"color.altLabel\"===d.labelExpRef&&(v.label=n.input.altLabel)),!v.label&&f&&(v.label=f.title()),n.input.dimensionScheme&&(v.palettes={categorical:n.input.dimensionScheme}),n.input.useDimColVal&&\"libraryItem\"===s.type&&(v.auxiliary=s),x(v,c(t,n,s,f,{byRow:w,byElemNo:q})),v}(e,n,t);if(\"byExpression\"===t.input.mode)return function(e,t,n,r){var o=t.hc,i=t.theme,a=t.translator,u=n.pic.field((function(e){return\"colorByExpression\"===e.raw().id}));if(!u||!u.raw().qFallbackTitle&&!n.input.colorExpression||!(Number.isFinite(u.raw().qMin)&&Number.isFinite(u.raw().qMax)||n.input.expressionIsColor))return{mode:\"constant\",type:\"constant\",primary:r.nil};if(n.input.expressionIsColor)return{mode:\"field\",fieldType:\"expression\",field:u?u.key():void 0,type:\"color\"};var l=ke(0,{hc:o,theme:i},n,{f:u});return l.invalid||(l.label=n.input.expressionLabel||a.get(\"Object.ChartTooltip.ColorExpression\")),l}(0,n,t,r);if(\"byMultiple\"===t.input.mode||\"primary\"===t.input.mode)return function(e,t,n,r){var o=t.hc,i=t.theme,a=t.translator,u=n.input.useBaseColors;if((\"byMultiple\"===n.input.mode||\"primary\"===n.input.mode&&\"measure\"===n.input.useBaseColors)&&o.qMeasureInfo.length>1&&(u=\"measure\"),\"measure\"===u){var l=[],c=[];\"measure\"===n.input.useBaseColors&&o.qMeasureInfo.forEach((function(t,n){if(t.baseColor||t.coloring&&t.coloring.baseColor){l.push(n);var o=e.resolveUIColor(t.baseColor||t.coloring.baseColor);\"none\"===o?c.push(r.primary):c.push(o)}}));var s=n.input.dimensionScheme?{categorical:n.input.dimensionScheme}:void 0,f=i?i.getDataColorPalettes()[0]:void 0;return\"measure\"===n.input.useBaseColors&&f&&(s={categorical:f.key}),{mode:\"measure\",type:\"categorical\",palettes:s,label:a?a.get(\"Common.Measures\"):void 0,explicit:l.length?{domain:l,range:c}:void 0}}if(\"dimension\"===u){var d=[],p=[];return o.qDimensionInfo.forEach((function(t,n){if(t.baseColor||t.coloring&&t.coloring.baseColor){d.push(n);var o=e.resolveUIColor(t.baseColor||t.coloring.baseColor);\"none\"===o?p.push(r.primary):p.push(o)}})),{mode:\"dimension\",type:\"categorical\",field:d.length?d[0]:void 0,explicit:d.length?{domain:d,range:p}:void 0}}var v=r.primary;if(void 0!==n.input.paletteColor)n.input.paletteColor&&(v=e.resolveUIColor(n.input.paletteColor));else{var h=n.input.singleColor;\"number\"!=typeof h||Number.isNaN(h)||(v=[\"#b0afae\",\"#7b7a78\",\"#545352\",\"#4477aa\",\"#7db8da\",\"#b6d7ea\",\"#46c646\",\"#f93f17\",\"#ffcf02\",\"#276e27\",\"#ffffff\",\"#000000\"][h])}return{mode:\"constant\",type:\"constant\",primary:v}}(e,n,t,r)}return{}}function Oe(e,t,n,r){var o,i=Ee(e,t,n,r);return null!==(o=t.input)&&void 0!==o&&o.measureOverrides?(i.measureOverrides=t.input.measureOverrides.map((function(n,o){return Se({cm:e,input:n,defaults:r,index:o,pic:t.pic})})),function(e,t){var n,r,o,i=t.translator;if(De(e),1===(null===(n=e.measureOverrides)||void 0===n?void 0:n.length))return e.measureOverrides[0];if(\"measure\"===e.mode&&e.measureOverrides&&(e.explicit=Ie(e.measureOverrides,e.explicit),De(e)),null!==(r=e.measureOverrides)&&void 0!==r&&r.every((function(e){return\"constant\"===(null==e?void 0:e.mode)}))){var a={mode:\"measure\",type:\"categorical\",label:null==i?void 0:i.get(\"Common.Measures\")};return a.explicit=Ie(e.measureOverrides),a}return null!==(o=e.measureOverrides)&&void 0!==o&&o.every((function(e){return e}))?{invalid:!0,measureOverrides:e.measureOverrides}:e}(i,n)):i}function Ae(e){var n=t({hc:null,colorProps:null,layout:null,theme:null},e),r={},o={auto:function(){return{mode:\"primary\"}},getDimensionColorMap:function(){return Promise.reject()},getMeasure:function(){return Promise.reject()},getAttributeDimension:function(){return Promise.reject()}},i={auto:function(e){return e?(o.auto=e,i):o.auto},getDimensionColorMap:function(e){return e?(o.getDimensionColorMap=e,i):o.getDimensionColorMap},getAttributeDimension:function(e){return e?(o.getAttributeDimension=e,i):o.getAttributeDimension},getMeasure:function(e){return e?(o.getMeasure=e,i):o.getMeasure},set:function(e){var t;if(!e.colorProps)throw new Error('Missing \"colorProps\"');if(x(n,e),(r={pic:n.picasso.data(\"q\")({data:n.hc,config:{localeInfo:n.localeInfo}}),input:n.colorProps}).input.auto){var i=o.auto(e.layout);r.input=x(!0,{},r.input,i,{auto:!1});var a=n.theme?n.theme.getDataColorPalettes():[];a[0]&&(r.input.dimensionScheme=a[0].key);var u=0;r.input.byDimDef&&+r.input.byDimDef.activeDimensionIndex>=0&&(u=+r.input.byDimDef.activeDimensionIndex),n.hc&&n.hc.qDimensionInfo[u]&&n.hc.qDimensionInfo[u].coloring&&n.hc.qDimensionInfo[u].coloring.colorMapRef&&r.input.byDimDef&&(r.input.byDimDef.type=\"libraryItem\",r.input.byDimDef.key=n.hc.qDimensionInfo[u].coloring.colorMapRef)}null!==(t=r.input.measureOverrides)&&void 0!==t&&t.every((function(e){return!e||!e.on}))&&(r.input=x(!1,{},r.input,{measureOverrides:null}))},palettes:function(){if(!r.palettes){var e=n.theme,t=[];(e&&e.getDataColorPickerPalettes()||[]).forEach((function(e){t.push({key:\"ui\",colors:e.colors})})),r.palettes=t}return r.palettes},getAuxiliaryData:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"/qHyperCubeDef\";if(!e.auxiliary&&!/qAttrDimInfo/.test(e.field))return Promise.resolve();var r=e.auxiliary||{},i=r.key;if(\"measure\"===e.fieldType)return o.getMeasure(i,n).catch((function(){}));if(\"dimension\"===e.fieldType){var a=\"\".concat(t,\"/\").concat(e.field).replace(\"qDimensionInfo\",\"qDimensions\").replace(\"qAttrDimInfo\",\"qAttributeDimensions\");return Promise.all([/qAttrDimInfo/.test(e.field)?o.getAttributeDimension(a,n).catch((function(){})):Promise.resolve(),i?o.getDimensionColorMap(i,n).catch((function(){})):Promise.resolve()])}return Promise.resolve()},getAuxiliarySettings:function(e,o){var i=this;return e.auxiliary||/qAttrDimInfo/.test(e.field)?(this.palettes(),this.getAuxiliaryData(e,o).then((function(o){if(!o)return{};if(\"measure\"===e.fieldType){if(o.coloring&&o.coloring.gradient){var a=r.pic.field(e.field);return we(i,o.coloring.gradient,e,a)}return{}}if(\"dimension\"===e.fieldType){var u={nil:e.nil,others:e.others},l=o[0],c=o[1]?o[1].colorMap:null;if(l){var s=n.picasso.data(\"q\")({data:{qDimensionInfo:[r.pic.field(e.field).raw(),r.pic.field(e.field).raw()],qMeasureInfo:[],qDataPages:l,qInterColumnSortOrder:[0,1],qMode:\"S\"}});u.legendDataset=s}return c?function(e,n,r,o){var i=o.external,a=o.field,u=t({},e);x(u,q(a,a.raw().qCardinal));var l=i.theme?i.theme.getDataColorPalettes()[0]:null;return n.nul&&(u.nil=r.resolveUIColor(n.nul)),n.oth&&(u.others=r.resolveUIColor(n.oth)),n.usePal?(u.palettes={categorical:n.pal},l&&!n.pal&&(u.palettes.categorical=l.key,x(u,q(a)))):!1===n.autoFill&&n.single?u.range=[r.resolveUIColor(n.single)]:n.autoFill&&(l&&(u.palettes={categorical:l.key}),x(u,q(a))),n.colors&&n.colors.length&&(u.explicit=function(e,t,n){for(var r={},o=0;o<e.length;o+=1)r[e[o].value]=e[o].baseColor;var i=[];return{domain:function(e){var o=e.data,a=[];i=[];for(var u=0;u<o.items.length;u++){var l=o.items[u],c=(l.text||l).label;r[c]&&-1===a.indexOf(l.value)&&(a.push(l.value),i.push(t.resolveUIColor(r[c])))}return a.push(-3,-2),i.push(n.others),i.push(n.nil),a},range:function(){return i}}}(n.colors,r,u)),u}(u,c,i,{external:n,field:r.pic.field(e.field)}):u}return{}}))):Promise.resolve()},resolveUIColor:function(e){if(e.index<0||void 0===e.index)return e.color;if(void 0===r.uiPalette&&(r.uiPalette=this.palettes().filter((function(e){return\"ui\"===e.key}))[0]||!1),!r.uiPalette)return e.color;var t=\"none\"===r.uiPalette.colors[0]?e.index:e.index-1;return void 0===r.uiPalette.colors[t]?e.color:r.uiPalette.colors[t]},settings:function(){if(this.palettes(),!r.settings){var e={primary:\"steelblue\",others:\"#aaa\",nil:\"#ddd\"},o=n.theme;o&&(e=t(t({},e),o.getDataColorSpecials())),r.settings=x(e,Oe(this,r,n,e))}return r.settings}};return i}var Ne=function(e,t){var n=e.fieldType,r={};if(t)if(\"measure\"===n){var o=t.coloring;o&&(r.measureGradient=o.gradient)}else if(\"dimension\"===n){var i=t[0],a=t[1];i&&(r.legendDataPage=i),a&&(r.dimValsData=a.colorMap)}return r},Pe=function(e){throw e.isHandled=!0,e},Le=function(e,t){var n=t.layout,r=t.app;return n&&n.snapshotData?n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.dimValsData?Promise.resolve({colorMap:n.snapshotData.content.chartData.dimValsData}):Promise.reject():r&&r.getObject?r.getObject(\"ColorMapModel_\".concat(e)).then((function(e){return e.getLayout()})):Promise.reject()},Te=function(e,t){var n=t.layout,r=t.app;return n&&n.snapshotData?n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.measureGradient?Promise.resolve({coloring:{gradient:n.snapshotData.content.chartData.measureGradient}}):Promise.reject():r&&r.getMeasure?r.getMeasure(e).then((function(e){return e.getMeasure()})):Promise.reject()},je=function(e,t){var n=t.layout,r=t.model,o=t.app;if(n&&n.snapshotData)return n.snapshotData.content&&n.snapshotData.content.chartData&&n.snapshotData.content.chartData.legendDataPage?Promise.resolve(n.snapshotData.content.chartData.legendDataPage):Promise.reject();if(r&&r.session&&o){return r.getHyperCubeData(e,[{qHeight:100,qLeft:0,qTop:0,qWidth:2}]).catch(Pe)}return Promise.reject()};function Fe(e){var t=e.hc,n=e.source,r=e.coloring,o={data:{extract:[{source:\"dummy\",field:0,filter:function(){return o.expando=t.qDataPages[0]?t.qDataPages[0].qArea.qTop:0,!1}},{source:n,field:r.field,trackBy:r.valueAccessor,reduce:\"first\",props:{row:{reduce:function(){return o.expando++}},text:{value:function(e){return e.qText},reduce:\"first\"}}}]},expando:0};return o}function Re(e){return function(t){return\"object\"===r(t.datum[e])?t.datum[e].value:void 0}}function He(e){return\"object\"===r(e.datum.isNull)?e.datum.isNull.value:-2===e.datum.value}function Ve(e){return-3===e.datum.value}var ze=function(e,t,n){var r=e&&e.dock||void 0;if(\"auto\"!==r)return r||\"right\";if(t){var o=t.element.getBoundingClientRect();if(o.height>o.width)return\"bottom\"}return n?\"left\":\"right\"},_e=function(e,t,n){return!(n.invalid||\"color\"===n.type||\"measure\"===n.mode&&t.qMeasureInfo.length<=1||\"dimension\"===n.mode)&&(\"function\"==typeof e.show?e.show():!1!==e.show)};function Be(e,t){var n=e.styleReference,r=e.chart,o=e.rtl,i=t.legendProps,a=t.coloring,u=t.theme,l=t.hc;return{layout:{minimumLayoutMode:\"MEDIUM\",dock:ze(i,r,o)},show:\"function\"==typeof i.show?function(){return _e(i,l,a)}:_e(i,l,a),renderer:\"svg\",mounted:function(e){e.childNodes[0].style.pointerEvents=\"none\",e.style.overflow=\"hidden\"},settings:{title:{show:!1!==i.showTitle,wordBreak:\"break-word\",maxLines:2,lineHeight:1.2,text:a.label||\"\",fill:u?u.getStyle(n,\"legend.title\",\"color\"):void 0,fontSize:u?u.getStyle(n,\"legend.title\",\"fontSize\"):\"16px\",fontFamily:u?u.getStyle(n,\"legend.title\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"}}}}function Ye(e,n,r){return\"categorical\"===n.coloring.type?function(e,n,r){var o=Be(e,n);if(!o.show)return!1;var i,a=e.key,u=e.styleReference,l=e.viewState,c=e.rtl,s=e.settings,f=e.style,d=n.scaleKey,p=n.theme,v=n.scales,h=o.layout.dock,m=\"left\"===h||\"right\"===h?{maxLines:3,wordBreak:\"break-word\"}:{},y={up:\"M13.6,11 L2.4,11 C2.28954305,11 2.2,10.9104569 2.2,10.8 C2.2,10.756726 2.21403557,10.7146192 2.24,10.68 L7.84,3.21333333 C7.90627417,3.12496777 8.03163444,3.10705916 8.12,3.17333333 C8.13516113,3.18470418 8.14862915,3.1981722 8.16,3.21333333 L13.76,10.68 C13.8262742,10.7683656 13.8083656,10.8937258 13.72,10.96 C13.6853808,10.9859644 13.643274,11 13.6,11 Z\",down:\"M2.4,4 L13.6,4 C13.7104569,4 13.8,4.08954305 13.8,4.2 C13.8,4.24327404 13.7859644,4.28538077 13.76,4.32 L8.16,11.7866667 C8.09372583,11.8750322 7.96836556,11.8929408 7.88,11.8266667 C7.86483887,11.8152958 7.85137085,11.8018278 7.84,11.7866667 L2.24,4.32 C2.17372583,4.23163444 2.19163444,4.10627417 2.28,4.04 C2.31461923,4.01403557 2.35672596,4 2.4,4 Z\",left:\"M11,2.4 L11,13.6 C11,13.7104569 10.9104569,13.8 10.8,13.8 C10.756726,13.8 10.7146192,13.7859644 10.68,13.76 L3.21333333,8.16 C3.12496777,8.09372583 3.10705916,7.96836556 3.17333333,7.88 C3.18470418,7.86483887 3.1981722,7.85137085 3.21333333,7.84 L10.68,2.24 C10.7683656,2.17372583 10.8937258,2.19163444 10.96,2.28 C10.9859644,2.31461923 11,2.35672596 11,2.4 Z\",right:\"M4,13.6 L4,2.4 C4,2.28954305 4.08954305,2.2 4.2,2.2 C4.24327404,2.2 4.28538077,2.21403557 4.32,2.24 L11.7866667,7.84 C11.8750322,7.90627417 11.8929408,8.03163444 11.8266667,8.12 C11.8152958,8.13516113 11.8018278,8.14862915 11.7866667,8.16 L4.32,13.76 C4.23163444,13.8262742 4.10627417,13.8083656 4.04,13.72 C4.01403557,13.6853808 4,13.643274 4,13.6 Z\"};\"dimension\"===n.coloring.fieldType&&(i=function(e){return e.datum.value>=0||-3===e.datum.value});var g=\"\".concat(d,\"Legend\");return x(!0,o,{type:\"legend-cat\",key:\"\".concat(a,\"-cat\"),scale:g in v?g:d,settings:{layout:{scrollOffset:function(){return l?l.get(\"legendScrollOffset\"):void 0},size:-1!==[\"top\",\"bottom\"].indexOf(o.layout.dock)?2:1,direction:c?\"rtl\":\"ltr\",horizontal:20},item:{show:i,label:t({fill:p?p.getStyle(u,\"legend.label\",\"color\"):void 0,fontSize:p?p.getStyle(u,\"legend.label\",\"fontSize\"):void 0,fontFamily:p?p.getStyle(u,\"legend.label\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"},m)},navigation:{disabled:r,button:{content:function(e,t){var n=t.direction;return e(\"i\",{style:{\"pointer-events\":\"none\",fontSize:\"12px\",display:\"inline-block\",fontStyle:\"normal\",lineHeight:\"0\",textAlign:\"center\",textTransform:\"none\",verticalAlign:\"-0.125em\",textRendering:\"optimizelegibility\",margin:\"0px\"}},[e(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"1em\",height:\"1em\",viewBox:\"0 0 16 16\",fill:\"currentColor\"},[e(\"path\",{d:y[n]})])])}}}},brush:{consume:[{context:\"selection\",data:[\"\",a],style:{inactive:{opacity:.3}}}]}},{settings:s,style:f})}(e,n,r):\"continuous\"===n.coloring.type&&function(e,t){var n=e.key,r=e.styleReference,o=e.rtl,i=e.settings,a=e.style,u=t.scaleKey,l=t.theme,c=Be(e,t);return!!c.show&&x(!0,c,{type:\"legend-seq\",key:\"\".concat(n,\"-seq\"),settings:{fill:u,major:\"\".concat(u,\"Range\"),length:1,tick:{fill:l?l.getStyle(r,\"legend.label\",\"color\"):void 0,fontSize:l?l.getStyle(r,\"legend.label\",\"fontSize\"):void 0,fontFamily:l?l.getStyle(r,\"legend.label\",\"fontFamily\"):\"'Source Sans Pro', 'Arial', 'sans-serif'\"},title:{anchor:!o||\"top\"!==c.layout.dock&&\"bottom\"!==c.layout.dock?void 0:\"right\",padding:parseFloat(c.settings.title.fontSize)||16}}},{settings:i,style:a})}(e,n)}function Ue(e,t,n){var r=[],o=[],i=Ye(e,t,n&&n.navigationDisabled);return r.push(i),i&&\"legend-cat\"===i.type&&(o.push(function(e){var t=e.key,n=e.requireFailure,r=e.recognizeWith,o=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).actions;return{key:\"event:tap-\".concat(t),type:\"Tap\",requireFailure:n,recognizeWith:r,options:{event:\"legendtap\",interval:10,pointers:1,enable:function(e,n){var r;if(!n)return!0;if(null!=o&&null!==(r=o.interact)&&void 0!==r&&r.enabled&&!o.interact.enabled())return!1;if(!this.chart.componentsFromPoint({x:n.center.x,y:n.center.y}).some((function(e){return e.key===\"\".concat(t,\"-cat\")})))return!1;var i=n.srcEvent.target;return!!(i&&i.hasAttribute(\"data-action\")&&i.hasAttribute(\"data-component-key\"))||!(!i||!i.childNodes[0]||\"BUTTON\"!==i.childNodes[0].nodeName)}},events:{legendtap:function(e){e.preventDefault();var t=e.srcEvent.target;t&&t.hasAttribute(\"data-action\")&&t.hasAttribute(\"data-component-key\")&&this.chart.component(t.getAttribute(\"data-component-key\")).emit(t.getAttribute(\"data-action\"))}}}}(e,n)),o.push(function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.eventName,r=t.key,o=t.requireFailure,i=t.recognizeWith,u=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).actions;return{key:\"event:pan-\".concat(r),type:\"Pan\",requireFailure:o,recognizeWith:i,options:{event:n,pointers:1,threshold:10,enable:function(e,t){var o;return this.started===n||!t||!(null!=u&&null!==(o=u.interact)&&void 0!==o&&o.enabled&&!u.interact.enabled())&&this.chart.componentsFromPoint({x:t.center.x,y:t.center.y}).some((function(e){return e.key===\"\".concat(r,\"-cat\")}))}},events:(e={},a(e,\"\".concat(n,\"start\"),(function(e){e.preventDefault(),this.started!==n&&(this.started=n,this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panstart\",e))})),a(e,\"\".concat(n,\"move\"),(function(e){e.preventDefault(),this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panmove\",e)})),a(e,\"\".concat(n,\"end\"),(function(e){e.preventDefault(),this.chart.component(\"\".concat(r,\"-cat\")).emit(\"panend\",e),this.started=!1})),e)}}(e,n))),{interactions:o,components:r}}var Ke=function(e){return\"rgba(\".concat([(16711680&e)>>16,(65280&e)>>8,255&e,((4278190080&e)>>>24)/255].join(\",\"),\")\")};function Ge(e){var n=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.auto,n=Ae(e.resources).auto(t||function(){return{mode:\"byDimension\",persistent:!1,useDimColVal:!0,byDimDef:{activeDimensionIndex:0,type:\"expression\",label:\"\"}}}).getDimensionColorMap((function(e,t){var n=t.layout,r=t.app;return Le(e,{layout:n,app:r})})).getMeasure((function(e,t){var n=t.layout,r=t.app;return Te(e,{layout:n,app:r})})).getAttributeDimension((function(e,t){var n=t.layout,r=t.model,o=t.app;return je(e,{layout:n,model:r,app:o})}));return n.getSnapshotData=Ne,n}({resources:e}),r={},o={},i=function(e){return o.settings||(e||console.warn(\"settings() called before auxiliarySettings()\"),o.settings=n.settings()),o.settings},u={config:function(i){if(r=t({},i),o={},!r.key)throw new Error(\"Missing key\");n.set(t(t({},e),r))},auto:function(e){return e?(n.auto(e),u):n.auto()},getAuxiliarySettings:function(e){return o.auxiliarySettings?Promise.resolve(o.auxiliarySettings):n.getAuxiliarySettings(i(!0),e).then((function(e){return o.auxiliarySettings=e||{},o.settings=t(t({},o.settings),o.auxiliarySettings),o.scales=void 0,o.color=void 0,o.auxiliarySettings}))},getAuxiliaryData:function(){return n.getAuxiliaryData(i())},getSnapshotData:function(e){var t=i();return n.getAuxiliaryData(t,e).then((function(e){return n.getSnapshotData(t,e)}))},resolveUIColor:function(e){return n.resolveUIColor(e)},settings:function(){var e=i();return{mode:e.mode,type:e.type,label:e.label,field:e.field,fieldType:e.fieldType,nil:e.nil,others:e.others,primary:e.primary}},settingsForMeasure:function(e){var t,n=null===(t=i().measureOverrides)||void 0===t?void 0:t[e];return n||this.settings()},isSelectionLocked:function(e){var t=e.isMeasureSelectionLocked;return function(e,t){var n=t.isMeasureSelectionLocked;return\"field\"!==e.mode||(\"dimension\"===e.fieldType?e.isFieldLocked:\"measure\"!==e.fieldType||n)}(i(),{isMeasureSelectionLocked:t})},palettes:function(){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.colorProps,n=e.coloring,r=e.theme,o=[];if(n&&n.palettes&&r){var i=n.palettes.categorical||t.dimensionScheme,a=r.getDataColorPalettes().filter((function(e){return e.key===i}))[0]||r.getDataColorPalettes()[0];i&&a&&o.push({key:\"categorical\",colors:a.colors});var u=n.palettes.metric||t.measureScheme,l=r.getDataColorScales().filter((function(e){return e.key===u}))[0];if(l){var s=l.colors[0]?l.colors:[[]].concat(c(l.colors.slice(1)));s=Array.isArray(s[0])?s.map((function(e){return e.slice().reverse()})):s.slice().reverse(),o.push({key:\"quant\",colors:s})}}return o}({coloring:i(),colorProps:r.colorProps,theme:r.theme})},scales:function(){return o.scales=o.scales||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.hc,r=e.coloring,o=e.rtl,i=e.key,a=e.source,u=e.picasso,l={},s=i;if(r){var f={override:!0,domain:r.explicit&&\"function\"==typeof r.explicit.domain?r.explicit.domain:[].concat(c((r.explicit||{}).domain||[]),[-3,-2]),range:r.explicit&&\"function\"==typeof r.explicit.range?r.explicit.range:[].concat(c((r.explicit||{}).range||[]),[r.others,r.nil])};if(\"field\"===r.mode){if(\"dimension\"===r.fieldType){var d,p=Fe({hc:n,source:a,coloring:r}).data;if(r.legendDataset){var v=0,h={};u.data(\"q\")({data:n}).extract({field:r.field,trackBy:r.valueAccessor,reduce:function(e){var t=e[0];return h[t]=v++,e[0]}}),d={source:\"attrDim\",extract:{field:\"qDimensionInfo/0\",filter:function(e){return e.qElemNumber>=0},props:{row:{value:function(e){return h[e.qElemNumber]}}}}}}var m={data:p,range:r.range,domain:r.domain,explicit:f,type:\"categorical-color\",label:function(e){return e.datum.text&&e.datum.text.value?e.datum.text.value:e.datum.label}};l[s]=m,d&&(l[\"\".concat(s,\"Legend\")]=t(t({},m),{},{data:d})),n&&n.qHasOtherValues&&d&&((d||m.data).amend=[{label:n.qDimensionInfo[0].othersLabel,source:{key:\"qHyperCube\",field:\"qDimensionInfo/0\"},row:{value:-3},value:-3}])}else if(\"measure\"===r.fieldType){var y={data:{field:r.field},min:r.min,max:r.max};l[s]=x({},y,{type:\"categorical\"===r.type?\"threshold-color\":\"sequential-color\",range:r.range,domain:r.domain,invert:r.reverse}),\"sequential-color\"===l[s].type&&(l[\"\".concat(s,\"Range\")]=x({},y,{invert:!!o}))}else if(\"color\"!==r.type)throw new Error(\"UNUSED FIELD\")}else if(\"dimension\"===r.mode){var g={data:n.qDimensionInfo.map((function(e,t){return t})),label:function(e){return n.qDimensionInfo[e.datum.value].qFallbackTitle},explicit:f,type:\"categorical-color\"};l[s]=g}else if(\"measure\"===r.mode){var b={data:n.qMeasureInfo.map((function(e,t){return t})).filter((function(e){var t,n;return!(null!==(t=r.explicit)&&void 0!==t&&null!==(n=t.exclude)&&void 0!==n&&n.includes(e))})),label:function(e){return n.qMeasureInfo[e.datum.value].qFallbackTitle},explicit:f,type:\"categorical-color\"};l[s]=b}}return l}({hc:r.hc,coloring:i(),key:r.key,source:r.source,picasso:e.picasso}),o.scales},color:function(){return o.color=o.color||function(e){var t=e.coloring,n=e.scales,r=e.key,o=Re(r),i=Re(\"\".concat(r,\"IsAnOther\")),a=function(e,t){var r=e.fieldType,a=e.invalid,u=e.mode,l=e.nil,c=e.others,s=e.primary,f=e.type;return a?function(e){return Ve(e)||i(e)?c:l}:n[t]?function(e){return Ve(e)?c:He(e)||-2===o(e)&&\"dimension\"===r||\"NaN\"===o(e)?l:i(e)?c:e.resources.scale(t)(o(e))||c}:\"constant\"===u?function(e){return Ve(e)||i(e)?c:He(e)?l:s}:\"color\"===f?function(e){return Ve(e)||i(e)?c:He(e)?l:o(e)||c}:null},u=a(t,r);if(t.measureOverrides){var l=Re(\"\".concat(r,\"MeasureIdx\")),c=t.measureOverrides.map((function(e){return e&&a(e)}));return function(e){var t=l(e);return c[t]?c[t](e):u(e)}}return u}({coloring:i(),scales:this.scales(),key:r.key}),o.color},datumProps:function(e){return function(e){var t,n,r=e.hc,o=e.coloring,i=e.scales,u=e.key,l=e.addMeasureIx,c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=u,f=o.nil;\"field\"===o.mode&&o.field?t=o.field:i[u]&&\"field\"===o.mode&&(t=i[u].data.field||o.field),t?(n={field:t,reduce:\"first\"},\"color\"===o.type&&(n.value=function(e){return\"NaN\"!==e.qNum?Ke(e.qNum):e.qText&&B(e.qText)?e.qText:f})):\"dimension\"===o.mode?n=void 0!==o.field?o.field:r.qDimensionInfo.length-1:\"measure\"===o.mode&&(n=c);var d=a({},s,n);return r.qDimensionInfo.length>1&&(d[\"\".concat(s,\"IsAnOther\")]={fields:r.qDimensionInfo.map((function(e,t){return{field:\"qDimensionInfo/\".concat(t)}})),value:function(e){return-1!==e.indexOf(-3)}}),l&&(d[\"\".concat(s,\"MeasureIdx\")]=c),d}({coloring:this.settingsForMeasure(e),scales:this.scales(),key:r.key,hc:r.hc,addMeasureIx:i().measureOverrides},e)},data:function(){var e=i(),t={key:\"dummy\",data:[[\"field\"],[\"a\"]]};return e.legendDataset?[t,{type:\"q\",key:\"attrDim\",data:e.legendDataset.raw(),config:{localeInfo:r.localeInfo}}]:[t]},legend:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.eventName,n=e.key,o=e.viewState,a=e.chart,u=e.rtl,l=e.styleReference,c=void 0===l?\"object.legend\":l,s=e.settings,f=void 0===s?{}:s,d=e.style,p=void 0===d?{}:d,v=arguments.length>1?arguments[1]:void 0;return Ue({eventName:t,key:n,rtl:u,viewState:o,chart:a,styleReference:c,settings:f,style:p},{legendProps:r.legendProps,scaleKey:r.key,coloring:i(),theme:r.theme,hc:r.hc,scales:this.scales()},v)}};return u}var We=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function $e(e){var t=e.qHyperCube,n=t.qDimensionInfo,r=t.qMeasureInfo,o=n.some(We),i=r.some(We),a=e.color.useBaseColors;return\"measure\"===a&&!i||\"dimension\"===a&&!o?\"off\":a}function Xe(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t(t(t({},e),n),{},{colorProps:t(t({},e.colorProps),n.colorProps||{})});return r}var Je=function(e){return e.baseColor||e.coloring&&e.coloring.baseColor};function Ze(e){var t,n=e.qHyperCube.qDimensionInfo.some(Je),r=e.qHyperCube.qMeasureInfo.some(Je),o=n?\"dimension\":void 0;return{mode:\"primary\",useBaseColors:null!==(t=null!=o?o:r?\"measure\":void 0)&&void 0!==t?t:\"off\",paletteColor:null}}var Qe=function(){};function et(e){var n,r,o,i,a=e.picasso,u=e.model,l=e.app,c=e.translator,s=e.layoutService,f=void 0===s?void 0:s,d=e.createConfig,p=void 0===d?Qe:d,v=e.config,h=void 0===v?{}:v,m=e.custom,y=void 0===m?{}:m,g=h.localeInfo,b=h.key,x=h.theme,q=void 0===x?void 0:x,w=h.auto,M=void 0===w?void 0:w,k=h.definitionPath,C=null==f||null===(n=f.getLayout)||void 0===n?void 0:n.call(f),S={theme:q,key:b,localeInfo:g,layout:C,hc:null==f||null===(r=f.getHyperCube)||void 0===r?void 0:r.call(f),legendProps:null==f||null===(o=f.getLayoutValue)||void 0===o?void 0:o.call(f,\"legend\"),colorProps:t(t({},null==f||null===(i=f.getLayoutValue)||void 0===i?void 0:i.call(f,\"color\")),{},{useBaseColors:C?$e(C):void 0})},D=Ge({picasso:a,model:u,app:l,translator:c,auto:M});!1!==M&&D.auto((function(e){return M?M({layout:e,defaultAuto:Ze}):Ze(e)}));var I=!1,E={getColor:function(){return D.color()},getPaletteColor:function(e){var t=e.index,n=e.color;return D.resolveUIColor({index:t,color:n})},getData:function(){return D.data()},getDatumProps:function(e){return D.datumProps(e)},getSnapshotData:function(){return D.getSnapshotData(k)},getSettingsForMeasure:function(e){return D.settingsForMeasure(e)},getSettings:function(){return D.settings()},getLegend:function(e,t){return D.legend(e,t)},getScales:function(){return D.scales()},getPalettes:function(){return D.palettes()},isSelectionLocked:function(e){var t=e.isMeasureSelectionLocked;return D.isSelectionLocked({isMeasureSelectionLocked:t})},isInitialized:function(){return I},custom:t({},y),initialize:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.createConfig,n=void 0===t?p:t,r=n({getUseBaseColors:$e}),o=Xe(S,r);D.config(o);var i=D.getAuxiliarySettings(k).then((function(){I=!0}));return i}};return E}function tt(e){var t=e.chart,n=e.logicalSize;if(n)return n;var r=t?t.element.getBoundingClientRect():{};return{width:r.width,height:r.height}}var nt=[{key:\"FULL\",size:{width:550,height:450}},{key:\"MEDIUM\",size:{width:400,height:220}},{key:\"SMALL\",size:{width:300,height:150}},{key:\"XSMALL\",size:{width:150,height:75}}];function rt(e){var t=e.width,n=e.height,r=nt.filter((function(e){return t>=e.size.width&&n>=e.size.height})).shift();return r?r.key:\"SPARK\"}var ot={left:\"right\",right:\"left\",top:\"bottom\",bottom:\"top\",near:\"far\",far:\"near\"};function it(e){var t=e.orientation,n=e.dock,r=e.btt,o=e.rtl,i=\"horizontal\"===t?function(e){return\"bottom\"===e||\"near\"===e?\"bottom\":\"top\"}(n):function(e,t){var n=\"left\"===e||\"near\"===e?\"left\":\"right\";return t?ot[n]:n}(n,o),a=function(e,t,n){return\"vertical\"===e?t?\"bottom\":\"top\":n?\"right\":\"left\"}(t,r,o);return{current:i,opposite:ot[i],start:a,end:ot[a]}}function at(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=i.logicalSize,u=void 0!==a&&a,l=i.rtl,c=void 0!==l&&l,s={chart:{size:void 0,mode:void 0},x:{dock:void 0,opposite:void 0,size:void 0},y:{dock:void 0,opposite:void 0,size:void 0}},f={type:\"x-y\",config:t({},i),meta:s,update:function(e){s.chart.size={width:e.width,height:e.height},s.chart.mode=rt(e);var t=it({orientation:\"horizontal\",dock:r.getLayoutValue(\"xAxis.dock\"),btt:!1,rtl:c}),n=t.current,o=t.opposite;s.x.dock=n,s.x.opposite=o,s.x.size=e.width;var i=it({orientation:\"vertical\",dock:r.getLayoutValue(\"yAxis.dock\"),btt:!0,rtl:c}),a=i.current,u=i.opposite;s.y.dock=a,s.y.opposite=u,s.y.size=e.height}};return f.update(tt({chart:n,logicalSize:u})),f}var ut=\"vertical\",lt=\"horizontal\";function ct(e){var n=e.chart,r=e.layoutService,o=e.config,i=void 0===o?{}:o,a=e.typeConfig,u=void 0===a?{}:a,l=i.logicalSize,c=void 0!==l&&l,s=i.rtl,f=void 0!==s&&s,d=u.fallback===ut?ut:lt,p=!!u.invert,v=u.measureAxes||[{ref:\"measureAxis\",name:\"minor\"}],h={chart:{orientation:void 0,size:void 0,mode:void 0},major:{orientation:void 0,dock:void 0,opposite:void 0,size:void 0}},m={type:\"major-minor\",config:t({},i),meta:h,update:function(e){h.chart.orientation=r.getLayoutValue(\"orientation\",d),h.chart.size={width:e.width,height:e.height},h.chart.mode=rt(e),h.major.orientation=function(e){var t=e.layoutService,n=e.chartOrientation,r=e.invert;return t.meta.isContinuous?lt:r?n===ut?lt:ut:n}({layoutService:r,chartOrientation:h.chart.orientation,invert:p});var t=it({orientation:h.major.orientation,dock:r.getLayoutValue(\"dimensionAxis.dock\"),btt:!1,rtl:f}),n=t.current,o=t.opposite;h.major.dock=n,h.major.opposite=o,h.major.size=h.major.orientation===ut?e.height:e.width,v.forEach((function(t){var n={};n.orientation=h.major.orientation===ut?lt:ut;var o=it({orientation:n.orientation,dock:r.getLayoutValue(\"\".concat(t.ref,\".dock\")),btt:!0,rtl:f}),i=o.current,a=o.opposite,u=o.start,l=o.end;n.dock=i,n.opposite=a,n.start=u,n.end=l,n.size=n.orientation===ut?e.height:e.width,h[t.name]=n}))}};return m.update(tt({chart:n,logicalSize:c})),m}function st(e){var t=e.chart,n=e.layoutService,r=e.config,o=void 0===r?{}:r,i=e.typeConfig,a=void 0===i?{}:i;return(\"x-y\"===a.type?at:ct)({chart:t,layoutService:n,config:o,typeConfig:a})}function ft(e,t,n){if(void 0===e||void 0===t)return n;for(var r=t.split(\".\"),o=e,i=0;i<r.length;++i){var a=r[i];if(void 0===o[a])return n;o=o[a]}return o}function dt(e,t,n){if(void 0!==e&&void 0!==t){for(var r=t.split(\".\"),o=r[r.length-1],i=e,a=0;a<r.length-1;++a){var u=r[a];void 0===i[u]&&(i[u]=Number.isNaN(+r[a+1])?{}:[]),i=i[u]}void 0!==n?i[o]=n:delete i[o]}}function pt(){var e={};return{get:function(t){return e[t]},set:function(t,n){return e[t]=n,n},has:function(t){return t in e},remove:function(t){delete e[t]},empty:function(){e={}}}}function vt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=pt();return function(r){var o=t(r);return n.has(o)?n.get(o):n.set(o,e(r))}}function ht(e){var n=t({},e),r={},o={},i=!1,a={get:function(e){return n[e]},set:function(e,t){var a=n[e];!i&&r[e]?n[e]=r[e](t,a):n[e]=t,!i&&o[e]&&o[e](n[e],a)},preventSet:function(e,t){i=!0,a.set(e,t),i=!1},intercept:function(e,t){r[e]=t},onChanged:function(e,t){o[e]=t}};return a}function mt(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50;return function(){for(var r=this,o=arguments.length,i=new Array(o),a=0;a<o;a++)i[a]=arguments[a];var u=function(){return e.apply(r,i)};clearTimeout(t),t=setTimeout(u,n)}}function yt(e){var t,n,r,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=0;return function(){t=this;for(var a=arguments.length,u=new Array(a),l=0;l<a;l++)u[l]=arguments[l];n=u;var c=Date.now()-i,s=function(){i=Date.now(),r=0,e.apply(t,n)};r||(c>=o?s():r=setTimeout(s,o-c))}}var gt={ERROR_CODES:[7005],DIMENSION:\"qDimensionInfo\",MEASURE:\"qMeasureInfo\"},bt=function(e,t){return e[t].reduce((function(e,t,n){var r;return(r=t,gt.ERROR_CODES.some((function(e){var t;return e===(null===(t=r.qError)||void 0===t?void 0:t.qErrorCode)})))?e.filtered.push(n):e.reduced.push(t),e}),{reduced:[],filtered:[]})};function xt(e){var t;return((null==e||null===(t=e.qHyperCube)||void 0===t?void 0:t.qDimensionInfo)||[]).map((function(e){var t,n=null===(t=e.qCardinalities)||void 0===t?void 0:t.qHypercubeCardinal;if(n)return n;var r=e.qStateCounts||{},o=r.qLocked,i=void 0===o?0:o,a=r.qOption,u=void 0===a?0:a,l=r.qSelected;return i+u+(void 0===l?0:l)}))}function qt(e){switch(e.qHyperCube.qMode){case\"S\":return function(e){var t=e.qHyperCube.qSize;return{refs:{dataPages:\"qHyperCube.qDataPages\"},size:{x:t.qcx,y:t.qcy,dimensions:xt(e)}}}(e);case\"K\":return function(e){var t=xt(e);return{refs:{dataPages:\"qHyperCube.qStackedDataPages\"},size:{x:e.qHyperCube.qSize.qcx,y:t[0],dimensions:t}}}(e);case\"T\":return function(e){var t=xt(e);return{refs:{dataPages:\"qHyperCube.qTreeDataPages\"},size:{x:e.qHyperCube.qSize.qcx,y:t[0],dimensions:t}}}(e);default:throw new Error(\"Mode not supported\")}}function wt(e){var n=e.source,r=e.metaAdditionsFn,o=e.experimental,i=void 0===o?{filter:!1}:o,a=x(!0,{},n),u=i.filter?function(e){var t=e.qHyperCube,n=bt(t,gt.DIMENSION),r=n.reduced,o=n.filtered;t[gt.DIMENSION]=r;var i=bt(t,gt.MEASURE),a=i.reduced,u=i.filtered;return t[gt.MEASURE]=a,{dimensions:o,measures:u}}(a):{dimensions:[],measures:[]},l=qt(a),c=function(){var e=function(e){var n=e.layout,r=e.additionsFn,o=void 0===r?function(){return{}}:r,i=e.additionsProps,a=void 0===i?{}:i,u=n.qHyperCube,l=u.qDimensionInfo,c=u.qMeasureInfo,s=u.qMode,f=l.length,d=c.length,p=t({mode:{S:\"S\"===s,P:\"P\"===s,K:\"K\"===s,T:\"T\"===s},dimensionCount:f,measureCount:d,hasMultipleDimensions:f>1,hasMultipleMeasures:d>1,isOneDimensional:1===f,isTwoDimensional:2===f},a);return t(t({},p),o({layout:n,meta:p}))}({layout:a,additionsFn:r,additionsProps:{size:l.size}});return e.filteredFields=u,e},s={refs:t({},l.refs),meta:c(),getLayout:function(){return a},getLayoutValue:function(e,t){return ft(a,e,t)},setLayoutValue:function(e,t){dt(a,e,t),l=qt(a),s.meta=c()},getHyperCube:function(){return a.qHyperCube},getHyperCubeValue:function(e,t){return ft(a.qHyperCube,e,t)},setHyperCubeValue:function(e,t){dt(a.qHyperCube,e,t),l=qt(a),s.meta=c()},getDataPages:function(){return ft(a,l.refs.dataPages)},setDataPages:function(e){dt(a,l.refs.dataPages,e),s.meta=c()}};return s}function Mt(e){var t=e.originalArray,n=e.newArray,r=e.matchKey;return Array.isArray(t)&&t.length?(n.forEach((function(e){var n=-1;t.some((function(t,o){return t[r]&&t[r]===e[r]&&(n=o),n})),n>-1?t[n]=e:t.push(e)})),t):n}function kt(e){var o=e.picassoInstance,a=e.plugins,u=e.pluginArgs,s=void 0===u?{}:u,f={initialized:!1,definitions:[]};return{initialize:function(){return i(n().mark((function e(){var u,l,d,p;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!f.initialized){e.next=2;break}return e.abrupt(\"return\");case 2:return l=Promise.all(a.filter((function(e){return\"custom-component\"===e.info.type})).map(function(){var e=i(n().mark((function e(i){var a;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i.info.componentName){e.next=2;break}throw new Error(\"plugin-service: Custom component is missing componentName\");case 2:return e.next=4,i.fn(t({},s));case 4:if(\"object\"===r(a=e.sent)){e.next=7;break}throw new Error(\"plugin-service: Custom component needs to be an object\");case 7:o.component(i.info.componentName,a);case 8:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())),d=Promise.all(a.filter((function(e){return\"component-definition\"===e.info.type})).map((function(e){return e.fn(t({},s))}))),e.next=6,Promise.all([l,d]);case 6:p=e.sent,f.initialized=!0,(u=f.definitions).push.apply(u,c(p[1]));case 9:case\"end\":return e.stop()}}),e)})))()},extendComponents:function(e){return f.initialized?(f.definitions.filter(Boolean).forEach((function(t){var n=l(e.filter((function(e){return e.key&&e.key===t.key})),1)[0];if(n){var o=x(!0,{},n.brush);x(!0,n,t),t.brush&&(n.brush=function(e,t){return\"object\"===r(e)&&Object.keys(e).length?(Array.isArray(t.consume)&&(e.consume=Mt({originalArray:e.consume,newArray:t.consume,matchKey:\"context\"})),Array.isArray(t.trigger)&&(e.trigger=Mt({originalArray:e.trigger,newArray:t.trigger,matchKey:\"on\"})),e):t}(o,t.brush))}else e.push(t)})),e):e}}}function Ct(e){return Ct=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},Ct(e)}function St(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function Dt(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function It(e,t,n){return t&&Dt(e.prototype,t),n&&Dt(e,n),e}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ot(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 At(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ot(Object(n),!0).forEach((function(t){Et(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Nt(e,t){return Nt=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Nt(e,t)}function Pt(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function Lt(e,t,n){return Lt=Pt()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&Nt(o,n.prototype),o},Lt.apply(null,arguments)}function Tt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,o=!1,i=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n}(e,t)||Ft(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function jt(e){return function(e){if(Array.isArray(e))return Rt(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||Ft(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function Ft(e,t){if(e){if(\"string\"==typeof e)return Rt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Rt(e,t):void 0}}function Rt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Ht=Object.prototype.hasOwnProperty,Vt=Object.prototype.toString,zt=Object.defineProperty,_t=Object.getOwnPropertyDescriptor,Bt=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===Vt.call(e)},Yt=function(e){if(!e||\"[object Object]\"!==Vt.call(e))return!1;var t,n=Ht.call(e,\"constructor\"),r=e.constructor&&e.constructor.prototype&&Ht.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!r)return!1;for(t in e);return void 0===t||Ht.call(e,t)},Ut=function(e,t){zt&&\"__proto__\"===t.name?zt(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Kt=function(e,t){if(\"__proto__\"===t){if(!Ht.call(e,t))return;if(_t)return _t(e,t).value}return e[t]},Gt=function e(){var t,n,r,o,i,a,u=arguments[0],l=1,c=arguments.length,s=!1;for(\"boolean\"==typeof u&&(s=u,u=arguments[1]||{},l=2),(null==u||\"object\"!=typeof u&&\"function\"!=typeof u)&&(u={});l<c;++l)if(null!=(t=arguments[l]))for(n in t)r=Kt(u,n),u!==(o=Kt(t,n))&&(s&&o&&(Yt(o)||(i=Bt(o)))?(i?(i=!1,a=r&&Bt(r)?r:[]):a=r&&Yt(r)?r:{},Ut(u,{name:n,newValue:e(s,a,o)})):void 0!==o&&Ut(u,{name:n,newValue:o}));return u};function Wt(e,t,n){if(!e)return-1;var r=n.cache,o=e.origin?e.origin():null;o&&(e=o);var i=r.fields.indexOf(e),a=-1,u=-1;if(-1===i)for(var l=0;l<r.wrappedFields.length;l++)if(u=r.wrappedFields[l].attrDims.map((function(e){return e.instance})).indexOf(e),a=r.wrappedFields[l].attrExps.map((function(e){return e.instance})).indexOf(e),-1!==u||-1!==a){i=l;break}return(i-=t.qArea.qLeft)<0||i>=t.qArea.qWidth?-1:u>=0?function(e){return e[i].qAttrDims.qValues[u]}:a>=0?function(e){return e[i].qAttrExps.qValues[a]}:function(e){return e[i]}}function $t(e,t,n){var r=n.key,o={value:\"function\"==typeof e.value?e.value(t):void 0!==e.value?e.value:t};return o.label=\"function\"==typeof e.label?e.label(t):void 0!==e.label?String(e.label):String(o.value),e.field&&(o.source={key:r,field:e.field.key()}),o}function Xt(e){var t=e.cache,n=e.f,r=e.mainCell,o=e.p;e.prop;var i=e.page,a=e.rowIdx,u=e.row,l=e.sourceKey,c=e.target,s=e.targetProp,f=r;if(o.field&&o.field!==n){var d=Wt(o.field,i,{cache:t});if(-1===d)return;f=Gt({qRow:a},d(u))}c[s]=$t(o,f,{key:l})}function Jt(e,t,n,r){for(var o=Array.isArray(e)?e:[e],i=[],a=0;a<o.length;a++)if(void 0!==o[a].field){for(var u=t.raw(),l=t.key(),c=\"object\"===Ct(o[a].field)?o[a].field:t.field(o[a].field),s=r.normalizeConfig(o[a],t),f=s.props,d=s.main,p=Object.keys(f),v=!!o[a].trackBy,h=Ct(o[a].trackBy),m={},y=[],g=[],b=0;b<u.qDataPages.length;b++){var x=Wt(c,u.qDataPages[b],{cache:n});if(-1!==x)for(var q=0;q<u.qDataPages[b].qMatrix.length;q++){var w=u.qDataPages[b].qArea.qTop+q,M=Gt({qRow:w},x(u.qDataPages[b].qMatrix[q])),k=$t(d,M,{key:l});if(!(d.filter&&!d.filter(M))){for(var C=0;C<p.length;C++){var S=f[p[C]],D=S.fields||[S];S.fields&&(k[p[C]]=[]);for(var I=0;I<D.length;I++)Xt({cache:n,f:c,mainCell:M,p:D[I],prop:p[C],props:f,page:u.qDataPages[b],rowIdx:w,row:u.qDataPages[b].qMatrix[q],sourceKey:l,target:S.fields?k[p[C]]:k,targetProp:S.fields?I:p[C]});if(S.fields){var E=k[p[C]].map((function(e){return e.value})),O=k[p[C]].map((function(e){return e.label}));k[p[C]]={value:\"function\"==typeof S.value?S.value(E):void 0!==S.value?S.value:E,label:\"function\"==typeof S.label?S.label(O):void 0!==S.label?String(S.label):String(k[p[C]].value)}}}v&&r.track({cfg:o[a],itemData:M,obj:k,target:y,tracker:m,trackType:h}),g.push(k)}}}v?i.push.apply(i,jt(r.collect(y,{main:d,propsArr:p,props:f}))):i.push.apply(i,g)}return i}function Zt(e){var t=0,n=e.children,r=n&&n.length;if(r)for(;--r>=0;)t+=n[r].value;else t=1;e.value=t}function Qt(e,t){var n,r,o,i,a,u=new rn(e),l=+e.value&&(u.value=e.value),c=[u];for(null==t&&(t=en);n=c.pop();)if(l&&(n.value=+n.data.value),(o=t(n.data))&&(a=o.length))for(n.children=new Array(a),i=a-1;i>=0;--i)c.push(r=n.children[i]=new rn(o[i])),r.parent=n,r.depth=n.depth+1;return u.eachBefore(nn)}function en(e){return e.children}function tn(e){e.data=e.data.data}function nn(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function rn(e){this.data=e,this.depth=this.height=0,this.parent=null}function on(e){if(\"function\"!=typeof e)throw new Error;return e}rn.prototype=Qt.prototype={constructor:rn,count:function(){return this.eachAfter(Zt)},each:function(e){var t,n,r,o,i=this,a=[i];do{for(t=a.reverse(),a=[];i=t.pop();)if(e(i),n=i.children)for(r=0,o=n.length;r<o;++r)a.push(n[r])}while(a.length);return this},eachAfter:function(e){for(var t,n,r,o=this,i=[o],a=[];o=i.pop();)if(a.push(o),t=o.children)for(n=0,r=t.length;n<r;++n)i.push(t[n]);for(;o=a.pop();)e(o);return this},eachBefore:function(e){for(var t,n,r=this,o=[r];r=o.pop();)if(e(r),t=r.children)for(n=t.length-1;n>=0;--n)o.push(t[n]);return this},sum:function(e){return this.eachAfter((function(t){for(var n=+e(t.data)||0,r=t.children,o=r&&r.length;--o>=0;)n+=r[o].value;t.value=n}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,n=function(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),o=null;e=n.pop(),t=r.pop();for(;e===t;)o=e,e=n.pop(),t=r.pop();return o}(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var o=r.length;e!==n;)r.splice(o,0,e),e=e.parent;return r},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){var e=[];return this.each((function(t){e.push(t)})),e},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(n){n!==e&&t.push({source:n.parent,target:n})})),t},copy:function(){return Qt(this).eachBefore(tn)}};var an={depth:-1},un={};function ln(e){return e.id}function cn(e){return e.parentId}function sn(e,t){\"/\"===e.charAt(0)&&(e=e.substring(1));for(var n,r=e.split(\"/\"),o=t,i=0;i<r.length;i++){if(\"*\"===r[i]&&Array.isArray(o)){var a=[];n=r.slice(i+1).join(\"/\");for(var u=0;u<o.length;u++){var l=sn(n,o[u]);Array.isArray(l)?a.push.apply(a,jt(l)):a.push(l)}return a}if(!r[i]&&Array.isArray(o)){var c=new Array(o.length);n=r.slice(i+1).join(\"/\");for(var s=0;s<o.length;s++)c[s]=sn(n,o[s]);return c}r[i]in o&&(o=o[r[i]])}return o}function fn(e,t,n){var r=[];if(!e||!e.length)return r;if(t<=0){var o=n>=0?[e[n]]:e;r.push.apply(r,jt(o))}else for(var i=0;i<e.length;i++)e[i].children&&e[i].children.length&&r.push.apply(r,jt(fn(e[i].children,t-1,n)));return r}function dn(e,t,n){if(e===t)return function(e){return e};if(e>t){var r=Math.max(0,Math.min(100,e-t)),o=jt(Array(r)).map(String.prototype.valueOf,\"parent\").join(\".\");return Function(\"node\",\"return node.\".concat(o,\";\"))}if(t>e){var i=Math.max(0,Math.min(100,t-e));return function(e){return fn(e.children,i-1,n)}}return!1}function pn(e,t){var n=t.cache;if(\"number\"==typeof e)return n.fields[e];var r=n.allFields;if(\"function\"==typeof e){for(var o=0;o<r.length;o++)if(e(r[o]))return r[o];return!1}if(\"string\"==typeof e){for(var i=0;i<r.length;i++)if(r[i].key()===e||r[i].title()===e)return r[i]}else if(e&&-1!==r.indexOf(e))return e;throw Error(\"Field not found: \".concat(e))}var vn=/^qDimensionInfo(?:\\/(\\d+))?/,hn=/^\\/?qMeasureInfo\\/(\\d+)/,mn=/\\/qAttrExprInfo\\/(\\d+)/,yn=/\\/qAttrDimInfo\\/(\\d+)/;function gn(e){return(e.qColumnOrder&&e.qColumnOrder.length?e.qColumnOrder:e.qDimensionInfo.map((function(e,t){return t}))).filter((function(t){return t<e.qDimensionInfo.length}))}function bn(e,t){var n=t.cube;if(!e)return-1;var r=e.origin&&e.origin()?e.origin().key():e.key(),o=!1,i=-1,a=-1,u=-1,l=-1,c=-1,s=r,f=n.qEffectiveInterColumnSortOrder,d=gn(n);return vn.test(s)&&(o=!0,i=+vn.exec(s)[1],s=r.replace(vn,\"\")),hn.test(s)&&(\"K\"===n.qMode?l=+hn.exec(s)[1]:f&&-1!==f.indexOf(-1)?(l=+hn.exec(s)[1],c=0):c=+hn.exec(s)[1],s=s.replace(hn,\"\")),s&&(yn.exec(s)?u=+yn.exec(s)[1]:mn.exec(s)&&(a=+mn.exec(s)[1])),{fieldDepth:(o?\"S\"===n.qMode?d[i]:f?f.indexOf(i):i:f&&-1!==f.indexOf(-1)?f.indexOf(-1):n.qDimensionInfo.length-(\"K\"===n.qMode?0:1))+1,pseudoMeasureIndex:l,measureIdx:c,attrDimIdx:u,attrIdx:a}}function xn(e,t){var n,r,o=dn(e.fieldDepth,t.fieldDepth,t.pseudoMeasureIndex);return n=t.measureIdx>=0?function(e){return e.data.qValues[t.measureIdx]}:function(e){return e.data},t.attrDimIdx>=0?r=function(e){var n;return null==e||null===(n=e.qAttrDims)||void 0===n?void 0:n.qValues[t.attrDimIdx]}:t.attrIdx>=0&&(r=function(e){var n;return null==e||null===(n=e.qAttrExps)||void 0===n?void 0:n.qValues[t.attrIdx]}),{nodeFn:o,attrFn:r,valueFn:n}}function qn(e,t,n){var r=n.key,o={value:\"function\"==typeof e.value?e.value(t):void 0!==e.value?e.value:t};return o.label=\"function\"==typeof e.label?e.label(t):void 0!==e.label?String(e.label):String(o.value),e.field&&(o.source={key:r,field:e.field.key()}),o}function wn(e){for(var t=e.propsArr,n=e.props,r=e.item,o=e.itemData,i=e.ret,a=e.sourceKey,u=0;u<t.length;u++){var l=n[t[u]],c=l.fields||[l],s=void 0,f=void 0;l.fields&&(s=[],f=[]);for(var d=function(e){var n=c[e],d=void 0,p=void 0,v=void 0,h=void 0,m=void 0,y=void 0;if(\"primitive\"===n.type?(v=n.value,y=String(n.value)):(\"function\"==typeof n.value&&(d=function(e){return n.value(e,r)}),\"function\"==typeof n.label&&(p=function(e){return n.label(e,r)}),n.accessor?(h=n.accessor(r),Array.isArray(h)?(m=h.map(n.valueAccessor),n.attrAccessor&&(m=m.map(n.attrAccessor)),d&&(v=m.map(d),d=null),p&&(y=m.map(p),p=null),v=n.reduce?n.reduce(v):v,y=n.reduceLabel?n.reduceLabel(y,v):String(v)):y=v=n.attrAccessor?n.attrAccessor(n.valueAccessor(h)):n.valueAccessor(h)):(v=o,y=o)),l.fields){var g=d?d(v):v;s.push(g),f.push(p&&null!=y?p(y):null!=y?y:String(g))}else{var b=d?d(v):v;i[t[u]]={value:b,label:p?p(y):null!=y?y:String(b)},n.field&&(i[t[u]].source={field:n.field.key(),key:a})}},p=0;p<c.length;p++)d(p);s&&(i[t[u]]={value:\"function\"==typeof l.value?l.value(s,r):s,label:\"function\"==typeof l.label?l.label(f,r):f})}}var Mn=function(e,t,n){var r=\"K\"===e.qMode?\"/qStackedDataPages/*/qData\":\"/qTreeDataPages/*\",o=\"K\"===e.qMode?\"qSubNodes\":\"qNodes\",i=sn(r,e);return i&&i[0]?(t.tree=Qt(i[0],n.children||function(e){return e[o]}),t.tree):null};function kn(e){for(var t=e.raw().qDataPages.length?e.raw().qDataPages[0].qMatrix:[],n=function(e){var t=e.raw().qColumnOrder,n=e.fields();return t&&t.length===n.length?t:n.map((function(e,t){return t}))}(e),r=e.fields(),o=e.fields().filter((function(e){return\"dimension\"===e.type()})).map((function(e){return n.indexOf(r.indexOf(e))})),i=e.fields().filter((function(e){return\"measure\"===e.type()})).map((function(e){return n.indexOf(r.indexOf(e))})),a={__root:{__id:\"__root\",qValues:[]}},u=0;u<t.length;u++){for(var l=t[u],c=\"__root\",s=!1,f=0;f<o.length;f++){var d=l[o[f]],p=\"\".concat(c,\"__\").concat(d.qText);a[p]||(a[p]=At({__id:p,__parent:c,qValues:[]},d),s=!0),c=p}if(s)for(var v=0;v<i.length;v++){var h=l[i[v]];a[c].qValues.push(h)}}var m=Object.keys(a).map((function(e){return a[e]})),y=function(){var e=ln,t=cn;function n(n){var r,o,i,a,u,l,c,s=n.length,f=new Array(s),d={};for(o=0;o<s;++o)r=n[o],u=f[o]=new rn(r),null!=(l=e(r,o,n))&&(l+=\"\")&&(d[c=\"$\"+(u.id=l)]=c in d?un:u);for(o=0;o<s;++o)if(u=f[o],null!=(l=t(n[o],o,n))&&(l+=\"\")){if(!(a=d[\"$\"+l]))throw new Error(\"missing: \"+l);if(a===un)throw new Error(\"ambiguous: \"+l);a.children?a.children.push(u):a.children=[u],u.parent=a}else{if(i)throw new Error(\"multiple roots\");i=u}if(!i)throw new Error(\"no root\");if(i.parent=an,i.eachBefore((function(e){e.depth=e.parent.depth+1,--s})).eachBefore(nn),i.parent=null,s>0)throw new Error(\"cycle\");return i}return n.id=function(t){return arguments.length?(e=on(t),n):e},n.parentId=function(e){return arguments.length?(t=on(e),n):t},n}().id((function(e){return e.__id})).parentId((function(e){return e.__parent}))(m);return y}var Cn=function(e){for(var t=e.propsArr,n=e.props,r=e.cube,o=e.cache,i=e.itemDepthObject,a=e.f,u=0;u<t.length;u++)for(var l=n[t[u]],c=l.fields?l.fields:[l],s=0;s<c.length;s++){var f=c[s];if(f.field!==a){var d=xn(i,bn(f.field,{cube:r,cache:o}));f.accessor=d.nodeFn,f.valueAccessor=d.valueFn,f.attrAccessor=d.attrFn}}};function Sn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,o=t.raw(),i=t.key(),a=\"S\"===o.qMode?kn(t):Mn(o,n,e);if(!a)return null;for(var u=a.height,l=[],c=0;c<=u;c++){var s=null;if(c>0)if(\"S\"===o.qMode){var f=gn(o),d=f[c-1];s=n.fields[d]}else{var p=o.qEffectiveInterColumnSortOrder[c-1];c>o.qEffectiveInterColumnSortOrder.length&&(p=o.qDimensionInfo.length),s=n.fields[p]}var v=r.normalizeConfig(At(At({},e),{},{field:s?s.key():void 0}),t),h=v.props,m=v.main,y=Object.keys(h);l[c]={propsArr:y,props:h,main:m};var g=s?bn(s,{cube:o,cache:n}):{fieldDepth:0};Cn({propsArr:y,props:h,cube:o,cache:n,itemDepthObject:g,f:s})}for(var b=a.copy(),x=b.descendants(),q=a.descendants(),w=0;w<q.length;w++){var M=l[q[w].depth].propsArr,k=l[q[w].depth].props,C=l[q[w].depth].main,S=x[w],D=S.data,I=qn(C,D,{key:i});wn({propsArr:M,props:k,item:S,itemData:D,ret:I,sourceKey:i,isTree:!0}),q[w].data=I}return a}function Dn(e,t,n,r){for(var o=Array.isArray(e)?e:[e],i=[],a=0;a<o.length;a++)if(void 0!==o[a].field){var u=t.raw(),l=t.key();if(!Mn(u,n,e))continue;var c=\"object\"===Ct(o[a].field)?o[a].field:t.field(o[a].field),s=r.normalizeConfig(o[a],t),f=s.props,d=s.main,p=Object.keys(f),v=bn(c,{cube:u,cache:n}),h=xn({fieldDepth:0},v),m=h.nodeFn,y=h.attrFn,g=h.valueFn;Cn({propsArr:p,props:f,cube:u,cache:n,itemDepthObject:v,f:c});for(var b=!!o[a].trackBy,x=Ct(o[a].trackBy),q={},w=[],M=m(n.tree),k=[],C=0;C<M.length;C++){var S=M[C],D=y?y(g(S)):g(S);if(!(d.filter&&!d.filter(D))){var I=qn(d,D,{key:l});wn({propsArr:p,props:f,item:S,itemData:D,ret:I,sourceKey:l}),b&&r.track({cfg:o[a],itemData:D,obj:I,target:w,tracker:q,trackType:x}),k.push(I)}}b?i.push.apply(i,jt(r.collect(w,{main:d,propsArr:p,props:f}))):i.push.apply(i,k)}return i}\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self&&self;var In,En,On=(In=function(e){\n/*! javascript-number-formatter - v1.1.11 - http://mottie.github.com/javascript-number-formatter/ * © ecava */\ne.exports=function(e,t){if(!e||isNaN(+t))return t;var n,r,o,i,a,u,l,c,s,f,d=e.length,p=e.search(/[0-9\\-\\+#]/),v=p>0?e.substring(0,p):\"\",h=e.split(\"\").reverse().join(\"\"),m=h.search(/[0-9\\-\\+#]/),y=d-m,g=e.substring(y,y+1),b=y+(\".\"===g||\",\"===g?1:0),x=m>0?e.substring(b,d):\"\";if(n=(t=\"-\"===(e=e.substring(p,b)).charAt(0)?-t:+t)<0?t=-t:0,o=(r=e.match(/[^\\d\\-\\+#]/g))&&r[r.length-1]||\".\",i=r&&r[1]&&r[0]||\",\",e=e.split(o),t=+(t=t.toFixed(e[1]&&e[1].length))+\"\",u=e[1]&&e[1].lastIndexOf(\"0\"),(!(c=t.split(\".\"))[1]||c[1]&&c[1].length<=u)&&(t=(+t).toFixed(u+1)),s=e[0].split(i),e[0]=s.join(\"\"),(a=e[0]&&e[0].indexOf(\"0\"))>-1)for(;c[0].length<e[0].length-a;)c[0]=\"0\"+c[0];else 0==+c[0]&&(c[0]=\"\");if((t=t.split(\".\"))[0]=c[0],l=s[1]&&s[s.length-1].length){for(h=\"\",y=(f=t[0]).length%l,d=f.length,b=0;b<d;b++)h+=f.charAt(b),!((b-y+1)%l)&&b<d-l&&(h+=i);t[0]=h}return t[1]=e[1]&&t[1]?o+t[1]:\"\",\"0\"!==(r=t.join(\"\"))&&\"\"!==r||(n=!1),v+(n?\"-\":\"\")+r+x}},In(En={exports:{}},En.exports),En.exports);function An(e){return e.replace(/[-[\\]/{}()*+?.\\\\^$|]/g,\"\\\\$&\")}var Nn={3:\"k\",6:\"M\",9:\"G\",12:\"T\",15:\"P\",18:\"E\",21:\"Z\",24:\"Y\",\"-3\":\"m\",\"-6\":\"μ\",\"-9\":\"n\",\"-12\":\"p\",\"-15\":\"f\",\"-18\":\"a\",\"-21\":\"z\",\"-24\":\"y\"},Pn=/%$/,Ln=/^\\(r(0[2-9]|[12]\\d|3[0-6])\\)/i,Tn=/^\\(oct\\)/i,jn=/^\\(dec\\)/i,Fn=/^\\(hex\\)/i,Rn=/^\\(bin\\)/i,Hn=/^\\(rom\\)/i,Vn=/^(\\(rom\\)|\\(bin\\)|\\(hex\\)|\\(dec\\)|\\(oct\\)|\\(r(0[2-9]|[12]\\d|3[0-6])\\))/i,zn=/#|0/g;function _n(e,t,n,r){return e=e.toString(t),n[1]===n[1].toUpperCase()&&(e=e.toUpperCase()),e.length-e.indexOf(\".\")>10&&(e=e.slice(0,e.indexOf(\".\")+11)),e.replace(\".\",r||\".\")}function Bn(e,t,n){var r;return Ln.test(t)?e=_n(e,Number(/\\d{2}/.exec(t)[0]),t,n):Tn.test(t)?e=_n(e,8,t,n):jn.test(t)?e=_n(e,10,t,n):Fn.test(t)?e=_n(e,16,t,n):Rn.test(t)?e=_n(e,2,t,n):Hn.test(t)&&(r=\"\",e<0&&(r=\"-\",e=-e),0===(e=Math.floor(e))?e=\"0\":e<=5e5?(e=function(e,t){for(var n,r=\"\",o=Number(String(e).slice(-3)),i=(e-o)/1e3,a=[0,1,4,5,9,10,40,50,90,100,400,500,900].reverse(),u=[\"0\",\"I\",\"IV\",\"V\",\"IX\",\"X\",\"XL\",\"L\",\"XC\",\"C\",\"CD\",\"D\",\"CM\"].reverse();o>0;)for(n=0;n<a.length;n++)if(a[n]<=o){r+=u[n],o-=a[n];break}for(n=0;n<i;n++)r=\"M\".concat(r);return t[1]!==t[1].toUpperCase()&&(r=r.toLowerCase()),r}(e,t),e=r+e):e=t+r+e.toExponential(0)),e}function Yn(e,t,n){var r=An(e);return n?r:new RegExp(r||\"\",t)}function Un(e,t,n){var r,o,i,a,u,l,c,s,f,d,p,v=e.pattern;v.indexOf(\"A\")>=0&&(v=v.replace(\"A\",\"\"),e.abbreviate=!0),d=t,(p=n)&&(p=An(p)),d&&(d=An(d)),f=new RegExp(\"(?:[#0]+\".concat(d,\")?[#0]+(?:\").concat(p,\"[#0]+)?\")),a=(i=(i=v.match(f))?i[0]:\"\")?v.substr(0,v.indexOf(i)):v,u=i?v.substring(v.indexOf(i)+i.length):\"\",i||(i=v?\"#\":\"##########\"),t&&t===n&&(o=(r=i.split(n)).pop(),i=r.join(\"\")+n+o,t=\"\"),l=t,t=/,/.test(n)?\"¤\":\",\",l&&(i=i.replace(Yn(l,\"g\"),t)),c=n,n=\".\",c&&(i=i.replace(Yn(c,\"g\"),n)),s=(s=i.match(/#/g))?s.length:0;var h,m=v.split(c);m[1]&&(h=m[1].match(zn)),e.prefix=a||\"\",e.postfix=u||\"\",e.pattern=v,e.maxPrecision=h?h.length:2,e.percentage=Pn.test(v),e.numericPattern=i||\"\",e.numericRegex=new RegExp(\"\".concat(Yn(t,null,!0),\"|\").concat(Yn(n,null,!0)),\"g\"),e.groupTemp=l,e.decTemp=c,e.t=t,e.d=n,e.temp=s}var Kn=function(){function e(t,n,r,o,i){St(this,e),this.localeInfo=t,this.pattern=n,this.thousandDelimiter=r||\",\",this.decimalDelimiter=o||\".\",this.type=i||\"numeric\",this.patternSeparator=\";\",this.abbreviations=function(e,t){if(!e||!e.qNumericalAbbreviation)return Nn;var n={};return e.qNumericalAbbreviation.split(t).forEach((function(e){var t=e.split(\":\");2===t.length&&(n[t[0]]=t[1])})),n}(t,this.patternSeparator),this.prepare()}return It(e,[{key:\"clone\",value:function(){var t=new e(this.localeInfo,this.pattern,this.thousandDelimiter,this.decimalDelimiter,this.type);return t.subtype=this.subtype,t}},{key:\"format\",value:function(e,t,n,r){return this.prepare(t,n,r),this.formatValue(e)}},{key:\"prepare\",value:function(e,t,n){var r;void 0===e&&(e=this.pattern),void 0===t&&(t=this.thousandDelimiter),void 0===n&&(n=this.decimalDelimiter),e?(this._prepared={positive:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"},negative:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"},zero:{d:n,t:t,abbreviate:!1,isFunctional:!1,prefix:\"\",postfix:\"\"}},r=this._prepared,e=e.split(this.patternSeparator),r.positive.pattern=e[0],r.negative.pattern=e[1],r.zero.pattern=e[2],Vn.test(e[0])&&(r.positive.isFunctional=!0),e[1]?Vn.test(e[1])&&(r.negative.isFunctional=!0):r.negative=!1,e[2]?Vn.test(e[2])&&(r.zero.isFunctional=!0):r.zero=!1,r.positive.isFunctional||Un(r.positive,t,n),r.negative&&!r.negative.isFunctional&&Un(r.negative,t,n),r.zero&&!r.zero.isFunctional&&Un(r.zero,t,n)):this._prepared={pattern:!1}}},{key:\"formatValue\",value:function(e){var t,n,r,o,i,a,u,l,c,s=this._prepared,f=\"\",d=\"\",p=e;if(isNaN(e))return\"\".concat(p);if(e=+e,!1===s.pattern)return e.toString();if(0===e&&s.zero)return(s=s.zero).pattern;if(e<0&&s.negative?(s=s.negative,e=-e):s=s.positive,i=s.d,a=s.t,s.isFunctional)e=Bn(e,s.pattern,i);else{if(s.percentage&&(e*=100),s.abbreviate){var v,h,m=Object.keys(this.abbreviations).map((function(e){return parseInt(e,10)})).sort((function(e,t){return e-t})),y=m[0];for(u=0,n=Number(Number(e).toExponential().split(\"e\")[1]);y<=n&&u<m.length;)y=m[++u];u>0&&(v=m[u-1]),v&&n>0&&v>0?h=v:(n<0&&v<0||!v)&&(y<0&&y-n<=s.maxPrecision?h=y:v<=n&&!(y>0&&-n<=s.maxPrecision)&&(h=v)),h&&(f=this.abbreviations[h],e/=Math.pow(10,h))}if(r=Math.abs(e),t=s.temp,c=(l=s.numericPattern).split(i)[1],\"I\"===this.type&&(e=Math.round(e)),o=e,c||\"#\"!==l.slice(-1)[0])if(r>=1e15||r>0&&r<=1e-14)e=r?r.toExponential(15).replace(/\\.?0+(?=e)/,\"\"):\"0\";else{var g=Number(e.toFixed(Math.min(20,c?c.length:0)).split(\".\")[0]),b=l.split(i)[0];if(e=On(b+=i,g)||\"0\",c){var x=Math.max(0,Math.min(14,c.length)),q=c.replace(/#+$/,\"\").length,w=(\"I\"===this.type?0:r%1).toFixed(x).slice(2).replace(/0+$/,\"\");for(u=w.length;u<q;u++)w+=\"0\";w&&(e+=i+w)}else 0===g&&(o=0)}else if(r>=Math.pow(10,t)||r<1||r<1e-4)0===e?e=\"0\":r<1e-4||r>=1e20?(e=(e=o.toExponential(Math.max(1,Math.min(14,t))-1)).replace(/\\.?0+(?=e)/,\"\"),d=\"\"):(e=e.toPrecision(Math.max(1,Math.min(14,t)))).indexOf(\".\")>=0&&(e=(e=e.replace(e.indexOf(\"e\")<0?/0+$/:/\\.?0+(?=e)/,\"\")).replace(\".\",i));else{for(l+=i,t=Math.max(0,Math.min(20,t-Math.ceil(Math.log(r)/Math.log(10)))),u=0;u<t;u++)l+=\"#\";e=On(l,e)}e=e.replace(s.numericRegex,(function(e){return e===a?s.groupTemp:e===i?s.decTemp:\"\"})),o<0&&!/^-/.test(e)&&(e=\"-\".concat(e))}return s.prefix+e+d+f+s.postfix}}],[{key:\"getStaticFormatter\",value:function(){return{prepare:function(){},formatValue:function(e){return\"\".concat(e)}}}}]),e}();function Gn(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.size,i=void 0===o?5e3:o,a=r.multipleArguments,u=void 0!==a&&a,l=r.toKey,c=void 0===l?function(e){return e}:l,s=Object.create(null),f=Object.create(null),d=0,p=0;return t=u?function(){return n=c.apply(void 0,arguments),t.has(n)?t.get(n):t.set(n,e.apply(void 0,arguments))}:function(r){return n=c(r),t.has(n)?t.get(n):t.set(n,e(r))},t.set=function(e,t){return d>=i&&(delete s[f[p]],delete f[p],d--,p++),s[e]=t,f[d]=e,d++,t},t.get=function(e){return s[e]},t.has=function(e){return e in s},t.clear=function(){s=Object.create(null),f=Object.create(null),d=0,p=0},t.size=function(){return d},t}function Wn(e,t,n,r,o){var i=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Lt(Kn,t)}(o,e,t,n,r),a=Gn(i.formatValue.bind(i),{toKey:function(e){return isNaN(e)?e:+e}});function u(e){return a(e)}return u.format=function(e,t,n,r){return a.clear(),i.format(t,e,n,r)},u.pattern=function(e){return e&&(a.clear(),i.pattern=e,i.prepare()),i.pattern},u}var $n=\"D\",Xn=\"T\",Jn=\"TS\",Zn=\"IV\",Qn=[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"],er=[\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sun\"],tr=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],nr=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function rr(e,t){for(var n=e.length;n<t;n++)e=\"0\".concat(e);return e}function or(e){var t=e.toString().split(\".\");return t[1]?t=Number(\"0.\".concat(t[1])):0}function ir(e,t){var n,r=function(e){var t=e,n=24*or(t),r=60*or(n),o=60*or(r),i=1e3*or(o);return{d:Math.floor(t),h:Math.floor(n),m:Math.floor(r),s:Math.floor(o),f:Math.round(i)}}(e),o=r.d,i=r.h,a=r.m,u=r.s,l=r.f,c=0;/w+|t+/gi.test(t)&&(n=new Date(Date.UTC(1899,11,30+Math.floor(e),0,0,Math.round(86400*(e-Math.floor(e))))),isNaN(n.getTime())&&(n=null)),/D+/gi.test(t)||(i+=24*o),/h+/gi.test(t)||(a+=60*i),/m+/gi.test(t)||(u+=60*a),/w+/gi.test(t)&&(c=n?n.getDay()-1:0)<0&&(c=6);var s=\"\";return n&&(s=n.getUTCHours()>=12?\"pm\":\"am\"),{year:0,month:0,day:c,date:o,h:i,m:a,s:u,f:l,t:s}}var ar=function(){function e(t,n,r){St(this,e);var o,i=t||{};(i.qCalendarStrings||(i.qCalendarStrings={qLongDayNames:Qn,qDayNames:er,qLongMonthNames:tr,qMonthNames:nr}),this.localeInfo=i,this.locale_days=i.qCalendarStrings.qLongDayNames.slice(),this.locale_days_abbr=i.qCalendarStrings.qDayNames.slice(),this.locale_months=i.qCalendarStrings.qLongMonthNames.slice(),this.locale_months_abbr=i.qCalendarStrings.qMonthNames.slice(),n)||(n=(Et(o={},Xn,i.qTimeFmt||\"hh:mm:ss\"),Et(o,$n,i.qDateFmt||\"YYYY-MM-DD\"),Et(o,Jn,i.qTimestampFmt||\"YYYY-MM-DD hh:mm:ss\"),o)[r]);this.pattern=n}return It(e,[{key:\"clone\",value:function(){var t=new e(this.localeInfo,this.pattern);return t.subtype=this.subtype,t}},{key:\"format\",value:function(e,t){t||(t=this.pattern?this.pattern:\"YYYY-MM-DD hh:mm:ss\"),t=t.replace(/\\[.+]|\\[|]/g,\"\");var n,r,o,i,a,u=/t+/gi.test(t);e instanceof Date?(o=u,i=(r=e).getUTCHours(),a=r.getUTCDay()-1,o&&((i%=12)||(i=12)),a<0&&(a=6),n={year:r.getUTCFullYear(),month:r.getUTCMonth(),day:a,date:r.getUTCDate(),h:i,m:r.getUTCMinutes(),s:r.getUTCSeconds(),f:r.getUTCMilliseconds(),t:r.getUTCHours()>=12?\"pm\":\"am\"}):(e<0&&(e=-e,t=\"-\".concat(t)),n=ir(e,t));var l=function(e,t){return{\"Y+|y+\":{Y:\"\".concat(Number(\"\".concat(t.year).slice(-2))),YY:rr(\"\".concat(t.year).slice(-2),2),YYY:rr(\"\".concat(t.year).slice(-3),3),def:function(e){return rr(\"\".concat(t.year),e.length)}},\"M+\":{M:t.month+1,MM:rr(\"\".concat(t.month+1),2),MMM:e.locale_months_abbr[t.month],def:e.locale_months[t.month]},\"W+|w+\":{W:t.day,WW:rr(\"\".concat(t.day),2),WWW:e.locale_days_abbr[t.day],def:e.locale_days[t.day]},\"D+|d+\":{D:t.date,def:function(e){return rr(\"\".concat(t.date),e.length)}},\"h+|H+\":{h:t.h,def:function(e){return rr(\"\".concat(t.h),e.length)}},\"m+\":{m:t.m,def:function(e){return rr(\"\".concat(t.m),e.length)}},\"s+|S+\":{s:t.s,def:function(e){return rr(\"\".concat(t.s),e.length)}},\"f+|F+\":{def:function(e){var n=\"\".concat(t.f),r=e.length-n.length;if(r>0)for(var o=0;o<r;o++)n+=\"0\";else r<0&&(n=n.slice(0,e.length));return n}},\"t{1,2}|T{1,2}\":{def:function(e){var n=t.t;return e[0].toUpperCase()===e[0]&&(n=n.toUpperCase()),n.slice(0,e.length)}}}}(this,n),c=[];for(var s in l)Object.prototype.hasOwnProperty.call(l,s)&&c.push(s);var f=new RegExp(c.join(\"|\"),\"g\"),d=t.replace(f,(function(e){var t,n,r;for(n in l)if(Object.prototype.hasOwnProperty.call(l,n)&&(t=new RegExp(n)).test(e))break;if(!t)return\"\";for(var o in l[n])if(o===e||o.toLowerCase()===e){void 0===(r=l[n][o])&&(r=l[n][o.toLowerCase()]);break}return void 0===r&&(r=l[n].def),\"function\"==typeof r&&(r=r(e)),r}));return d}}]),e}();function ur(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Lt(ar,t)}function lr(e){return new Date(Date.UTC(1899,11,30+Math.floor(e),0,0,0,Math.round(864e5*(e-Math.floor(e)))))}function cr(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"TS\",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=ur(n,e,t),o=Gn(r.format.bind(r),{toKey:function(e){return\"object\"===Ct(e)&&\"function\"==typeof e.getTime?e.getTime():e}});function i(e){return t!==Zn?lr(e):e}function a(e){return e=i(e),o(e)}return a.format=function(e,t){return o.clear(),t=i(t),r.format(t,e)},a.locale=function(n){return r=ur(n,e,t),o=Gn(r.format.bind(r),{toKey:function(e){return\"object\"===Ct(e)?e.getTime():e}}),this},a.qtype=function(e){return void 0!==e&&(t=e,o.clear()),t},a}function sr(e,t){if(e&&e.qNumFormat&&-1!==[\"D\",\"T\",\"TS\",\"IV\"].indexOf(e.qNumFormat.qType))return cr(e.qNumFormat.qFmt,e.qNumFormat.qType,t);var n=\"#\",r=t&&void 0!==t.qThousandSep?t.qThousandSep:\",\",o=t&&void 0!==t.qDecimalSep?t.qDecimalSep:\".\",i=\"U\",a=e&&!!e.qIsAutoFormat;return e&&e.qNumFormat?(n=e.qNumFormat.qFmt||n,r=e.qNumFormat.qThou||r,o=e.qNumFormat.qDec||o,i=e.qNumFormat.qType||i,a=a&&-1===[\"M\"].indexOf(e.qNumFormat.qType)):a=!0,(a||\"U\"===i)&&(n=\"#\".concat(o,\"##A\"),i=\"U\"),Wn(n,r,o,i,t)}function fr(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.meta,r=t.id,o=t.key,i=t.localeInfo,a=t.fieldExtractor,u=t.value,l=t.type,c=t.sourceField,s=u||(\"dimension\"===l?function(e){return e.qElemNo}:function(e){return e.qValue}),f=function(e){return e.qText||\"\"},d=\"dimension\"===l?\"first\":\"avg\",p=sr(n,i),v=\"dimension\"===l?\"first\":function(e,t){return p(t)},h={id:function(){return r},key:function(){return o},raw:function(){return n},title:function(){return n.qFallbackTitle||n.label},type:function(){return l},origin:function(){return c},items:function(){return e||(e=a(h)),e},min:function(){return n.qMin},max:function(){return n.qMax},value:s,label:f,reduce:d,reduceLabel:v,formatter:function(){return p},tags:function(){return n.qTags}};return h}function dr(e,t,n,r,o){return(t[e]||[]).map((function(t,i){var a=\"\".concat(r?\"\".concat(r,\"/\"):\"\").concat(e,\"/\").concat(i),u={instance:fr(Gt({id:\"\".concat(n?\"\".concat(n,\"/\"):\"\").concat(a),key:a,meta:t},o))};return u.attrDims=dr(\"qAttrDimInfo\",t,n,a,Gt({},o,{value:function(e){return e.qElemNo},type:\"dimension\"})),u.attrExps=dr(\"qAttrExprInfo\",t,n,a,Gt({},o,{value:function(e){return e.qNum},type:\"measure\"})),u.measures=dr(\"qMeasureInfo\",t,n,a,Gt({},o,{value:function(e){return e.qValue},type:\"measure\"})),u}))}function pr(){var e,t,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=r.key,i=r.data,a=r.config,u=void 0===a?{}:a,l={fields:[],wrappedFields:[],allFields:[],virtualFields:[]},c=i;if(!c)throw new Error('Missing \"data\" input');if(!c.qDimensionInfo)throw new Error('The \"data\" input is not recognized as a hypercube');var s=pr.util,f={cache:l,cube:c,localeInfo:u.localeInfo,fieldExtractor:null,pages:null,hierarchy:function(){return null},virtualFields:u.virtualFields},d={key:function(){return o},raw:function(){return c},field:function(e){return pn(e,f)},fields:function(){return l.fields.slice()},extract:function(e){return f.extractor(e,d,l,s)},hierarchy:function(e){return f.hierarchy(e,d,l,s)},_cache:function(){return l}};\"K\"===c.qMode||\"T\"===c.qMode||!c.qMode&&c.qNodesOnDim?(f.extractor=Dn,f.hierarchy=Sn,f.pages=\"K\"===c.qMode?c.qStackedDataPages:c.qTreeDataPages):\"S\"===c.qMode?(f.extractor=Jt,f.pages=c.qDataPages,f.hierarchy=Sn):f.extractor=function(){return[]},f.fieldExtractor=function(e){return f.extractor({field:e},d,l,s)};var p=\"S\"===c.qMode?function(e){return e.qElemNumber}:void 0,v=\"S\"===c.qMode?function(e){return e.qNum}:void 0;(e=l.wrappedFields).push.apply(e,jt(dr(\"qDimensionInfo\",c,o,\"\",Gt({},f,{value:p,type:\"dimension\"})))),(t=l.wrappedFields).push.apply(t,jt(dr(\"qMeasureInfo\",c,o,\"\",Gt({},f,{value:v,type:\"measure\"})))),l.fields=l.wrappedFields.map((function(e){return e.instance}));var h=function e(t){t.forEach((function(t){l.allFields.push(t.instance),e(t.measures),e(t.attrDims),e(t.attrExps)}))};return h(l.wrappedFields),(u.virtualFields||[]).forEach((function(e){var t=d.field(e.from),n=fr(At({meta:t.raw(),id:\"\".concat(o,\"/\").concat(e.key),sourceField:t,fieldExtractor:function(e){return f.extractor({field:e},d,l,s)},key:e.key,type:t.type(),localeInfo:f.localeInfo,value:t.value},e.override||{}));l.virtualFields.push(n)})),(n=l.allFields).push.apply(n,jt(l.virtualFields)),d}var vr=[[\"qHyperCube\",\"qHyperCubeDef\"],[\"qTreeData\",\"qTreeDataDef\"],[\"qDimensionInfo\",\"qDimensions\"],[\"qMeasureInfo\",\"qMeasures\"],[\"qAttrDimInfo\",\"qAttributeDimensions\"],[\"qAttrExprInfo\",\"qAttributeExpressions\"]],hr=/\\/qDimensionInfo(?:\\/(\\d+))?/,mr=/\\/qMeasureInfo\\/(\\d+)/,yr=/\\/qAttrDimInfo\\/(\\d+)(?:\\/(\\d+))?/,gr=/\\/qAttrExprInfo\\/(\\d+)/,br=/\\/?qHyperCube/,xr=/\\/?qTreeData/,qr=function(e){return\"\".concat(e.substr(0,e.indexOf(\"/qHyperCubeDef\")+14))},wr=function(e){return\"\".concat(e.substr(0,e.indexOf(\"/qTreeDataDef\")+13))};function Mr(e,t){var n=e,r=-1,o=-1,i=\"\",a=function(e){return e};br.test(e)?(i=\"\".concat(n.substr(0,n.indexOf(\"qHyperCube\")+10)),a=qr):xr.test(e)&&(i=\"\".concat(n.substr(0,n.indexOf(\"qTreeData\")+9)),a=wr);var u=!0;if(hr.test(e)&&(r=+hr.exec(e)[1]),mr.test(e)&&(o=+mr.exec(e)[1]),yr.test(e)){o=-1,r=0;var l=+yr.exec(n)[2];isNaN(l)||(r=l,n=n.replace(/\\/\\d+$/,\"\")),u=!1}if(gr.test(e)){var c=o;if(t){o=0;var s=sn(i,t);o+=(s.qMeasureInfo||[]).length,r>-1?(o=s.qDimensionInfo.slice(0,r).reduce((function(e,t){return e+t.qAttrExprInfo.length}),o),r=-1):(o=s.qDimensionInfo.reduce((function(e,t){return e+t.qAttrExprInfo.length}),o),o=s.qMeasureInfo.slice(0,c).reduce((function(e,t){return e+t.qAttrExprInfo.length}),o)),o+=+gr.exec(n)[1]}else r>-1?(r=-1,o=+gr.exec(n)[1]):o+=+gr.exec(n)[1]+1}return vr.forEach((function(e){var t=Tt(e,2),r=t[0],o=t[1];n=n.replace(r,o)})),u&&(n=a(n)),n&&\"/\"!==n[0]&&(n=\"/\".concat(n)),{measureIdx:o,dimensionIdx:r,path:n}}function kr(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,o=n.byCells,i=n.primarySource,a=[],u={},l=e.isActive(),c=!1;if(e.brushes().forEach((function(e){var t=Mr(e.id,r);if(\"range\"===e.type&&t.measureIdx>-1&&t.dimensionIdx>-1){var n=e.brush.ranges();n.length&&(c=!0,u.multiRangeSelectTreeDataValues||(u.multiRangeSelectTreeDataValues={path:t.path,ranges:[]}),n.forEach((function(e){return u.multiRangeSelectTreeDataValues.ranges.push({qMeasureIx:t.measureIdx,qDimensionIx:t.dimensionIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!0}})})))}else{if(\"range\"===e.type&&t.measureIdx>-1){var l=e.brush.ranges();l.length&&(c=!0,u.rangeSelectHyperCubeValues||(u.rangeSelectHyperCubeValues={path:t.path,ranges:[]}),l.forEach((function(e){return u.rangeSelectHyperCubeValues.ranges.push({qMeasureIx:t.measureIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!0}})})))}if(\"range\"===e.type&&t.dimensionIdx>-1){var s=e.brush.ranges();s.length&&(c=!0,u.selectHyperCubeContinuousRange||(u.selectHyperCubeContinuousRange={path:t.path,ranges:[]}),s.forEach((function(e){return u.selectHyperCubeContinuousRange.ranges.push({qDimIx:t.dimensionIdx,qRange:{qMin:e.min,qMax:e.max,qMinInclEq:!0,qMaxInclEq:!1}})})))}if(\"value\"===e.type&&t.dimensionIdx>-1)if(o)if(r&&r.qHyperCube&&(\"P\"===r.qHyperCube.qMode||\"T\"===r.qHyperCube.qMode||\"K\"===r.qHyperCube.qMode)){var f=r.qHyperCube,d=f.qNoOfLeftDims,p=f.qEffectiveInterColumnSortOrder.indexOf(t.dimensionIdx);if(u.selectPivotCells||(u.selectPivotCells={path:t.path,cells:[]}),e.id===i||!i){var v=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)}));(0===d||p>=d)&&d>-1?v.forEach((function(e){u.selectPivotCells.cells.push({qType:\"T\",qCol:e,qRow:p-d})})):v.forEach((function(e){u.selectPivotCells.cells.push({qType:\"L\",qCol:t.dimensionIdx,qRow:e})})),c=!!u.selectPivotCells.cells.length}}else u.selectHyperCubeCells||(u.selectHyperCubeCells={path:t.path,cols:[]}),u.selectHyperCubeCells.cols.push(t.dimensionIdx),e.id!==i&&(i||u.selectHyperCubeCells.values)||(u.selectHyperCubeCells.values=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)})),c=!!u.selectHyperCubeCells.values.length);else{var h=e.brush.values().map((function(e){return+e})).filter((function(e){return!isNaN(e)}));c=!!h.length,a.push({params:[t.path,t.dimensionIdx,h,!1],method:\"selectHyperCubeValues\"})}}})),!c&&l)return[{method:\"resetMadeSelections\",params:[]}];u.rangeSelectHyperCubeValues&&a.push({method:\"rangeSelectHyperCubeValues\",params:[u.rangeSelectHyperCubeValues.path,u.rangeSelectHyperCubeValues.ranges,[],null===(t=n.orMode)||void 0===t||t]});return u.selectHyperCubeContinuousRange&&a.push({method:\"selectHyperCubeContinuousRange\",params:[u.selectHyperCubeContinuousRange.path,u.selectHyperCubeContinuousRange.ranges]}),u.selectHyperCubeCells&&a.push({method:\"selectHyperCubeCells\",params:[u.selectHyperCubeCells.path,u.selectHyperCubeCells.values,u.selectHyperCubeCells.cols]}),u.selectPivotCells&&a.push({method:\"selectPivotCells\",params:[u.selectPivotCells.path,u.selectPivotCells.cells]}),u.multiRangeSelectTreeDataValues&&a.push({method:\"multiRangeSelectTreeDataValues\",params:[u.multiRangeSelectTreeDataValues.path,u.multiRangeSelectTreeDataValues.ranges]}),a}function Cr(e){pr.util=e.data(\"matrix\").util,e.data(\"q\",pr),e.formatter(\"q-number\",Wn),e.formatter(\"q-time\",cr)}function Sr(e){var t=ft(e.layout||{},e.path.split(\"/\").join(\".\"));if(!t)return!1;var n=t.qIsOneAndOnlyOne;return void 0!==n&&n}function Dr(e){var t,n,r,o=e.selections,i=e.picassoSelections,a=e.layout,u={lockedDimensions:[],singleSelectDimensions:[]};null!=o&&null!==(t=o.isModal)&&void 0!==t&&t.call(o)&&o.confirm(),i.layout(a);var l=(null!==(n=null==a?void 0:a.qHyperCube)&&void 0!==n?n:{}).qDimensionInfo,c=void 0===l?[]:l;return u.lockedDimensions=c.map((function(e){return!!e.qLocked})),u.singleSelectDimensions=c.map((function(e,t){return Sr({layout:a,path:\"qHyperCube/qDimensionInfo/\".concat(t)})})),u.singleSelectIndex=function(e){var t,n=((null==e?void 0:e.qHyperCube)||{}).qDimensionInfo,r=void 0===n?[]:n;return null!==(t=r.map((function(e,t){var n;return!(e.qLocked||(null===(n=e.qCardinalities)||void 0===n?void 0:n.qHypercubeCardinal)<=1)&&t})).filter((function(e){return\"number\"==typeof e}))[0])&&void 0!==t?t:Math.max(r.length-1,0)}(a),u.canSelect=0===c.length||c.some((function(e){return!e.qLocked})),u.dimensionLocked=!(null===(r=c[0])||void 0===r||!r.qLocked),u}function Ir(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(null==e||!e.length)return!1;var t=e.filter((function(e){return\"object\"===r(e.data)&&Array.isArray(e.data.fields)})).every((function(e){return e.data.fields.every((function(e){var t=e.raw();return!(!t.qLocked&&t.qCardinal)}))}));return t}function Er(e){var t=e.brush,n=e.colorField,r=e.legendAlias,o=e.useLegendCube,i=void 0!==o&&o;!n||/qAttrDimInfo/.test(n)?(t.removeKeyAlias(\"attrDim/qDimensionInfo/0\"),r&&t.removeKeyAlias(r),t.addKeyAlias(\"attrDim/qDimensionInfo/0\",\"qHyperCube/\".concat(n))):i&&t.addKeyAlias(r,\"qHyperCube/\".concat(n))}Cr.qBrushHelper=kr,Cr.selections=kr;var Or=\"Enter\",Ar=\"Escape\",Nr=\"Esc\",Pr=\"Shift\";function Lr(e){var t=e.brush,n=e.getConfig;return{interceptor:function(e){var r=t.brushes(),o=n(),i=o.allowSimultaneous,a=o.layout,u=void 0===a?{}:a;r.forEach((function(n){var r,o,a;(\"range\"===n.type||null!==(r=e[0])&&void 0!==r&&r.key&&(null===(o=e[0])||void 0===o?void 0:o.key)!==n.id&&0!==i.indexOf(null===(a=e[0])||void 0===a?void 0:a.key))&&t.clear([])}));var l=e.filter((function(e){return-2!==e.value}));if(l.length>1){var s=function(e){var t=e.layout,n=void 0===t?{}:t,r=e.values,o=void 0===r?[]:r;if(null==o||!o.length)return[];var i=Array.from(new Set(o.map((function(e){return e.key})))),a=[];return i.forEach((function(e){var t=Sr({layout:n,path:e}),r=o.filter((function(t){return t.key===e})),i=t?[r.pop()]:r;a.push.apply(a,c(i))})),a.filter(Boolean)}({layout:u,values:l});return s}return l},rangeInterceptor:function(e){var r=t.brushes(),o=n().allowSimultaneous;return r.filter((function(e){return\"value\"===e.type})).length?(t.clear([]),e):(r.forEach((function(n){var r=n.id===e[0].key||o.includes(n.id)&&o.includes(e[0].key);\"range\"!==n.type||r||t.clear([])})),e)}}}var Tr=function e(t,n){return n[t]?e(t+1,n):t},jr=function(e,t){var n=t.reduce((function(e,t){return e[t]=!0,e}),{});return e.reduce((function(e,t,r){var o=Tr(r,n);return n[o]=!0,e[r]=o,e}),{})};function Fr(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.layout,n=e.filtered,r=void 0===n?{}:n,o=(null==t?void 0:t.qHyperCube)||{},i=o.qDimensionInfo,a=void 0===i?[]:i,u=o.qMeasureInfo,l=void 0===u?[]:u;return{dimensions:jr(a,r.dimensions||[]),measures:jr(l,r.measures||[])}}var Rr=\"selectHyperCubeValues\",Hr=\"rangeSelectHyperCubeValues\",Vr=\"selectHyperCubeContinuousRange\";function zr(e){var t=e.selection,n=e.fieldMap,r=t.method,o=t.params;if(r===Rr){var i=n.dimensions[o[1]];void 0!==i&&(o[1]=i)}r===Hr&&o[1].forEach((function(e){var t=n.measures[e.qMeasureIx];void 0!==t&&(e.qMeasureIx=t)}));r===Vr&&o[1].forEach((function(e){var t=n.dimensions[e.qDimIx];void 0!==t&&(e.qDimIx=t)}));return t}var _r=[],Br=0,Yr=function(e){var t=_r.filter((function(e){var t;return null===(t=e.selections)||void 0===t?void 0:t.isActive()}));t.length&&(e.key===Or?t.forEach((function(e){return e.selections.confirm()})):e.key!==Ar&&e.key!==Nr||t.forEach((function(e){return e.selections.cancel()})))},Ur=function(){document.addEventListener(\"keyup\",Yr)},Kr=function(){document.removeEventListener(\"keyup\",Yr)},Gr=function(e,t){Object.keys(t).forEach((function(n){e.on(n,t[n])}))},Wr=function(e,t){Object.keys(t).forEach((function(n){e.removeListener(n,t[n])}))};function $r(e,t,n){if(t&&void 0!==n&&\"selectHyperCubeContinuousRange\"===e.method){var r=e.params;if(r&&r[1]&&r[1][0]){var o=r[1][0],i=o.qDimIx,a=o.qRange;\"undefined\"!==i&&a&&!1===a.qMaxInclEq&&a.qMax>=n&&(a.qMaxInclEq=!0)}}}function Xr(e){var t=e.chart,n=e.document,r=e.selectionInfo,o=e.eventName,i=e.componentName,a=e.brushName,u=void 0===a?\"selection\":a,l=e.emit,c=void 0===l?\"rangeClear\":l,s=r.event===o,f=n.querySelector(\"[data-key='\".concat(i,\"-edge-0']\"));if(s||!f)return!1;var d=t.component(i);return!!d&&(d.emit(c),\"string\"==typeof u&&t.brush(u).clear(),d)}function Jr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"discreteRange\":o,a=e.componentName,u=void 0===a?\"discrete-range-brush\":a,l=e.cleared;return Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==l&&l?void 0:i,componentName:u,emit:\"areaClear\",brushName:e.brushName})}function Zr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.eventName,i=void 0===o?\"continuousRange\":o,a=e.componentName,u=void 0===a?\"continuous-range-brush\":a,l=e.cleared;return Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==l&&l?void 0:i,componentName:u,brushName:e.brushName})}function Qr(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.componentName,i=void 0===o?\"minor-range-brush\":o,a=e.eventName,u=void 0===a?\"minorRange\":a,l=e.cleared,c=void 0!==l&&l,s=e.brushName,f=Xr({selectionInfo:t,chart:n,document:r,eventName:c?void 0:u,componentName:i,brushName:void 0!==s&&s});if(f){var d=f.settings.settings,p=d.scale,v=d.brush,h=n.scale(p).data().fields.map((function(e){return e.id()})),m=n.brush(v),y=m.brushes().filter((function(e){return\"range\"===e.type&&h.some((function(t){return t===e.id}))}));m&&y.length&&y.forEach((function(e){m.removeRanges(e.brush.ranges().map((function(t){return{key:e.id,range:t}})))}))}}function eo(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"xAxis\":i,u=e.cleared;Xr({selectionInfo:t,chart:n,document:r,eventName:void 0!==u&&u?void 0:a,componentName:\"\".concat(a,\"-range-brush\"),emit:\"areaClear\",brushName:!1})&&o.clear()}function to(e){var t=e.chart,n=e.selectionInfo,r=e.selections,o=e.events,i=void 0===o?[\"tap\"]:o,a=e.brushNames,u=void 0===a?[]:a;if(n&&i.includes(n.event)){var l=n.currentComponent;n.previousComponent!==l&&(r.clear(),u.forEach((function(e){return t.brush(e).end()})))}}function no(e){var t=e.selectionInfo,n=e.chart,r=e.document,o=e.selections,i=e.eventName,a=void 0===i?\"legendRange\":i,u=e.componentName,l=void 0===u?\"legend-range-brush\":u,c=e.cleared,s=void 0!==c&&c,f=e.brushName;Xr({selectionInfo:t,chart:n,document:r,eventName:s?void 0:a,componentName:l,brushName:void 0!==f&&f})&&o.clear()}var ro=[\"chart\",\"document\",\"selections\",\"selectionInfo\"],oo=function(e){e.chart,e.document,e.selections,e.selectionInfo;var t=u(e,ro);t.clearDiscrete(),t.clearContinuous(),t.clearMinor(),t.clearRange(),t.clearTap(),t.clearLegend()};function io(e){var n=e.selectionEvents,r=e.selections,o=e.selectionInfo,i=e.clear,a=e.chart,u=e.document,l=n.start,c={selections:r,selectionInfo:o,chart:a,document:u},s=function(e){return Object.assign(o,e||{})},f=function(e){var n=e.event,r=e.components;return function(){return function(e){var n=e.selectionInfo,r=void 0===n?{}:n,o=e.setSelectionInfo,i=e.clear,a=e.event,u=e.components,l=void 0===u?[]:u;o(t(t({},r),{},{event:a,components:l.map((function(e){return e.key})).filter(Boolean)})),i()}({event:n,components:r,clear:i,chart:a,selectionInfo:o,setSelectionInfo:s})}};return\"function\"==typeof l?function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];l(t(t({defaultFunc:f({event:e,components:n}),setSelectionInfo:s,clear:i},c),{},{event:e,components:n}))}:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];f({event:e,components:t})()}}function ao(e){var t,n=e.lasso;null!=n&&null!==(t=n.active)&&void 0!==t&&t.call(n)&&(null==n||n.action(!1))}function uo(e){var n,r=e.chart,o=e.selectionInfo,i=e.selectionActions,a=e.actions,u=void 0===a?{}:a,c=e.selections,s=e.selectionEvents;if(!1===i||!1===s)return function(){};var f=(u||{}).lasso,d=void 0!==f&&f,p=i.reset,v=void 0===p?ao:p,h=i.clear,m=!1!==h&&function(e){var n=e.clear,r=void 0===n?oo:n,o=e.selections,i=e.selectionInfo,a=e.chart;return function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).cleared,n={selections:o,selectionInfo:i,chart:a,document:document,cleared:e};return r(t({clearDiscrete:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Jr(t(t({},n),e))},clearContinuous:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Zr(t(t({},n),e))},clearMinor:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Qr(t(t({},n),e))},clearRange:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return eo(t(t({},n),e))},clearTap:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return to(t(t({},n),e))},clearLegend:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return no(t(t({},n),e))}},n))}}({clear:h,selections:c,selectionInfo:o,chart:r}),y=function(e){var t=e.chart,n=e.lasso,r=e.reset,o=e.clear,i=!1,a={deactivated:function(e){r({e:e,lasso:n})},canceled:function(e){r({e:e,lasso:n}),o({e:e,chart:t,document:document})},cleared:function(e){i||(i=!0,o({e:e,chart:t,document:document,cleared:!0}),i=!1)}};return!1===r&&delete a.deactivated,!1===o&&delete a.cleared,!1===r&&!1===o&&delete a.canceled,a}({chart:r,clear:m,reset:v,lasso:d}),g={};Object.entries(y).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];g[n]=function(e,t){return t?function(n){return t({event:n,defaultFunc:e})}:e}(r,s[n])}));var b=io({selectionEvents:s,selections:c,selectionInfo:o,clear:m,chart:r,document:document});return null==u||null===(n=u.select)||void 0===n||n.on(\"start\",b),Object.entries(g).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];null==c||c.on(n,r)})),function(){var e;null==u||null===(e=u.select)||void 0===e||e.removeListener(\"start\",b),Object.entries(g).forEach((function(e){var t=l(e,2),n=t[0],r=t[1];null==c||c.removeListener(n,r)}))}}function lo(e){var t=e.chart,n=e.selectionActions,r=e.brush,o=e.actions,i=e.selectionInfo,a=e.selections,u=e.selectionEvents,c=function(e){var t=e.brush,n=e.chart,r=e.selectionInfo,o=e.brushEvents,i=void 0===o?{}:o,a=Object.entries(i).map((function(e){var o=l(e,2),i=o[0],a=o[1],u=function(){return a({chart:n,selectionInfo:r})};return t.on(i,u),[i,u]}));return function(){a.forEach((function(e){var n=l(e,2),r=n[0],o=n[1];t.removeListener(r,o)}))}}({brush:r,chart:t,selectionInfo:i,brushEvents:e.brushEvents}),s=uo({chart:t,selectionInfo:i,selectionActions:n,actions:o,selections:a,selectionEvents:u}),f=function(e){var t=e.actions;if(null==t||!t.lasso)return function(){};var n=!1,r=function(e){n||e.key!==Pr||(t.lasso.action(!0),n=!0)},o=function(e){e.key===Pr&&(t.lasso.action(!1),n=!1)};return document.addEventListener(\"keydown\",r),document.addEventListener(\"keyup\",o),function(){document.removeEventListener(\"keydown\",r),document.removeEventListener(\"keyup\",o)}}({actions:o});return function(){c(),s(),f()}}var co=[{key:\"qHyperCube/qDimensionInfo/0:numeric\",includeMax:!1}];function so(e){var t=e.chart,n=e.actions,r=e.selections,o=e.picassoQ,i=e.config,a=i.allowSimultaneous,u=void 0!==a&&a,s=i.majorScale,f=void 0===s?void 0:s,d=i.selectionActions,p=(d=void 0===d?{}:d).clear,v=d.reset,h=i.selectionEvents,m=void 0===h?{deactivated:void 0,canceled:void 0,cleared:void 0,start:void 0}:h,y=i.brushEvents,g=void 0===y?{}:y,b=i.brushName,x=void 0===b?\"selection\":b,q=i.brushMaxListeners,w=void 0===q?20:q,M=i.brushRanges,k=void 0!==M&&M,C=i.interceptors,S=void 0===C?{}:C,D=i.selectionsFn,I=void 0===D?o.selections:D,E=t.brush(x);if(\"number\"==typeof w&&E.setMaxListeners(w),k){var O=!0===k?co:k;E.configure({ranges:O})}var A={canSelect:!0,getIsSelectionLocked:!1,isInnerDimensionLocked:!1,lockedDimensions:[],singleSelectIndex:0,selectionInfo:{colorField:void 0,components:[],event:void 0,currentComponent:void 0,previousComponent:void 0}},N=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.selections,r=t.brush,o=t.majorScale,i=t.actions,a=t.selectionsFn,u=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).path,l=void 0===u?\"/qHyperCubeDef\":u;if(!n)return{layout:function(){},filteredFields:function(){},allowSimultaneous:function(){},release:function(){}};var c=++Br,s=null,f={dimensions:[],measures:[]},d=[],p={};n.on=n.on.bind(n),n.isActive=n.isActive.bind(n),n.addListener=n.addListener.bind(n),n.removeListener=n.removeListener.bind(n);var v=Lr({brush:r,getConfig:function(){return{layout:s,allowSimultaneous:d}}}),h=v.rangeInterceptor,m=v.interceptor;r.intercept(\"set-ranges\",h),r.intercept(\"toggle-ranges\",h),r.intercept(\"toggle-values\",m),r.intercept(\"set-values\",m),r.intercept(\"add-values\",m),r.on(\"start\",(function(){return n.begin(l)}));var y={activate:function(){},deactivated:function(){return r.end()},cleared:function(){return r.clear()},canceled:function(){return r.end()}};Gr(n,y);var g=null==o||null===(e=o.max)||void 0===e?void 0:e.call(o);return null!=i&&i.select?(i.select.on(\"start\",(function(){var e;r.start(),\"function\"==typeof i.select.getBrushOptions&&(p=(e=i.select).getBrushOptions.apply(e,arguments))})),i.select.on(\"end\",(function(){var e=a(r,p,s),t=Fr({layout:s,filtered:f});e.forEach((function(e){var r=zr({selection:e,fieldMap:t});$r(r,i.select.brushSelectionIncludeMax,g),n.select(r)}))}))):r.on(\"update\",(function(){var e=a(r,p,s),t=Fr({layout:s,filtered:f});e.forEach((function(e){n.select(zr({selection:e,fieldMap:t}))}))})),0===_r.length&&Ur(),_r.push({key:c,selections:n}),{layout:function(e){s=e},filteredFields:function(e){f=e},allowSimultaneous:function(e){d=e},release:function(){s=null;var e=_r.indexOf(_r.filter((function(e){return e.key===c}))[0]);-1!==e&&_r.splice(e,1),_r.length||Kr(),Wr(n,y)}}}({brush:E,majorScale:f,actions:n,selections:r,picassoQ:o,selectionsFn:I});!function(e){var t=e.brush,n=e.interceptors,r=void 0===n?{}:n;Object.entries(r).forEach((function(e){var n=l(e,2),r=n[0],o=n[1];(Array.isArray(o)?o:[o]).forEach((function(e){t.intercept(r,e)}))}))}({brush:E,interceptors:S});var P=lo({chart:t,brush:E,actions:n,selections:r,selectionInfo:A.selectionInfo,selectionActions:{clear:p,reset:v},selectionEvents:m,brushEvents:g});if(u){var L=!0===u?c(Array(15)).map((function(e,t){return\"qHyperCube/qMeasureInfo/\".concat(t)})):u;N.allowSimultaneous(L)}return{unbindEvents:P,state:A,picassoSelections:N,brush:E}}var fo=[\"colorField\",\"useLegendCube\"];function po(e){var n=e.chart,r=e.selections,o=e.actions,i=void 0!==o&&o,a=e.config,l=void 0===a?{}:a,c=so({chart:n,actions:i,selections:r,picassoQ:Cr,config:l}),s=c.unbindEvents,f=c.state,d=c.picassoSelections,p=c.brush,v=l.custom,h=void 0===v?{}:v,m=l.legendAlias,y=void 0===m?void 0:m,g=l.setBrushAliases,b=void 0===g?Er:g;return{getIsDimensionLocked:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return f.lockedDimensions[e]},getIsSelectionLocked:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return null!==(e=null==r||null===(t=r.isLocked)||void 0===t?void 0:t.call(r))&&void 0!==e?e:Ir(n)},getIsSingleSelect:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f.singleSelectIndex;return f.singleSelectDimensions[e]},getCanSelect:function(){return f.canSelect},getSelectionInfo:function(){return f.selectionInfo},setLayout:function(e){var t=Dr({selections:r,picassoSelections:d,layout:e});Object.assign(f,t)},setFilteredFields:function(e){d.filteredFields(e)},setBrushAliases:function(e){var n=e.colorField,r=e.useLegendCube,o=void 0!==r&&r,i=u(e,fo),a=t({useLegendCube:o,colorField:n,brush:p,legendAlias:y},i);b(t(t({},a),{},{defaultFunc:function(){return Er(a)}}))},destroy:function(){s(),d.release()},custom:t({},h)}}var vo=\"'Source Sans Pro', 'Arial', 'sans-serif'\",ho=\"#333333\",mo=\"#595959\",yo=\"#737373\",go=\"#cccccc\",bo=\"#e6e6e6\";function xo(e){var t={};return[].concat(c(e),c([[\"\",\"\",\"color\"],[\"object\",\"\",\"fontFamily\"],[\"object\",\"axis.label.name\",\"color\",mo],[\"object\",\"axis.label.name\",\"fontFamily\",vo],[\"object\",\"axis.label.name\",\"fontSize\",\"12px\"],[\"object\",\"axis.line.major\",\"color\",go],[\"object\",\"axis.line.minor\",\"color\",bo],[\"object\",\"axis.title\",\"color\"],[\"object\",\"axis.title\",\"fontFamily\",vo],[\"object\",\"axis.title\",\"fontSize\",\"13px\"],[\"object\",\"grid.line.highContrast\",\"color\",bo],[\"object\",\"grid.line.major\",\"color\",go],[\"object\",\"grid.line.minor\",\"color\",bo],[\"object\",\"label.value\",\"color\",mo],[\"object\",\"label.value\",\"fontFamily\",vo],[\"object\",\"label.value\",\"fontSize\",\"12px\"],[!1,\"label.value\",\"darkColor\",mo],[!1,\"label.value\",\"lightColor\",bo],[\"object\",\"outOfRange\",\"color\",\"#999\"],[\"object\",\"referenceLine.label.name\",\"color\",ho],[\"object\",\"referenceLine.label.name\",\"fontFamily\",vo],[\"object\",\"referenceLine.label.name\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"color\",bo],[\"object\",\"referenceLine.outOfBounds\",\"fontFamily\",vo],[\"object\",\"referenceLine.outOfBounds\",\"fontSize\",\"12px\"],[\"object\",\"referenceLine.outOfBounds\",\"backgroundColor\",yo,function(e){return\"transparent\"===e?yo:e}]])).reduce((function(e,n){var r=\"\".concat(n[0],\"-\").concat(n[1],\"-\").concat(n[2],\"}\");return t[r]||(t[r]=!0,e.push(n)),e}),[]).sort((function(e,t){return(e[0].split?e[0].split(\".\").length:0)-(t[0].split?t[0].split(\".\").length:0)}))}var qo=function(e){return e};function wo(e){var t=e.theme,n=e.id,r=e.transform,o=e.extend,i=e.matrix,a={},u=r.reduce((function(e,t){var n=l(t,2),r=n[0],o=n[1];return e[r]=o,e}),{});return i.forEach((function(e){var r=l(e,5),o=r[0],i=r[1],c=r[2],s=r[3],f=r[4],d=void 0===f?function(e){return e}:f,p=function(e){var t=e.theme,n=e.base,r=e.path,o=e.attribute,i=e.defaultValue,a=void 0===i?void 0:i;if(!t||!1===n)return a;var u=t.getStyle(n,r,o);return void 0===u?a:u}({theme:t,base:\"object\"===o&&n?\"\".concat(\"object\",\".\").concat(n):o,path:i,attribute:c,defaultValue:s}),v=(u[\"\".concat(i,\".\").concat(c)]||qo)(d(p));dt(a,[i,c].filter(Boolean).join(\".\"),v)})),o.forEach((function(e){var t=l(e,2),n=t[0],r=t[1];dt(a,n,r)})),a}function Mo(e){var t=e.theme,n=e.config,r=void 0===n?{}:n,o=r.id,i=r.resolve,a=void 0===i?[]:i,u=r.transform,l=void 0===u?[]:u,c=r.extend,s=void 0===c?[]:c,f={theme:t,matrix:xo(a),styles:void 0};return f.styles=wo({theme:t,id:o,transform:l,extend:s,matrix:f.matrix}),{getStyles:function(){return f.styles},getTheme:function(){return f.theme},setTheme:function(e){f.theme=e,f.styles=wo({theme:e,id:o,transform:l,extend:s,matrix:f.matrix})}}}var ko={NOOP:function(){},FALSE:function(){return!1},ARRAY:function(){return[]},OBJECT:function(){return{}}};var Co=\"chart-modules-tooltip\",So=\"#\".concat(Co);function Do(){if(!document.querySelector(So)){var e=document.createElement(\"div\");e.id=Co,e.style.overflow=\"hidden\",e.style.position=\"fixed\",e.style.pointerEvents=\"none\",e.style.left=\"0px\",e.style.top=\"0px\",e.style.width=\"100%\",e.style.height=\"100%\",e.style.zIndex=1020,document.body.appendChild(e)}}function Io(e){return{show:!0,key:e.key,type:\"tooltip\",layout:{displayOrder:3},beforeMount:function(){Do()},beforeUpdate:function(){Do()},destroyed:function(){var e;null!=(e=document.querySelector(So))&&e.parentElement&&e.childElementCount<1&&e.parentElement.removeChild(e)},settings:{appendTo:function(){return document.querySelector(So)},direction:e.rtl?\"rtl\":\"ltr\",duration:e.duration},style:{arrow:{color:\"#404040\"},content:{display:\"table\",\"border-spacing\":\"4px\",background:\"rgba(64, 64, 64, 0.9)\",opacity:\"1\",fontSize:\"13px\",fontFamily:\"'Source Sans Pro', 'Arial', 'sans-serif'\",\"empty-cells\":\"show\"},cell:{\"max-width\":\"180px\",\"word-break\":\"break-word\",\"word-wrap\":\"break-word\",\"overflow-wrap\":\"break-word\",hyphens:\"auto\"}}}}var Eo=\"position\";var Oo={bar:\"rect\",diamond:\"path\",point:\"circle\",square:\"rect\",triangle:\"path\",\"n-polygon\":\"path\",slice:\"path\"},Ao=function(e){return e.data.value},No=function(e){var t,n=e.data;return null==n||null===(t=n.major)||void 0===t?void 0:t.value};function Po(e){var t=e.chart,n=e.expando,r=e.nodes,o=e.collectConfig,i=e.collectibles,a=e.meta,u=o.from,s={chart:t,expando:n,nodes:r,collectConfig:o,collectibles:i,meta:a};switch(\"function\"==typeof u?\"custom\":u){case\"single\":return function(e){var t=l(e.nodes,1)[0];return[\"container\"===t.type&&t.children[0]||t]}(s);case\"position\":return function(e){var t=e.chart,n=e.collectibles,r=e.meta;return t.shapesAt(r.position.absolute,{components:n.map((function(e){return{key:e.key}}))})}(s);case\"dimension\":return function(e){var t=e.chart,n=e.nodes,r=e.collectConfig,o=e.collectibles,i=l(n,1)[0],a=r.filter,u=\"function\"==typeof a?a:function(){return!0},s=r.by,f=void 0===s?Ao:s;return o.reduce((function(e,n){var r=n.major,o=void 0===r?No:r,a=Oo[n.type]||n.type;return e.push.apply(e,c(t.findShapes(a).filter((function(e){return e.key===n.key&&e.data&&o({data:e.data})===f({data:i.data})})))),e}),[]).filter(u)}(s);case\"radius\":return function(e){var t=e.chart,n=e.nodes,r=e.collectConfig,o=e.collectibles,i=e.meta,a=l(n,1)[0].localBounds,u=r.distance,c=r.filter,s=\"function\"==typeof c?c:function(){return!0},f=o.map((function(e){return e.key}));return t.shapesAt({cx:i.position.absolute.x,cy:i.position.absolute.y,r:u||Math.max(a.width,a.height)},{components:f.map((function(e){return{key:e}}))}).filter(s)}(s);case\"custom\":return function(e){var t=e.chart,n=e.expando,r=e.nodes,o=e.collectConfig,i=e.meta;return o.from({chart:t,expando:n,nodes:r,meta:i})}(s);default:return[]}}var Lo=Number.MAX_VALUE;function To(e){var t=e.nodes.reduce((function(e,t){var n=t.bounds;return e.xMin=Math.min(e.xMin,n.x,n.x+n.width),e.yMin=Math.min(e.yMin,n.y,n.y+n.height),e.xMax=Math.max(e.xMax,n.x,n.x+n.width),e.yMax=Math.max(e.yMax,n.y,n.y+n.height),e}),{xMin:Lo,xMax:-Lo,yMin:Lo,yMax:-Lo}),n=t.xMin,r=t.xMax,o=t.yMin;return{x:n,y:o,width:r-n,height:t.yMax-o}}function jo(e){var t=e.chart,n=e.config,r=e.expando,o=e.placementConfig,i=e.hovered,a=e.collected,u=e.meta,s=function(e){for(var t=e.chart,n=e.config,r=e.expando,o=e.placementConfig,i=e.hovered,a=e.collected,u=e.meta,s=l(i,1)[0],f=Array.isArray(o)?o:[o],d={bounds:s.bounds,key:s.key},p=To({nodes:a}),v=0;v<f.length;v++){var h=f[v];if(\"function\"==typeof h){var m=h({chart:t,expando:r,hovered:i,collected:c(a),meta:u,collectedBounds:p,combineBounds:To});if(m)return m}if(\"trigger\"===h)return d;if(\"collectible\"===h){var y=n.main.placements.collectible;return{bounds:\"function\"==typeof y?y({collected:c(a)}):p,key:a[0].key}}}return d}({chart:t,config:n,expando:r,placementConfig:o,hovered:i,collected:a,meta:u}),f=s.bounds,d=s.key,p=l(a,1)[0].desc;return[{bounds:f,nodes:a,data:a.map((function(e){return e.data})),key:d,meta:u,desc:p}]}function Fo(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.nodes;if(!i.length)return[];var a=l(i,1)[0].key,u=n.main.collectibles;if(!u.length)return[];var c=n.main.triggers.find((function(e){return-1!==e.keys.indexOf(a)}))||{},s=c.collect,f=c.placement;if(!s||!s.from||!f)return[];var d={triggerer:a,position:o.get(Eo)},p=(Po({chart:t,expando:r,nodes:i,collectConfig:s,collectibles:u,meta:d})||[]).map((function(e){return e.children.length?e.children[0]:e}));return p.length?jo({chart:t,config:n,expando:r,placementConfig:f,hovered:i,collected:p,meta:d}):[]}var Ro=\"[־׀׃׆א-״߀-ߪߴ-ߵߺ-ࠕࠚࠤࠨ࠰-ࡘ࡞‏יִײַ-ﬨשׁ-ﭏ]\",Ho=\"[؈؋؍؛-ي٭-ٯٱ-ەۥ-ۦۮ-ۯۺ-܍ܐܒ-ܯݍ-ޥޱﭐ-ﴽﵐ-﷼ﹰ-ﻼ]\",Vo=new RegExp(\"[A-Za-zªµºÀ-ÖØ-öø-ʸʻ-ˁː-ˑˠ-ˤˮͰ-ͳͶ-ͽΆΈ-ϵϷ-҂Ҋ-։ः-हऻऽ-ीॉ-ौॎ-ॐक़-ॡ।-ॿং-হঽ-ীে-ৌৎ-ৡ০-ৱ৴-৺ਃ-ਹਾ-ੀਖ਼-੯ੲ-ੴઃ-હઽ-ીૉ-ૌૐ-ૡ૦-૯ଂ-ହଽ-ାୀେ-ୌୗ-ୡ୦-୷ஃ-ிு-ௌௐ-௲ఁ-ఽు-ౄౘ-ౡ౦-౯౿-ಹಽ-ೋೕ-ೡ೦-ീെ-ൌൎ-ൡ൦-ෆා-ෑෘ-ะา-ำเ-ๆ๏-ະາ-ຳຽ-ໆ໐-༗༚-༴༶༸༾-ཬཿ྅ྈ-ྌ྾-࿅࿇-ာေးျ-ြဿ-ၗၚ-ၝၡ-ၰၵ-ႁႃ-ႄႇ-ႌႎ-ႜ႞-ፚ፠-ᎏᎠ-Ᏼᐁ-ᙿᚁ-ᚚᚠ-ᜑᜠ-ᜱ᜵-ᝑᝠ-ᝰក-ាើ-ៅះ-ៈ។-៚ៜ០-៩᠐-ᢨᢪ-ᤜᤣ-ᤦᤩ-ᤱᤳ-ᤸ᥆-᧚ᨀ-ᨖᨙ-ᩕᩗᩡᩣ-ᩤᩭ-ᩲ᪀-᪭ᬄ-ᬳᬵᬻᬽ-ᭁᭃ-᭪᭴-᭼ᮂ-ᮡᮦ-ᮧ᮪-ᯥᯧᯪ-ᯬᯮ᯲-ᰫᰴ-ᰵ᰻-᱿᳓᳡ᳩ-ᳬᳮ-ᶿḀ-ᾼιῂ-ῌῐ-Ίῠ-Ῥῲ-ῼ‎ⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ-⅏Ⅰ-ↈ⌶-⍺⎕⒜-ⓩ⚬⠀-⣿Ⰰ-ⳤⳫ-ⳮⴀ-⵰ⶀ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ㆺㇰ-㈜㈠-㉏㉠-㉻㉿-㊰㋀-㋋㋐-㍶㍻-㏝㏠-㏾㐀-䶵一-ꒌꓐ-ꘌꘐ-ꙮꚀ-ꛯ꛲-꛷Ꜣ-ꞇ꞉-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠤꠧ꠰-꠷ꡀ-ꡳꢀ-ꣃ꣎-꣙ꣲ-ꤥ꤮-ꥆꥒ-ꥼꦃ-ꦲꦴ-ꦵꦺ-ꦻꦽ-ꨨꨯ-ꨰꨳ-ꨴꩀ-ꩂꩄ-ꩋꩍ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂ-ꯤꯦ-ꯧꯩ-꯬꯰-ﬗA-Za-zヲ-ᅵ]\"),zo=new RegExp(Ro),_o=new RegExp(Ho),Bo=function(e){return Vo.test(e)},Yo=function(e){return zo.test(e)||_o.test(e)};function Uo(e){for(var t=e?e.length:0,n=0;n<t;n++){var r=e[n];if(Bo(r))return\"ltr\";if(Yo(r))return\"rtl\"}return\"ltr\"}function Ko(e){var n=e.visibility;return{type:\"divider\",content:[{content:\"\",style:{\"background-image\":\"linear-gradient(transparent 8px, rgba(255, 255, 255, 0.4) 8px, rgba(255, 255, 255, 0.4) 9.2px, transparent 9.2px)\",height:\"17px\"},colspan:2}],visibility:t(t({},{count:!1}),n)}}function Go(e){var n=e.config,r=e.h,o=e.context,i=e.nodes,a=e.property,u=e.filter,c=e.visibility,s=n.rtl,f={type:\"color\",label:void 0,value:void 0,content:[],filter:u,visibility:t(t({},{count:!0}),c)},d=n.getColorSettings();if(\"color\"===d.type||!d.fieldType)return f;var p=l(i,1)[0];if(f.value=function(e){var t=e.config,n=e.context,r=e.property,o=e.node,i=o.data[r];if(i){if(-3===o.data.value)return o.data.label;var a=n.resources.dataset(i.source.key).field(i.source.field).formatter(),u=i.value,l=i.label,c=t.getColorSettings();if(a&&\"measure\"===c.fieldType)return Number.isNaN(+u)?\"-\":a(i.value);var s=l||u;return void 0===s||Number.isNaN(s)||\"NaN\"===s?\"-\":s}}({config:n,context:o,property:a,node:p}),void 0===f.value)return f;f.label=function(e){var t=e.config,n=e.context,r=e.property,o=e.node,i=t.getColorSettings();if(i.label)return i.label;var a=o.data[r];if(a&&\"color\"!==i.type){var u=n.resources.dataset,l=a.source,c=l.key,s=l.field;return u(c).field(s).title()}}({config:n,context:o,property:a,node:p});var v=function(e){var t=e.node.attrs;return(null==t?void 0:t.fill)||\"#ddd\"}({node:p}),h=r(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":v,margin:\"0 8px\"}});return f.content.push({content:s?[\":\",f.label]:[f.label,\":\"],style:{\"text-align\":s?\"right\":\"left\",direction:Uo(f.label)}},{content:s?[f.value,h]:[h,f.value],style:{\"text-align\":s?\"left\":\"right\",\"vertical-align\":\"middle\",direction:Uo(f.value)}}),f}function Wo(e){var n=e.config,r=e.h,o=e.context,i={section:function(e){return function(e){return{type:\"section\",content:e.content}}({content:e.content})},text:function(e){var r=e.value,o=e.style,i=e.visibility;return function(e){var n=e.config,r=e.value,o=e.style,i=(o=void 0===o?{}:o).bold,a=void 0!==i&&i,u=o.italic,l=void 0!==u&&u,c=e.visibility;return{type:\"text\",content:[{content:r,style:{\"font-weight\":a?\"bold\":\"normal\",\"font-style\":l?\"italic\":\"normal\",\"text-align\":n.rtl?\"right\":\"left\",direction:Uo(r)},colspan:2}],visibility:t(t({},{count:!0}),c)}}({config:n,value:r,style:o,visibility:i})},measure:function(e){var o=e.label,i=e.value,a=e.color,u=e.style,l=e.survive,c=e.visibility;return function(e){var n,r,o,i,a=e.config,u=e.h,l=e.label,c=e.value,s=e.color,f=e.style,d=e.survive,p=e.visibility,v=a.rtl,h=u(\"div\",{style:{display:\"inline-block\",width:10,height:10,\"background-color\":s,margin:\"0 8px\"}});return{type:\"measure\",label:l,value:c,content:[{content:v?[\":\",l]:[l,\":\"],style:{\"text-align\":v?\"right\":\"left\",\"font-weight\":null!=f&&null!==(n=f.label)&&void 0!==n&&n.bold?\"bold\":\"normal\",\"font-style\":null!=f&&null!==(r=f.label)&&void 0!==r&&r.italic?\"italic\":\"normal\",direction:Uo(l)}},{content:s?v?[c,h]:[h,c]:c,style:{\"text-align\":v?\"left\":\"right\",\"vertical-align\":\"middle\",\"font-weight\":null!=f&&null!==(o=f.value)&&void 0!==o&&o.bold?\"bold\":\"normal\",\"font-style\":null!=f&&null!==(i=f.value)&&void 0!==i&&i.italic?\"italic\":\"normal\",direction:Uo(c)}}],survive:t(t({},{color:!1,duplicate:!1}),d),visibility:t(t({},{count:!0}),p)}}({config:n,h:r,label:o,value:i,color:a,style:u,survive:l,visibility:c})},divider:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.visibility;return Ko({visibility:t})},row:function(e){return function(e){var n=e.content,r=e.style,o=e.colspan,i=e.visibility;return{type:\"row\",content:[{content:n,style:r,colspan:o}],visibility:t(t({},{count:!0}),i)}}({content:e.content,style:e.style,colspan:e.colspan,visibility:e.visibility})},raw:function(e){return function(e){var n=e.value,r=e.visibility;return{type:\"raw\",content:n,visibility:t(t({},{count:!0}),r)}}({value:e.value,visibility:e.visibility})},color:function(e){var t=e.nodes,i=e.property,a=e.filter,u=void 0===a||a,l=e.visibility;return Go({config:n,h:r,context:o,nodes:t,property:i,filter:u,visibility:l})}};return i}function $o(e){var t=e.translator,n=e.config,r=e.context,o=e.templates,i=n.main.layout,a=i.rows,u=i.grouping,l=i.single,c=function(e){var t=e.limit,n=e.grouping,r=e.single,o={count:0,overflow:0,index:{started:void 0,group:void 0}};return{process:function(e){var i=e.visibility,a=e.index;if(r&&0!==a)return n?(o.index.started!==a&&o.index.group!==a&&(o.overflow++,o.index.group=a),!1):(o.overflow++,!1);if(o.count>=t){if(!n)return o.overflow++,!1;if(o.index.started!==a)return o.index.group!==a&&(o.overflow++,o.index.group=a),!1}return i.count&&o.count++,n&&(o.index.started=a),!0},overflow:function(){return o.overflow}}}({limit:a,grouping:u,single:\"function\"==typeof l?l({meta:r.node.meta,sections:o}):l}),s=o.reduce((function(e,t,n){var r=t.type,i=t.content;\"section\"===r&&(void 0===i?[]:i).forEach((function(t){c.process({visibility:t.visibility,index:n})&&e.push(t.content)}));var a=n===o.length-1;return\"divider\"!==r||a||c.process({visibility:t.visibility,index:n})&&e.push(t.content),e}),[]).filter((function(e){return e.length})),f=c.overflow();return f&&s.push(function(e){var t=e.translator,n=e.config,r=e.count,o=t?t.get(\"Object.ChartTooltip.NMore\",r):\"+\".concat(r,\" more\"),i=Uo(o);return[{content:o,style:{\"font-weight\":\"bold\",\"text-align\":n.rtl?\"right\":\"left\",direction:i},colspan:2}]}({translator:t,config:n,count:f})),s}function Xo(e){var n=e.chart,r=e.translator,o=e.config,i=e.expando,a=e.h,u=e.data,s=e.style,f=l(u,1)[0],d=function(e){var t=e.config,n=e.nodes.reduce((function(e,n){var r=t.main.getGroupByValue({data:n.data});return e[r]||(e[r]={sorting:Object.keys(e).length,items:[]}),e[r].items.push(n),e}),{});return Object.keys(n).map((function(e){return n[e]})).sort((function(e,t){return e.sorting-t.sorting})).map((function(e){return e.items}))}({config:o,nodes:f.node.nodes}),p=function(e){var t=e.chart,n=e.config,r=e.expando,o=e.h,i=e.context,a=e.groups,u=i.node.meta,l=i.resources,s=l.dataset,f=l.formatter,d=Wo({config:n,h:o,context:i}),p=function(e){var t=e.dataset;return{dataset:{title:function(e,n){return t(e).field(n).title()}}}}({dataset:s}),v=a.map((function(e){var t=d.section({content:c((n.main.section({expando:r,h:o,nodes:e,dataset:s,formatter:f,meta:u,create:d,util:p})||[]).filter((function(e){var t;return null===(t=e.content)||void 0===t?void 0:t.length}))).filter(Boolean)});return t.content=function(e){var t=e.config,n=e.content,r=n.find((function(e){return\"color\"===e.type&&e.filter})),o=r?n.filter((function(e){return\"measure\"!==e.type||e.survive.color||e.label!==r.label||e.value!==r.value})):n;return t.main.showDuplicateMeasures?o:o.reduce((function(e,t){var n=t.type,r=t.survive;if(\"measure\"!==n||r.duplicate)return e.filtered.push(t),e;var o=\"\".concat(t.label,\"-\").concat(t.value);return e.memory[o]||(e.memory[o]=!0,e.filtered.push(t)),e}),{memory:{},filtered:[]}).filtered}({config:n,content:t.content}),t}));return n.main.sections({chart:t,expando:r,h:o,nodes:i.node.nodes,dataset:s,formatter:f,meta:u,create:d,util:p,sections:v}),v.filter(Boolean)}({chart:n,config:o,expando:i,h:a,context:f,groups:d}),v=$o({translator:r,config:o,h:a,context:f,templates:p});return v.length?function(e){var n=e.h,r=e.style;return e.rows.map((function(e){return n(\"tr\",{},e.map((function(e){var o={style:t(t({},r.cell||{}),e.style||{}),class:e.class};return e.colspan&&(o.colspan=e.colspan),n(\"td\",o,e.content)})))}))}({h:a,style:s,rows:v}):function(e){var t=e.h;return t(\"tr\",{},t(\"td\",{style:{fontStyle:\"italic\",opacity:.75}},\"Empty\"))}({h:a})}function Jo(e){var t=e.chart,n=e.translator,r=e.config,o=e.expando,i=e.internal;if(!r.main.key)return!1;var a=pt(),u=Io({key:r.main.key,rtl:r.rtl,duration:r.duration}),l=r.main.events.tooltip,c=l.afterShow,s=l.afterHide,f=function(){var e=a.get(\"collected\");return{expando:o,nodes:e.nodes,meta:e.meta}};return x(!0,u,{settings:{filter:function(e){return Fo({chart:t,config:r,expando:o,internal:i,nodes:e})},extract:function(e){return a.set(\"collected\",e.node),e},content:function(e){var i=e.h,a=e.data,u=e.style;return Xo({chart:t,translator:n,config:r,expando:o,h:i,data:a,style:u})},placement:function(e){var t=e.nodes;return r.main.placement({meta:t[0].meta})},afterShow:function(){return c(f())},afterHide:function(){return s(f())}},style:{arrow:{color:r.style.background},content:r.style}})}function Zo(e){var n=e.config,r=n.legend.keys;if(!r.tooltip||!r.component)return!1;if(\"categorical\"!==n.getColorSettings().type)return!1;var o=Io({key:r.tooltip,rtl:n.rtl,duration:n.duration});return x(!0,o,{settings:{filter:function(e){return e.filter((function(e){return e.data&&e.key===r.component}))},extract:function(e){return e},content:function(e){var n=e.h,r=e.data;return[n(\"tr\",{},[n(\"td\",{style:t(t({},e.style.cell||{}),{\"font-weight\":\"bold\",\"text-align\":\"left\"}),colspan:2},r[0].node.data.label)])]},placement:\"pointer\"},style:{arrow:{color:n.style.background},content:n.style}})}function Qo(e){var t=e.config.main.triggers.reduce((function(e,t){return t.keys.forEach((function(n){var r=t.distance||0;e.distance[n]=r,e.distances.includes(r)||e.distances.push(r),e.key[n]=!0,e.keys[r]||(e.keys[r]=[]),e.keys[r].push(n)})),e}),{distance:{},distances:[],key:{},keys:{}});return function(e){return e.components.filter((function(e){return t.key[e.key]})).reduce((function(e,n){e.any=!0,e.components.push(n.key);var r=t.distance[n.key];return 0===r?e.position.push(n.key):(e.distances.includes(r)||(e.distances.push(r),e.distanceKeys[r]=[]),e.distanceKeys[r].push(n.key)),e}),{any:!1,components:[],position:[],distances:[],distanceKeys:{}})}}var ei=function(){return!0};function ti(e){var t=e.config.main.triggers.reduce((function(e,t){var n=t.filter;return t.keys.forEach((function(t){e[t]=\"function\"==typeof n?n:ei})),e}),{});return function(e){var n=t[e.key];return!n||n(e)}}function ni(e){var t=e.chart,n=e.event,r=e.component,o={absolute:{x:0,y:0},relative:{x:0,y:0}},i=t.element.getBoundingClientRect(),a=i.left,u=i.top;o.absolute.x=(void 0===n.clientX?Math.floor(n.srcEvent.clientX):n.clientX)-a,o.absolute.y=(void 0===n.clientY?Math.floor(n.srcEvent.clientY):n.clientY)-u;var l=t.component(r);if(l){var c=l.rect.computedInner;o.relative.x=o.absolute.x-c.x,o.relative.y=o.absolute.y-c.y}return o}function ri(e){var t=e.chart,n=e.filter,r=e.hits,o=e.position,i=[];if(r.position.length&&i.push.apply(i,c(t.shapesAt(o.absolute,{components:r.position.map((function(e){return{key:e}}))}).filter(n))),!i.length&&r.distances.length){var a=[];r.distances.forEach((function(e){a.push.apply(a,c(t.shapesAt({cx:o.absolute.x,cy:o.absolute.y,r:e},{components:r.distanceKeys[e].map((function(e){return{key:e}}))}).filter(n)))})),a.length&&i.push(function(e){var t=e.nodes,n=e.origin,r=t.find((function(e){return\"path\"===e.type}));if(r)return r;var o=function(e){var t=Math.abs(n.x-(e.localBounds.x+e.localBounds.width/2)),r=Math.abs(n.y-(e.localBounds.y+e.localBounds.height/2));return Math.sqrt(t*t+r*r)};return t.slice(1).reduce((function(e,t){var n=o(t);return n<e.distance&&(e.distance=n,e.node=t),e}),{node:t[0],distance:o(t[0])}).node}({nodes:a,origin:o.relative}))}return i}function oi(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,u=n.delay.tap,s=Qo({config:n}),f=ti({config:n}),d=n.main.triggers.reduce((function(e,t){return e.push.apply(e,c(t.keys)),e}),[]);return{key:\"event:\".concat(\"tooltipTap\"),type:\"Tap\",options:{event:\"tooltipTap\",enable:function(e,r){return!r||!!n.enable({event:r})&&t.componentsFromPoint({x:r.center.x,y:r.center.y}).filter((function(e){return-1!==d.indexOf(e.key)})).length>0}},recognizeWith:\"tap\",events:a({},\"tooltipTap\",(function(e){if(e.preventDefault(),\"mouse\"!==e.pointerType&&!n.main.suppress({event:e})){var a=t.component(n.main.key);if(a&&a.show){var c=t.componentsFromPoint({x:e.center.x,y:e.center.y}),d=s({components:c});if(d.any){var p=l(d.components,1)[0],v=ni({chart:t,event:e,component:p});o.set(Eo,v);var h=ri({chart:t,filter:f,hits:d,position:v});if(h.length){var m=h[0].key;n.main.events.tooltip.beforeShow({expando:r,event:e,collectNodes:function(){return i.collectNodes({nodes:h})},meta:{triggerer:m,position:v}}).then((function(){a.emit(\"show\",e,{nodes:h,delay:u})})).catch((function(){}))}else a.emit(\"hide\")}else a.emit(\"hide\")}}}))}}function ii(e){var t=e.config,n=e.expando,r=e.internal,o=e.facade,i=t.main.events.tooltip.beforeShow,a=t.delay.hover,u={ongoing:{},latest:void 0};return function(e){var t=e.event,l=e.tooltip,c=e.nodes,s=function(e){var t=e.nodes;return JSON.stringify(t.map((function(e){var t;return{key:e.key,bounds:e.bounds,value:null===(t=e.data)||void 0===t?void 0:t.value}})))}({nodes:c});if(!u.ongoing[s]){u.ongoing[s]=!0,u.latest=s;var f=c[0].key;i({expando:n,event:t,collectNodes:function(){return o.collectNodes({nodes:c})},meta:{triggerer:f,position:r.get(Eo)}}).then((function(){s===u.latest&&l.emit(\"show\",t,{nodes:c,delay:a})})).catch((function(){l.emit(\"show\")})).finally((function(){delete u.ongoing[s],s===u.latest&&(u.latest=void 0)}))}}}function ai(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=e.facade,a=Qo({config:n}),u=ti({config:n}),c=ii({config:n,expando:r,internal:o,facade:i}),s=[n.main.key,n.legend.keys.tooltip].filter(Boolean),f=function(){s.forEach((function(e){var n=t.component(e);null!=n&&n.show&&n.emit(\"hide\")}))};return{type:\"native\",events:{mousemove:function(e){if(n.enable({event:e})&&!n.main.suppress({event:e})){var r=t.componentsFromPoint({x:e.clientX,y:e.clientY}),i=t.component(n.main.key);if(i&&i.show){var s=a({components:r});if(s.any){var f=l(s.components,1)[0],d=ni({chart:t,event:e,component:f});o.set(Eo,d);var p=ri({chart:t,filter:u,hits:s,position:d});if(!p.length)return void i.emit(\"hide\");c({event:e,tooltip:i,nodes:p})}else i.emit(\"hide\")}var v=n.legend;if(v.keys.tooltip&&v.keys.component){var h=t.component(v.keys.tooltip);h&&h.show&&(r.some((function(e){return e.key===v.keys.component}))?h.emit(\"show\",e):h.emit(\"hide\"))}}},mouseup:function(e){2===e.button&&f()},mouseleave:function(){n.main.events.interaction.mouseleave({expando:r}),f()},wheel:function(){f()}}}}function ui(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal,i=function(e){var t=e.chart,n=e.config,r=e.expando,o=e.internal;return{collectNodes:function(e){var i=e.nodes,a=l(Fo({chart:t,config:n,expando:r,internal:o,nodes:i}),1)[0];return(a=void 0===a?{nodes:[]}:a).nodes}}}({chart:t,config:n,expando:r,internal:o});return{gestures:[oi({chart:t,config:n,expando:r,internal:o,facade:i})],native:ai({chart:t,config:n,expando:r,internal:o,facade:i})}}function li(e){var t=e.chart,n=e.translator,r=function(e){var t=e.config;return x(!0,{},{rtl:!1,enable:ko.FALSE,getColorSettings:ko.OBJECT,style:{fontSize:void 0,fontFamily:void 0,color:void 0,background:void 0},delay:{hover:500,tap:0},duration:8e3,main:{key:void 0,suppress:ko.FALSE,getGroupByValue:ko.NOOP,collectibles:[],triggers:[],placement:function(){return{type:\"bounds\"}},placements:{collectible:\"combine\"},showDuplicateMeasures:!1,layout:{rows:7,grouping:!1,single:!1},section:ko.ARRAY,sections:ko.NOOP,events:{tooltip:{beforeShow:function(){return Promise.resolve()},afterShow:ko.NOOP,afterHide:ko.NOOP},interaction:{mouseleave:ko.NOOP}}},legend:{keys:{tooltip:void 0,component:void 0}}},void 0===t?{}:t)}({config:e.config}),o=pt(),i=pt(),a={components:void 0,interactions:void 0};return{getComponents:function(){return a.components||(a.components=function(e){var t=e.chart,n=e.translator,r=e.config;return[Jo({chart:t,translator:n,config:r,expando:e.expando,internal:e.internal}),Zo({config:r})].filter(Boolean)}({chart:t,translator:n,config:r,expando:o,internal:i})),a.components},getInteractions:function(){return a.interactions||(a.interactions=ui({chart:t,config:r,expando:o,internal:i})),a.interactions},expando:o}}var ci=\"AVERAGE\",si=\"LINEAR\",fi=\"POLYNOMIAL2\",di=\"POLYNOMIAL3\",pi=\"POLYNOMIAL4\",vi=\"EXPONENTIAL\",hi=\"LOG\",mi=\"POWER\";function yi(e){var t=e.dimValue,n=e.value,r=e.qTrendLine,o=r.qType,i=r.qCoeff,a={x:t,y:i[2]*Math.pow(n,2)+i[1]*n+i[0]};switch(o){default:case fi:return a;case di:return a.y+=i[3]*Math.pow(n,3),a;case pi:return a.y+=i[4]*Math.pow(n,4)+i[3]*Math.pow(n,3),a}}var gi={average:function(e){return{x:e.dimValue,y:e.qTrendLine.qCoeff[0]}},linear:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:r.qCoeff[1]*n+r.qCoeff[0]}},polynomial2:yi,polynomial3:yi,polynomial4:yi,exponential:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:Math.exp(r.qCoeff[0]+n*r.qCoeff[1])}},log:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:r.qCoeff[1]+r.qCoeff[0]*Math.log(n)}},power:function(e){var t=e.dimValue,n=e.value,r=e.qTrendLine;return{x:t,y:Math.pow(10,r.qCoeff[0]+r.qCoeff[1]*Math.log(n)*Math.LOG10E)}}};function bi(e,t){for(var n=gi[t.qType.toLowerCase()],r=Math.max(1,e/500),o=1/0,i=-1/0,a=0;a<e;a+=r){var u=n({dimValue:null,value:a+1,qTrendLine:t}).y;o=Math.min(u,o),i=Math.max(u,i)}return{min:o,max:i}}function xi(e){return gi[e.qType.toLowerCase()]}function qi(e,t){return e.meta.isContinuous?function(e,t){return{generate:function(e,n,r){var o=[],i=xi(e),a=t({qTrendLine:e,measureIndex:r}),u=a.min,l=a.max,c=(l-u)/100;if(c>0){for(var s=function(t){var a=i({dimValue:t,value:t,qTrendLine:e});if(a.layerId=n,a.measureIndex=r,a.dimValue=t,e.flipXY){var u=a.x;a.x=a.y,a.y=u,a.dimValue=a.x}o.push(a)},f=u,d=u;d<=l;d+=c)s(d),f=d;f!==l&&s(l)}return o},calculate:function(e,t){return xi(e)({dimValue:t,value:t,qTrendLine:e})},findMinMax:function(e,t){var n=this.generate(t).map((function(e){return e.y}));return{min:Math.min.apply(Math,c(n)),max:Math.max.apply(Math,c(n))}}}}(0,t):e.meta.mode.K?function(e){return{generate:function(t,n,r){for(var o=[],i=e.getDataPages()[0],a=i.qData[0].qSubNodes,u=i.qArea.qTop,l=gi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c],f=l({dimValue:s.qElemNo,value:c+u+1,qTrendLine:t});f.layerId=n,f.measureIndex=r,f.dimValue=s.qText,o.push(f)}return o},findMinMax:bi}}(e):function(e){return{generate:function(t,n,r){for(var o=[],i=e.getDataPages()[0],a=i.qMatrix,u=i.qArea.qTop,l=gi[t.qType.toLowerCase()],c=0;c<a.length;c++){var s=a[c][0],f=c+u+1,d=l({dimValue:s.qElemNumber,value:f,qTrendLine:t});d.layerId=n,d.measureIndex=r,d.dimValue=s.qText,o.push(d)}return o},calculate:function(e,t,n){return(0,gi[e.qType.toLowerCase()])({dimValue:n,value:t,qTrendLine:e})},findMinMax:bi}}(e)}var wi={TYPES:{AVERAGE:\"properties.trendlines.types.average\",LINEAR:\"properties.trendlines.types.linear\",POLYNOMIAL2:\"properties.trendlines.types.polynomial2\",POLYNOMIAL3:\"properties.trendlines.types.polynomial3\",POLYNOMIAL4:\"properties.trendlines.types.polynomial4\",EXPONENTIAL:\"properties.trendlines.types.exponential\",LOG:\"properties.trendlines.types.logarithmic\",POWER:\"properties.trendlines.types.power\"},STYLE:{DASHED:\"properties.trendlines.style.dashed\"},TYPE:\"properties.trendlines.type\",HEADER:\"properties.trendlines\",ADD_BUTTON:\"properties.trendlines.button.add\"},Mi={color:\"#f93f17\",index:9},ki={x:NaN,y:NaN,dimValue:NaN,layerId:NaN,measureIndex:NaN},Ci=function(e){var t=e.layoutService,n=e.getMinMax,r=e.colorModel,o=e.chart,i=e.translator,a=e.keys.colorScale,u=e.isEnabled,l=void 0===u?function(){return!0}:u,s=[ki],f=[],d=[],p=qi(t,n);t.getLayoutValue(\"qHyperCube.qMeasureInfo\",[]).forEach((function(e,t){Array.isArray(e.qTrendLines)&&(f.push.apply(f,c(e.qTrendLines)),d.push.apply(d,c(e.qTrendLines.map((function(){return t})))))}));var v=vt((function(e){var t=(f[e]||{}).style,n=r.settings();if(t.autoColor){if(\"measure\"===n.mode){var i=d[e],u=o.scale(a)(i);return function(e){return ve(e).l<70}(u)?function(e){var t=ve(e);return t.l<30?t.l+=15:t.l<50?t.l+=10:t.l+=5,t.toString()}(u):function(e){var t=ve(e);return t.l-=5,t.toString()}(u)}return r.resolveUIColor(Mi)}return t.paletteColor?r.resolveUIColor(t.paletteColor):\"none\"}));return{query:{hasTrendLines:function(){return!!f.length&&l()},getData:function(){return s},getStroke:v,getLineDash:function(e){return(f[e]||{}).style.lineDash},getLabel:function(e){return(f[e]||{}).label},getExpression:function(e){var t=(f[e]||{}).qExpression;return f[e].flipXY&&(t=t.replace(/[xy]/g,(function(e){return\"x\"===e?\"y\":\"x\"}))),t},isFlipped:function(e){return f[e].flipXY},getType:function(e){var t=(f[e]||{}).qType;return i.get(wi.TYPES[t])},getMinMax:function(){var e=1/0,n=-1/0;return f.forEach((function(r){var o=p.findMinMax(t.meta.size.y,r);e=Math.min(o.min,e),n=Math.max(o.max,n)})),{min:e,max:n}},getCalculatedValue:function(e,t,n){var r=f[e];return p.calculate(r,t,n)}},command:{update:function(){s.length=0,f.forEach((function(e,t){var n=p.generate(e,t,d[t]);s.push.apply(s,c(n))}))}}}},Si={source:\"trend\",extract:{field:\"x\",props:{minor:{field:\"y\"},layer:{field:\"layerId\"},measureIndex:{field:\"measureIndex\"},dimValue:{field:\"dimValue\"}}}},Di=function(e){var t=e.meta;return t.isContinuous?function(e){return(0,e.scale)(e.datum.value)}:t.isGroupedByMeasure?function(e){var t=e.scale,n=e.datum;return t([n.value,n.measureIndex.value])+t.bandwidth()/2}:function(e){var t=e.scale;return t(e.datum.value)+t.bandwidth()/2}},Ii=function(e,t){var n=t.animations,r=t.layoutService,o=t.trendLineModel,i=t.orientation;if(!o.query.hasTrendLines())return[];var a=function(e,t){var n=e.trendlines,r=e.majorScale,o=e.minorScale,i=t.animations,a=t.trendLineModel,u=t.layoutService,l=t.orientation,c=Di(u);return{key:n,type:\"line\",layout:{dock:\"center\"},data:Si,animations:i,settings:{connect:!0,orientation:l,coordinates:{major:{scale:r,fn:c},minor:{scale:o},layerId:{ref:\"layer\"}},layers:{curve:\"monotone\",line:{strokeWidth:2,stroke:function(e){var t=e.datum;return a.query.getStroke(t.layer.value)},strokeDasharray:function(e){var t=e.datum;return a.query.getLineDash(t.layer.value)}}}}}}(e,{animations:n,trendLineModel:o,layoutService:r,orientation:i}),u=[a];if(e.tooltipOverlay){var l=function(e,t){var n=e.majorScale,r=e.minorScale,o=e.tooltipOverlay,i=t.layoutService,a=\"horizontal\"===t.orientation,u={scale:n,fn:Di(i)},l={scale:r,ref:\"minor\"};return{key:o,type:\"point\",layout:{dock:\"center\"},data:Si,settings:{x:a?u:l,y:a?l:u,opacity:0,size:1,sizeLimits:{maxPx:8,minPx:8}}}}(e,{layoutService:r,orientation:i});u.push(l)}return u},Ei=function(e){e.style.dashed?e.style.lineDash=\"8, 4\":e.style.lineDash=\"\"},Oi=function(e){Ei(e),e.qMultiDimMode=\"Sum\",e.qXColIx=0};function Ai(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ni(e){return Math.pow(e.x,2)+Math.pow(e.y,2)}function Pi(e,t,n){var r=Ai(n,e),o=Ai(t,e),i=Ni(o);if(0===i)return e;var a,u,l,c,s=(u=o,((a=r).x*u.x+a.y*u.y)/i);return s<=0?e:s>=1?t:function(e,t){return{x:e.x+t.x,y:e.y+t.y}}(e,(c=s,{x:(l=o).x*c,y:l.y*c}))}function Li(e){var t,n,r=e.keys,o=e.model,i=e.chart,a=e.pos,u=e.lineNode,l=o,c=i.component(r.trendlines),s=i.scale(r.majorScale),f=i.scale(r.minorScale),d=u.data.layer.value,p=function(e,t){var n=1/0,r=null;if(1===e.length)return e[0];for(var o=0;o<e.length-1;++o){var i=Pi(e[o],e[o+1],t),a=Ni(Ai(i,t));a<n&&(n=a,r=i)}return r}(u.data.points.map((function(e){return{x:s(e.dimValue.value)*c.rect.computed.width,y:f(e.minor.value)*c.rect.computed.height}})),a);return l.query.isFlipped(d)?(n=f.invert(p.y/c.rect.computed.height),t=l.query.getCalculatedValue(d,n).y,p.x=s(t)*c.rect.computed.width):(t=s.invert(p.x/c.rect.computed.width),n=l.query.getCalculatedValue(d,t).y,p.y=f(n)*c.rect.computed.height),{key:u.key,children:[],data:{layer:d,x:t,y:n},bounds:{x:p.x,y:p.y,width:0,height:0}}}function Ti(e){var t=e.animations,n=e.chart,r=e.colorService,o=e.isEnabled,i=e.keys,a=void 0===i?{}:i,u=e.layoutService,l=e.orientation,c=e.translator,s=e.getMinMax;a.trendlines||(a.trendlines=\"trend-lines\");var f=Ci({layoutService:u,getMinMax:s,colorModel:{settings:function(){return r.getSettings()},resolveUIColor:function(e){return r.getPaletteColor(e)}},chart:n,translator:c,keys:a,isEnabled:o});return{getComponents:function(){return Ii(a,{animations:t,layoutService:u,trendLineModel:f,orientation:l})},getData:function(){return f.query.hasTrendLines()?[{key:\"trend\",data:f.query.getData()}]:[]},collectNodes:function(e){var t=e.nodes,r=e.meta;return function(e){var t=e.keys,n=e.model,r=e.chart,o=e.nodes,i=e.meta;return o.length?[Li({keys:t,model:n,chart:r,pos:i.position.relative,lineNode:o[0]})]:[]}({keys:a,model:f,chart:n,nodes:t,meta:r})},getModel:function(){return f},update:function(){return f.command.update()}}}Ti.propertyPanelProperties=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.translator,n=function(e){var n=r(e.label);return\"string\"===n&&e.label?e.label:\"object\"===n?e.label.qStringExpression?e.label.qStringExpression.qExpr:e.label.qValueExpression.qExpr:t.get(wi.TYPES[e.qType])};return{type:\"array\",ref:\"qTrendLines\",titleTranslation:wi.HEADER,itemTitleRef:n,max:8,allowAdd:!0,allowRemove:!0,allowMove:!1,addTranslation:wi.ADD_BUTTON,add:Oi,items:{label:{ref:\"label\",type:\"string\",expression:\"optional\",translation:\"Common.Label\",defaultValue:\"\"},type:{ref:\"qType\",type:\"string\",component:\"dropdown\",translation:wi.TYPE,options:[{value:ci,translation:wi.TYPES.AVERAGE},{value:si,translation:wi.TYPES.LINEAR},{value:fi,translation:wi.TYPES.POLYNOMIAL2},{value:di,translation:wi.TYPES.POLYNOMIAL3},{value:pi,translation:wi.TYPES.POLYNOMIAL4},{value:vi,translation:wi.TYPES.EXPONENTIAL},{value:hi,translation:wi.TYPES.LOG},{value:mi,translation:wi.TYPES.POWER}],defaultValue:ci},autoColor:{ref:\"style.autoColor\",type:\"boolean\",translation:\"properties.colors\",component:\"switch\",defaultValue:!0,options:[{value:!0,translation:\"Common.Auto\"},{value:!1,translation:\"Common.Custom\"}]},paletteColor:{ref:\"style.paletteColor\",translation:\"properties.color\",type:\"object\",component:\"color-picker\",dualOutput:!0,defaultValue:Mi,show:function(e){return!e.style.autoColor}},dashed:{ref:\"style.dashed\",translation:wi.STYLE.DASHED,type:\"boolean\",defaultValue:!0,change:Ei}}}};export{pt as cache,et as colorService,mt as debouncer,st as dockService,ft as getValue,wt as layoutService,vt as memoize,kt as pluginService,po as selectionService,dt as setValue,ht as storage,Mo as themeService,yt as throttler,li as tooltipService,Ti as trendlinesService};\n","/* eslint-disable prefer-rest-params */\n/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\n\n/* Simple JavaScript Inheritance\n * By John Resig http://ejohn.org/\n * MIT Licensed.\n * Modified by Qliktech\n */\n// Inspired by base2 and Prototype\n\n/* eslint no-new-func:0,no-unused-vars:0 */\n\nconst fnTest = /xyz/.test(() => {\n let xyz;\n})\n ? /\\b_super\\b/\n : /.*/;\n\n/**\n * Helper module for creating subclasses (or rather prototypal inheritance) of superclasses.\n *\n * @class\n *\n * @example\n * var Animal = Class.extend( \"Animal\", {\n * init: function ( name ) {\n * this.name = name || \"Unnamed\";\n * },\n * say: function ( sound ) {\n * console.log( this.name + \" says \" + sound );\n * }\n * } );\n *\n * var Cat = Animal.extend( \"Cat\", {\n * say: function () {\n * this._super( \"Meouw\" );\n * }\n * } );\n *\n * var cat = new Cat( \"Gustaf\" );\n * cat.say(); => \"Gustaf says Meouw\"\n *\n * @example\n * var MyClass = Class.extend();\n *\n * var a = new MyClass();\n * console.log( a instanceof MyClass ) // => true\n * console.log( a.constructor.name ) // => Class\n *\n * @example\n * var MyClass = Class.extend( \"MyClass\" );\n *\n * var a = new MyClass();\n * console.log( a instanceof MyClass ) // => true\n * console.log( a.constructor.name ) // => MyClass\n *\n */\nconst Class = function () {};\n\n/**\n * This method is available inside each function defined on the prototype when using {@link module:assets/core/utils/class~Class.extend}.\n *\n * It will invoke the super class' method with the same name, but it's up to programmer to invoke it with the arguments needed.\n * @method module:assets/core/utils/class~Class#_super\n */\n\n/**\n * Create a new Class that inherits from this class\n * @param {String} [className=\"Class\"] The name of the new class constructor.\n * @param {Object} proto The prototype for the new class.\n */\nClass.extend = function extend(className, proto) {\n const _super = this.prototype;\n\n if (typeof className !== 'string') {\n proto = className;\n className = 'Class';\n }\n\n // Instantiate a base class (but only create the instance,\n // don't run the init constructor)\n const prototype = Object.create(this.prototype);\n\n // Copy the properties over onto the new prototype\n for (const name in proto) {\n // Check if we're overwriting an existing function\n prototype[name] =\n typeof proto[name] === 'function' && typeof _super[name] === 'function' && fnTest.test(proto[name])\n ? (function (name, fn) {\n return function () {\n const tmp = this._super;\n\n // Add a new ._super() method that is the same method\n // but on the super-class\n this._super = _super[name];\n\n // The method only need to be bound temporarily, so we\n // remove it when we're done executing\n const ret = fn.apply(this, arguments);\n this._super = tmp;\n\n return ret;\n };\n })(name, proto[name])\n : proto[name];\n }\n\n if (!/^[_a-z][_a-z\\d]*$/i.test(className)) {\n throw new Error('Invalid subclass name. Alphanumericals only.');\n }\n\n // The dummy class constructor\n const ctor = new Function(\n `return (function ${className}(){ typeof this.init === 'function' && this.init.apply(this, [].slice.call(arguments)) });`\n )();\n\n // Populate our constructed prototype object\n ctor.prototype = prototype;\n\n // Enforce the constructor to be what we expect\n ctor.prototype.constructor = ctor;\n\n // And make this class extendable\n ctor.extend = extend;\n\n return ctor;\n};\n\nexport default Class;\n","function Rect(x, y, width, height) {\n if (arguments.length === 0) {\n this.set(0, 0, 0, 0);\n } else {\n this.set(x, y, width, height);\n }\n}\n\nRect.prototype = {\n toString() {\n return `${this.x} ${this.y} ${this.width} ${this.height}`;\n },\n clone() {\n return new Rect(this.x, this.y, this.width, this.height);\n },\n set(x, y, width, height) {\n if (width >= 0) {\n this.x = x;\n this.width = width;\n } else {\n this.x = x + width;\n this.width = -width;\n }\n if (height >= 0) {\n this.y = y;\n this.height = height;\n } else {\n this.y = y + height;\n this.height = -height;\n }\n },\n setLTRB(l, t, r, b) {\n if (l <= r) {\n this.x = l;\n this.width = r - l;\n } else {\n this.x = r;\n this.width = l - r;\n }\n if (t <= b) {\n this.y = t;\n this.height = b - t;\n } else {\n this.y = b;\n this.height = t - b;\n }\n },\n equal(rect) {\n return rect && this.x === rect.x && this.y === rect.y && this.width === rect.width && this.height === rect.height;\n },\n combineWith(rect) {\n const r = Math.max(rect.getRight(), this.getRight());\n const b = Math.max(rect.getBottom(), this.getBottom());\n\n // bounding box\n const x = Math.min(rect.x, this.x);\n const y = Math.min(rect.y, this.y);\n const w = Math.max(0, r - x);\n const h = Math.max(0, b - y);\n\n return new Rect(x, y, w, h);\n },\n intersectsWith(rect) {\n if (!rect) {\n return false;\n }\n if (\n this.x <= rect.getRight() &&\n rect.x <= this.getRight() &&\n this.y <= rect.getBottom() &&\n rect.y <= this.getBottom()\n ) {\n return true;\n }\n return false;\n },\n // This method is used for all shapes (rectangle, polygon, etc.) to check if there is intersection with a rectangle\n intersectsRect(rect) {\n return this.intersectsWith(rect);\n },\n intersection(rect, strict) {\n if (this.intersectsWith(rect)) {\n const x = Math.max(this.x, rect.x);\n const y = Math.max(this.y, rect.y);\n const r = Math.min(this.getRight(), rect.getRight());\n const b = Math.min(this.getBottom(), rect.getBottom());\n return new Rect(x, y, r - x, b - y);\n }\n if (strict) {\n return null;\n } // This is for combination of range selection\n return new Rect(this.x, this.y, this.width, this.height);\n },\n union(rect) {\n const x = Math.min(this.x, rect.x);\n const y = Math.min(this.y, rect.y);\n const r = Math.max(this.getRight(), rect.getRight());\n const b = Math.max(this.getBottom(), rect.getBottom());\n return new Rect(x, y, r - x, b - y);\n },\n pointInside(x, y) {\n return x >= this.x && x <= this.getRight() && y >= this.y && y <= this.getBottom();\n },\n rectInside(rect) {\n const points = rect.getPoints();\n let i;\n for (i = 0; i < 4; i++) {\n if (!this.pointInside(points[i].x, points[i].y)) {\n return false;\n }\n }\n return true;\n },\n getPoints() {\n const points = [];\n points.push({ x: this.x, y: this.y });\n points.push({ x: this.getRight(), y: this.y });\n points.push({ x: this.getRight(), y: this.getBottom() });\n points.push({ x: this.x, y: this.getBottom() });\n return points;\n },\n getRight() {\n return this.x + this.width;\n },\n getBottom() {\n return this.y + this.height;\n },\n getCenterPoint() {\n return {\n x: this.x + this.width / 2,\n y: this.y + this.height / 2,\n };\n },\n getBoundingRect() {\n return this;\n },\n scale(s) {\n const d = s - 1;\n const dw = (d * this.width) / 2;\n const dh = (d * this.height) / 2;\n this.x -= dw;\n this.y -= dh;\n this.width *= s;\n this.height *= s;\n },\n hasNaN() {\n return Number.isNaN(+this.x) || Number.isNaN(+this.y) || Number.isNaN(+this.width) || Number.isNaN(+this.height);\n },\n};\nexport default Rect;\n","import Class from '../class';\nimport Rect from './rect';\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nconst CubeSlicer = Class.extend('CubeSlicer', {\n init() {\n this.pages = [];\n },\n get(areas) {\n return areas.map((area) => this.getPage(area));\n },\n getPage(area) {\n let storage;\n let i;\n const coverage = [];\n let cover;\n // try to extract the entire requested set\n for (i = 0; i < this.pages.length; i++) {\n storage = this.pages[i].qArea;\n\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qMatrix: [],\n };\n },\n destroy() {\n this.clear();\n },\n isEmpty() {\n return !this.pages || !this.pages[0] || !this.pages[0].qArea.qHeight || !this.pages[0].qArea.qWidth;\n },\n clear() {\n this.pages = [];\n },\n store(pages) {\n this.pages = pages;\n },\n containsArea(area) {\n let a;\n for (let i = 0; i < this.pages.length; i++) {\n a = this.pages[i].qArea;\n if (\n a.qLeft <= area.qLeft &&\n a.qLeft + a.qWidth >= area.qLeft + area.qWidth &&\n a.qTop <= area.qTop &&\n a.qTop + a.qHeight >= area.qTop + area.qHeight\n ) {\n return true;\n }\n }\n\n return false;\n },\n contains(areas) {\n if (!this.pages || !this.pages.length) {\n return false;\n }\n\n return areas.filter((a) => !this.containsArea(a)).length === 0;\n },\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qMatrix: [],\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n const x = Math.max(0, area.qLeft - fromPage.qArea.qLeft);\n\n const matrix = fromPage.qMatrix\n .slice(y, y + intersection.height)\n .map((row) => row.slice(x, x + intersection.width));\n\n return {\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n qMatrix: matrix,\n };\n },\n});\n\nexport default CubeSlicer;\n","import CubeSlicer from './cube-slicer';\nimport Rect from './rect';\n\nlet deepCount;\n\nfunction addNode(node, slicedTrunk) {\n let key;\n const newNode = {};\n // eslint-disable-next-line no-restricted-syntax\n for (key in node) {\n // eslint-disable-next-line no-prototype-builtins\n if (key !== 'qSubNodes' && node.hasOwnProperty(key)) {\n newNode[key] = node[key];\n }\n }\n slicedTrunk.push(newNode);\n return newNode;\n}\n\nfunction getSlicedTreeRecursive(offset, length, subNodes) {\n // find start in tree structure\n let i;\n\n let qixNode;\n let node;\n const slicedTrunk = [];\n let subSlicedTree = [];\n let up = 0;\n let down = 0;\n\n if (subNodes.length) {\n up = subNodes[0].qUp || 0;\n down = subNodes[subNodes.length - 1].qDown || 0;\n }\n\n for (i = 0; i < subNodes.length; ++i) {\n qixNode = subNodes[i];\n // deep first\n if (qixNode.qSubNodes.length > 0) {\n subSlicedTree = getSlicedTreeRecursive(offset, length, qixNode.qSubNodes);\n }\n node = null;\n // add leaf node if within paging area or if parent and subSlicedTree contains children\n if (\n (qixNode.qSubNodes.length === 0 && deepCount >= offset && deepCount <= offset + length) ||\n subSlicedTree.length > 0\n ) {\n node = addNode(qixNode, slicedTrunk);\n // first node added in slicedtrunk? change up\n if (node.qUp !== undefined && slicedTrunk.length === 1) {\n node.qUp = up + i;\n }\n node.qSubNodes = subSlicedTree;\n }\n\n // add deepCount if leaf node was passed\n if (qixNode.qSubNodes.length === 0) {\n deepCount++;\n }\n\n // break if we have passed the paging area\n if (deepCount === offset + length) {\n if (node && node.qDown !== undefined) {\n node.qDown = down + (subNodes.length - 1 - i);\n }\n break;\n }\n }\n return slicedTrunk;\n}\n\nfunction getSlicedTree(offset, length, subNodes) {\n // find start in tree structure\n deepCount = 0;\n return getSlicedTreeRecursive(offset, length, subNodes);\n}\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nconst PivotCubeSlicer = CubeSlicer.extend('PivotCubeSlicer', {\n init() {\n this._super();\n this.requestedAreas = [];\n },\n getPage(area) {\n let storage;\n let i;\n const coverage = [];\n let cover;\n // try to extract the entire requested set\n for (i = 0; i < this.pages.length; i++) {\n storage = this.pages[i].qArea;\n\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qLeft: [],\n qTop: [],\n qData: [],\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n };\n },\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qLeft: [],\n qTop: [],\n qData: [],\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n const x = Math.max(0, area.qLeft - fromPage.qArea.qLeft);\n\n const matrix = fromPage.qData.slice(y, y + intersection.height).map((row) => row.slice(x, x + intersection.width));\n\n const leftTree = getSlicedTree(y, intersection.height, fromPage.qLeft);\n const topTree = getSlicedTree(x, intersection.width, fromPage.qTop);\n\n return {\n qLeft: leftTree,\n qTop: topTree,\n qData: matrix,\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n };\n },\n});\n\nexport default PivotCubeSlicer;\n","/* eslint-disable class-methods-use-this */\nimport { getValue } from 'qlik-chart-modules';\nimport CubeSlicer from './cube-slicer';\nimport PivotCubeSlicer from './pivot-cube-slicer';\n\nfunction sliceDataPages(slicer, layout, rects, responseProperty) {\n if (!slicer) {\n return;\n }\n\n // 1. Save original dataPages (needed when resizing the snapshot) - only once of course!\n if (!layout.snapshotData.object.origDataPages) {\n layout.snapshotData.object.origDataPages = layout.qHyperCube[responseProperty];\n }\n\n // 2. Clone and slice from original dataPages and place in qHyperCube[responseProperty]\n for (let i = 0; i < rects.length; i++) {\n rects[i].qHeight = Math.min(layout.qHyperCube.qSize.qcy, rects[i].qHeight); // never try to slice more rows than what's persisted in snapshot\n rects[i].qTop = layout.snapshotData.object.origDataPages[i].qArea.qTop; // This is necessary for dataPages with area \"window\" not starting at top\n }\n layout.qHyperCube[responseProperty] = slicer.get(rects);\n}\n\nfunction prepareCubeSlicer(layout) {\n if (layout.visualization === 'pivot-table') {\n this.responseProperty = 'qPivotDataPages';\n this.slicer = new PivotCubeSlicer();\n } else if (layout.visualization === 'table') {\n this.slicer = new CubeSlicer();\n } else {\n return;\n }\n\n let pages = layout.snapshotData.object.origDataPages;\n if (!pages) {\n pages = layout.qHyperCube[this.responseProperty];\n }\n\n this.slicer.store(pages.filter((page) => page));\n}\n\nexport default class SnapshotApi {\n constructor(layout, dataPath, responseProperty) {\n this.layout = layout;\n this.dataPath = dataPath;\n this.responseProperty = responseProperty;\n\n prepareCubeSlicer.call(this, layout);\n }\n\n getData(rects) {\n sliceDataPages(this.slicer, this.layout, rects, this.responseProperty);\n const prop = getValue(this.layout, `${this.dataPath}.${this.responseProperty}`);\n return Promise.resolve(prop);\n }\n\n setCacheOptions() {}\n\n updateCache() {}\n}\n","/**\n * Color information structure. Holds the actual color and index in palette.\n * @typedef {object} paletteColor\n * @property {string} color - Color as hex string (mandatory if index: -1)\n * @property {number} index - Index in palette\n */\n\n/**\n * Styling settings for reference line\n * @typedef {object} refLineStyle\n * @property {number} [lineThickness=2] Set the thickness for this reference line.\n * @property {string} [lineType=''] Set the dash type for this reference line.\n */\n\n/**\n * @typedef {object} refLine\n * @property {boolean|ValueExpression} show=true Set to true to display this reference line.\n * @property {string} label Reference line label.\n * @property {boolean} [showLabel=true] Set to true to show the label of this reference line.\n * @property {boolean} [showValue=true] Set to true to show the value of this reference line.\n * @property {paletteColor} paletteColor\n * @property {refLineStyle} [style] - Styling settings for reference line\n * @property {boolean} [coloredBackground=false] Set to true to fill the label and/or value of this reference line with this color\n */\n\n/**\n * @namespace properties\n * @entry\n */\nconst properties = {\n /**\n * Current version of this generic object definition.\n * @type {string}\n * @default\n */\n version: process.env.PACKAGE_VERSION,\n /**\n * Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.\n * @extends {HyperCubeDef}\n */\n qHyperCubeDef: {\n qDimensions: [],\n qMeasures: [],\n qMode: 'K',\n qAlwaysFullyExpanded: true,\n qSuppressZero: false,\n qSuppressMissing: true,\n },\n /**\n * Color settings.\n * Most color options for visualizations are set in the color object in the options. You activate custom coloring by setting `\"auto\": false` which turns off auto-coloring.\n * If `\"auto\": true`, no other properties need to be defined in the color object.\n * Note: Some of the color properties are depending on which theme is currently being used.\n * @type {object}\n */\n color: {\n /**\n * @type {object}\n */\n box: {\n /**\n * The paletteColor object is used to define the box color when you color by single color `(\"mode\": \"primary\")`.\n * @type {paletteColor}\n * @default { index: -1, color: '#e6e6e6' }\n */\n paletteColor: {\n index: -1,\n color: '#e6e6e6',\n },\n },\n /**\n * Label to be defined on tool tips when using a coloring expression.\n * Only used if `'expressionIsColor': false`.\n * @type {string}\n * @default\n */\n expressionLabel: '',\n /**\n * @type {object}\n */\n point: {\n /**\n * Set to use automatic coloring.\n * When `\"auto\": true`, color settings are based on the visualization used and the number of dimensions\n * and measures, that is, the settings are not fixed, but are dependent on the data input.\n * @type {boolean}\n * @default\n */\n auto: true,\n /**\n * Sets the coloring mode for the visualization when auto-coloring has been switched off (`\"auto\": false`). Can be one of:\n * * `primary`: a single color (by default blue) is used for all items in the chart. In visualizations that do not benefit from multiple colors (bar charts with one dimension and scatter plots), single color is the default setting.\n * * `byExpression`: coloring is based on an expression, which in most cases is a color code. Details are set in the `\"expressionIsColor\"`, `\"expressionLabel`\" and `\"colorExpression\"` properties.\n * * `byMultiple`: can be used when more than one measure is used. By default, 12 colors are used for the dimensions. The colors are reused when there are more than 12 dimension values.\n * @type {'primary'|'byExpression'|'byMultiple'}\n * @default \"primary\"\n */\n mode: 'primary',\n /**\n * Use colors encoded in master items.\n * Only applicable when `\"mode\": \"primary\"` has been defined.\n * @type {'off'|'dimension'|'measure'}\n * @default \"off\"\n */\n useBaseColors: 'off',\n /**\n * Should be true\n * @type {true}\n * @default\n */\n expressionIsColor: true,\n },\n },\n dataPoint: {\n /**\n * Size parameter for points (20 - 100), step is 5.\n * @type {number}\n * @default\n */\n bubbleScales: 100, // This means 100% to make bubbles having full size as they are now\n /**\n * Property for controlling displacement of data points\n * @type {'none'|'jitter'}\n * @default \"none\"\n */\n displacement: 'none',\n },\n /**\n * Dimension axis settings.\n * @type {object}\n */\n dimensionAxis: {\n /**\n * Axis docking position\n * @type {'near'|'far'}\n * @default \"near\"\n */\n dock: 'near',\n /**\n * Label orientation\n * @type {'auto'}\n * @default\n */\n label: 'auto',\n /**\n * Labels and title\n * @type {'all'|'labels'|'title'|'none'}\n */\n show: 'all',\n },\n /**\n * Measure axis settings.\n * @type {object}\n */\n measureAxis: {\n /**\n * Automatic max/min\n * @type {boolean}\n * @default\n */\n autoMinMax: true,\n /**\n * Axis docking position\n * @type {'near'|'far'}\n * @default \"near\"\n */\n dock: 'near',\n /**\n * Axis max value. `\"autoMinMax\"` must be set to false and `\"minMax\"`\n * must be set to `\"max\"` or `\"minMax\"` to use this property\n * @type {number|ValueExpression}\n * @default\n */\n max: 10,\n /**\n * Axis min value. `\"autoMinMax\"` must be set to false and `\"minMax\"`\n * must be set to `\"min\"` or `\"minMax\"` to use this property\n * @type {number|ValueExpression}\n * @default\n */\n min: 0,\n /**\n * Set custom max/min\n * @type {'min'|'max'|'minMax'}\n * @default \"min\"\n */\n minMax: 'min',\n /**\n * Labels and title\n * @type {'all'|'labels'|'title'|'none'}\n * @default \"all\"\n */\n show: 'all',\n /**\n * Axis scale\n * @type {number}\n * @default\n */\n spacing: 1,\n },\n /**\n * Grid lines settings.\n * @type {object}\n */\n gridlines: {\n /**\n * Automatic grid line spacing.\n * @type {boolean}\n * @default\n */\n auto: true,\n /**\n * Grid line spacing. Used only when auto is set to false.\n * @type {0|2|3}\n * @default\n */\n spacing: 2,\n },\n /**\n * Orientation setting.\n * If vertical, the dimension axis can only be docked on bottom or top and measure axis on left or right.\n * @type {'vertical'|'horizontal'}\n * @default \"horizontal\"\n */\n orientation: 'horizontal',\n /**\n * Presentation settings for the distributionplot\n * @type {object}\n */\n presentation: {\n /**\n * Visible components of the distributionplot\n * @type {'points_box'|'points'|'box'}\n * @default \"points_box\"\n */\n visibleComponents: 'points_box',\n },\n /**\n * Reference lines settings\n * @type {object}\n */\n refLine: {\n /**\n * Array of measure based reference line definitions\n * @type {refLine[]}\n */\n refLines: [],\n },\n /**\n * Wrapper for sorting properties which will be set on the outer dimension.\n * @type {object}\n * @property {boolean} autoSort=true Sort automatically\n * @property {'distplot-exp-min'|'distplot-exp-max'} elementId='distplot-exp-min' Sorting preset\n * @property {ValueExpression} expression Expression for the sorting. Requires sortByExpression to be -1 or 1.\n * @property {number} sortCriteria.sortByAscii=0 Sort by alphabetic\n * @property {number} sortCriteria.sortByExpression=0 Sort by expression\n * @property {number} sortCriteria.sortByNumeric=0 Sort by numeric\n * @property {number} sortCriteria.sortByLoadOrder=0 Sort by load order\n */\n sorting: {\n autoSort: true,\n },\n /**\n * Show title for the visualization.\n * @type {boolean=}\n * @default\n */\n showTitles: true,\n /**\n * Visualization subtitle.\n * @type {(string|StringExpression)=}\n * @default\n */\n subtitle: '',\n /**\n * Visualization title.\n * @type {(string|StringExpression)=}\n * @default\n */\n title: '',\n /**\n * Visualization footnote.\n * @type {(string|StringExpression)=}\n * @default\n */\n footnote: '',\n};\n\nexport default properties;\n","function fixInterColumnSortOrder(data) {\n if (data.qHyperCubeDef.qInterColumnSortOrder.length === 2) {\n // makes sure we always sort by the outer dimension (second)\n data.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n } else if (data.qHyperCubeDef.qInterColumnSortOrder.length === 3) {\n data.qHyperCubeDef.qInterColumnSortOrder = [1, 2, 0];\n }\n}\n\nfunction setColorVars(data) {\n const dims = data.qHyperCubeDef.qDimensions;\n if (dims.length > 1 && data.color) {\n data.color.point.persistent = true;\n }\n}\n\nexport default function (env) {\n const { translator } = env;\n\n const dimensions = {\n min: 1,\n max: 2,\n description(properties, index) {\n let translationProperty;\n if (index === 0) {\n translationProperty = 'Visualizations.Descriptions.Point';\n } else {\n translationProperty = properties.orientation === 'horizontal' ? 'properties.yAxis' : 'properties.xAxis';\n }\n return translator.get(translationProperty);\n },\n added(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n moved(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n removed(dimension, data) {\n fixInterColumnSortOrder(data);\n setColorVars(data);\n },\n };\n\n const measures = {\n min: 1,\n max: 1,\n description(properties) {\n const translationProperty = properties.orientation === 'horizontal' ? 'properties.xAxis' : 'properties.yAxis';\n return translator.get(translationProperty);\n },\n };\n\n return {\n path: '/qHyperCubeDef',\n dimensions,\n measures,\n };\n}\n","!function(e,r){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=r():\"function\"==typeof define&&define.amd?define([],r):\"object\"==typeof exports?exports.conversion=r():e.conversion=r()}(window,(function(){return function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},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,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"/conversion/\",n(n.s=2)}([function(e,r,n){\"use strict\";var t=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===o.call(e)},u=function(e){if(!e||\"[object Object]\"!==o.call(e))return!1;var r,n=t.call(e,\"constructor\"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},l=function(e,r){i&&\"__proto__\"===r.name?i(e,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):e[r.name]=r.newValue},c=function(e,r){if(\"__proto__\"===r){if(!t.call(e,r))return;if(a)return a(e,r).value}return e[r]};e.exports=function e(){var r,n,t,o,i,a,p=arguments[0],f=1,m=arguments.length,d=!1;for(\"boolean\"==typeof p&&(d=p,p=arguments[1]||{},f=2),(null==p||\"object\"!=typeof p&&\"function\"!=typeof p)&&(p={});f<m;++f)if(null!=(r=arguments[f]))for(n in r)t=c(p,n),p!==(o=c(r,n))&&(d&&o&&(u(o)||(i=s(o)))?(i?(i=!1,a=t&&s(t)?t:[]):a=t&&u(t)?t:{},l(p,{name:n,newValue:e(d,a,o)})):void 0!==o&&l(p,{name:n,newValue:o}));return p}},function(e,r,n){window,e.exports=function(e){var r={};function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=r,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},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,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var o in e)n.d(t,o,function(r){return e[r]}.bind(null,o));return t},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,\"a\",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p=\"/qlik-modifiers/\",n(n.s=1)}([function(e,r,n){\"use strict\";var t=Object.prototype.hasOwnProperty,o=Object.prototype.toString,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=function(e){return\"function\"==typeof Array.isArray?Array.isArray(e):\"[object Array]\"===o.call(e)},u=function(e){if(!e||\"[object Object]\"!==o.call(e))return!1;var r,n=t.call(e,\"constructor\"),i=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,\"isPrototypeOf\");if(e.constructor&&!n&&!i)return!1;for(r in e);return void 0===r||t.call(e,r)},l=function(e,r){i&&\"__proto__\"===r.name?i(e,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):e[r.name]=r.newValue},c=function(e,r){if(\"__proto__\"===r){if(!t.call(e,r))return;if(a)return a(e,r).value}return e[r]};e.exports=function e(){var r,n,t,o,i,a,p=arguments[0],f=1,m=arguments.length,d=!1;for(\"boolean\"==typeof p&&(d=p,p=arguments[1]||{},f=2),(null==p||\"object\"!=typeof p&&\"function\"!=typeof p)&&(p={});f<m;++f)if(null!=(r=arguments[f]))for(n in r)t=c(p,n),p!==(o=c(r,n))&&(d&&o&&(u(o)||(i=s(o)))?(i?(i=!1,a=t&&s(t)?t:[]):a=t&&u(t)?t:{},l(p,{name:n,newValue:e(d,a,o)})):void 0!==o&&l(p,{name:n,newValue:o}));return p}},function(e,r,n){\"use strict\";n.r(r);var t=n(0),o=n.n(t),i=function(e,r,n){if(!r)return!1;var t,o=r.split(\".\"),i=o[o.length-1],a=e;for(t=0;t<o.length-1;++t)void 0===a[o[t]]&&(a[o[t]]=Number.isNaN(+o[t+1])?{}:[]),a=a[o[t]];if(void 0!==n){var s=a[i];return a[i]=n,{updated:n,previous:s}}return delete a[i],!1},a=function(e,r,n){var t,o=r.split(\".\"),i=e;if(void 0===i)return n;for(t=0;t<o.length;++t){if(void 0===i[o[t]])return n;i=i[o[t]]}return i},s=\"\".concat(\" \",\"(\").concat(\" \"),u=\"\".concat(\" \",\")\").concat(\" \");function l(e){return s+e+u}function c(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e.qLibraryId){var n=function(e,r){if(!r)return null;var n,t;for(n=0;n<r.length;n++)if((t=r[n]).qInfo.qId===e)return t;return null}(e.qLibraryId,r.dimensionList);return n&&n.qData.info[0].qTags.indexOf(\"$numeric\")>-1}var t=function(e,r){if(!r)return null;var n,t,o=function(e){var r=e.trim();\"=\"===r.charAt(0)&&(r=(r=r.substring(1)).trim());var n=r.length-1;return\"[\"===r.charAt(0)&&\"]\"===r.charAt(n)&&(r=(r=r.substring(1,n)).trim()),r}(e);for(n=0;n<r.length;n++){if((t=r[n]).qName===o)return t;if(t.qDerivedFieldData)for(var i=0;i<t.qDerivedFieldData.qDerivedFieldLists.length;++i)for(var a=t.qDerivedFieldData.qDerivedFieldLists[i],s=0;s<a.qFieldDefs.length;++s){var u=a.qFieldDefs[s];if(u.qName===o)return u}}return null}(e.qDef.qFieldDefs[0],r.fieldList);return t&&t.qTags.indexOf(\"$numeric\")>-1}function p(e){return!(!e.fullAccumulation&&!e.fullRange)}function f(e,r){var n=e.crossAllDimensions;return 2===r&&n?\"RowNo(Total)\":\"RowNo()\"}function m(e){var r=function(e){return e?(e=function(e){return e.replace(/\\/\\*[^]*?\\*\\//g,\"\")}(e=function(e){return e.replace(/\\/\\/(.*)$/gm,\"\")}(e))).trim():\"\"}(e).trim();return\"=\"===r.substring(0,1)?r.substring(1).trim():r}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return\"[$(=Replace(GetObjectField(\".concat(e,\"),']',']]'))]\")}function y(e,r){var n=e.crossAllDimensions;return 2===r&&n?\"Above(Total \":\"Above(\"}function q(e){return void 0===e?\")\":\", 0, \".concat(e,\")\")}function b(e,r){return e?\"\".concat(r,'={\">=$(=Min(').concat(r,\"))<=$(=Max(\").concat(r,'))\"}'):\"\".concat(r,'={\"=Only({1}').concat(r,\")>='$(=MinString(\").concat(r,\"))' and Only({1}\").concat(r,\")<='$(=MaxString(\").concat(r,\"))'\\\"}\")}function D(e){var r=e.modifier,n=void 0===r?{}:r,t=e.dimensions,o=e.dimensionAndFieldList,i=e.funcComp,a=void 0===i?\"Sum\":i,s=e.valueComp,u=void 0===s?\"0\":s;if(!n.showExcludedValues)return\"\";if(t&&1===t.length){var l=b(c(t[0],o),d(0));return\"\".concat(a,\"({1<\").concat(l,\">}\").concat(u,\")\")}if(t&&2===t.length){var p=c(t[0],o),f=c(t[1],o),m=d(0),y=d(1),q=b(p,m),D=b(f,y);return\"\".concat(a,\"({1<\").concat(q,\",\").concat(D,\">}\").concat(u,\")\")}return\"\".concat(a,\"({1}\").concat(u,\")\")}function v(e){return\"\".concat(e,\"(\")}function g(e){var r=e.properties,n=e.layout;return a(r,\"qHyperCubeDef.qDimensions\",a(n,\"qHyperCube.qDimensionInfo\",[])).length}var h={isFullRange:p,getNumDimensions:g,getExpressionWithExcludedComp:function(e){var r=e.expression,n=e.modifier,t=e.dimensions,o=e.dimensionAndFieldList,i=e.treatMissingAsNull,a=l(m(r));if(!n.showExcludedValues)return a;var s=D({modifier:n,dimensions:t,dimensionAndFieldList:o}),u=i?\"\":\", 0\";if(t&&1===t.length){var c=d(0);return\"If(Count(\".concat(c,\") > 0, \").concat(a,\" + \").concat(s).concat(u,\")\")}if(t&&2===t.length){var p=d(0),f=d(1);return\"If(Count(\".concat(p,\") * Count(\").concat(f,\") > 0, \").concat(a,\" + \").concat(s).concat(u,\")\")}return a},getRowNoComp:f,getNumStepComp:function(e,r){if(!p(e)){var n=e.steps;return\"number\"!=typeof n||Number.isNaN(n)?6:n}return f(e,r)},getAboveCompPrefix:y,getAboveCompSuffix:q,getAboveComp:function(e,r,n,t){return y(e,r)+n+q(t)},getFunctionPrefix:v,getFunctionSuffix:function(){return\")\"},getRangeComp:function(e,r){return v(e)+r+\")\"},getAggrComp:function(e,r,n){return\"Aggr(\".concat(e,\", \").concat(r,\", \").concat(n,\")\")},getExcludedComp:D,needDimension:function(e){var r=e.modifier,n=e.properties,t=e.layout;return 0===function(e){return void 0===e.primaryDimension?e.accumulationDimension:e.primaryDimension}(r)&&2===g({properties:n,layout:t})},getDimComp:function(e,r){var n=function(e){return e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:0].qDef.qSortCriterias[0]}(e,r),t=d(r);if(!n.qSortByExpression&&!n.qSortByNumeric&&!n.qSortByAscii)return t;var o=[\"Descending\",\"Ascending\"],i=n.qSortByNumeric?\"(Numeric, \".concat(o[(n.qSortByNumeric+1)/2],\")\"):\"\",a=n.qSortByAscii?\"(Text, \".concat(o[(n.qSortByAscii+1)/2],\")\"):\"\";return n.qSortByNumeric&&n.qSortByAscii?\"(\".concat(t,\", \").concat(i,\", \").concat(a,\")\"):n.qSortByNumeric?\"(\".concat(t,\", \").concat(i,\")\"):n.qSortByAscii?\"(\".concat(t,\", \").concat(a,\")\"):t},simplifyExpression:m,extractInputExpression:function(e){var r=e.outputExpression;if(e.modifier){var n=r.indexOf(s);if(-1!==n){var t=r.indexOf(u);if(-1!==t)return r.substring(n+s.length,t)}}},initModifier:function(e,r){Object.keys(r).forEach((function(n){void 0===e[n]&&(e[n]=r[n])}))},isNumeric:c,isApplicable:function(e){var r=e.properties,n=e.layout,t=e.minDimensions,o=void 0===t?1:t,i=e.maxDimensions,a=void 0===i?2:i;if(!r&&!n)return!0;var s=g({properties:r,layout:n});return s>=o&&s<=a},getExpressionWithMarkers:l,canExtract:function(e){var r=e.indexOf(s),n=e.indexOf(u);return r>-1&&n>-1&&r<n},getDimDefWithWrapper:d,getFieldWithWrapper:function(e){var r=e?e.replace(/]/g,\"]]\"):e;return\"[\".concat(r,\"]\")}};function x(e){return(x=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}var E=o.a.bind(null,!0),A={},C=Array.isArray;function I(e){return null!=e&&!Array.isArray(e)&&\"object\"===x(e)}function M(e){return void 0===e}function S(e,r){return\"function\"==typeof e[r]||\"$$\"===r.substring(0,2)||\"_\"===r.substring(0,1)}function L(e,r){var n,t=r.substring(1).split(\"/\").slice(0,-1);return t.forEach((function(r,o){if(o!==t.length){n=+r;var i=Number.isNaN(n)?{}:[];e[n||r]=M(e[n||r])?i:e[r],e=e[n||r]}})),e}function O(e,r){var n=!0;if(I(e)&&I(r))return Object.keys(e).length===Object.keys(r).length&&(Object.keys(e).forEach((function(t){O(e[t],r[t])||(n=!1)})),n);if(C(e)&&C(r)){if(e.length!==r.length)return!1;for(var t=0,o=e.length;t<o;t+=1)if(!O(e[t],r[t]))return!1;return!0}return e===r}A.generate=function(e,r,n){n=n||\"\";var t=[];return Object.keys(r).forEach((function(o){var i=function(e){return e?E({},{val:e}).val:e}(r[o]),a=e[o],s=\"\".concat(n,\"/\").concat(o);O(i,a)||S(r,o)||(M(a)?t.push({op:\"add\",path:s,value:i}):I(i)&&I(a)?t=t.concat(A.generate(a,i,s)):C(i)&&C(a)?t=t.concat(function(e,r,n){var t=[],o=e.slice(),i=-1;function a(e,r,n){if(e[n]&&M(e[n].qInfo))return null;if(e[n]&&e[n].qInfo.qId===r)return n;for(var t=0,o=e.length;t<o;t+=1)if(e[t]&&e[t].qInfo.qId===r)return t;return-1}if(O(r,o))return t;if(!M(r[0])&&M(r[0].qInfo))return t.push({op:\"replace\",path:n,value:r}),t;for(var s=o.length-1;s>=0;s-=1)-1===(i=a(r,o[s].qInfo&&o[s].qInfo.qId,s))?(t.push({op:\"remove\",path:\"\".concat(n,\"/\").concat(s)}),o.splice(s,1)):t=t.concat(A.generate(o[s],r[i],\"\".concat(n,\"/\").concat(s)));for(var u=0,l=r.length;u<l;u+=1)-1===(i=a(o,r[u].qInfo&&r[u].qInfo.qId))?(t.push({op:\"add\",path:\"\".concat(n,\"/\").concat(u),value:r[u]}),o.splice(u,0,r[u])):i!==u&&(t.push({op:\"move\",path:\"\".concat(n,\"/\").concat(u),from:\"\".concat(n,\"/\").concat(i)}),o.splice(u,0,o.splice(i,1)[0]));return t}(a,i,s)):t.push({op:\"replace\",path:\"\".concat(n,\"/\").concat(o),value:i}))})),Object.keys(e).forEach((function(o){M(r[o])&&!S(e,o)&&t.push({op:\"remove\",path:\"\".concat(n,\"/\").concat(o)})})),t},A.apply=function(e,r){r.forEach((function(r){var n,t=L(e,r.path),o=r.path.split(\"/\").splice(-1)[0],i=o&&Number.isNaN(+o)?t[o]:t[+o]||t,a=r.from?r.from.split(\"/\").splice(-1)[0]:null;if(\"/\"===r.path&&(t=null,i=e),\"add\"===r.op||\"replace\"===r.op)if(C(t))\"-\"===o&&(o=t.length),t.splice(+o,\"add\"===r.op?0:1,r.value);else if(C(i)&&C(r.value)){var s,u=r.value.slice();i.length=0,(s=i).push.apply(s,function(e){return function(e){if(Array.isArray(e)){for(var r=0,n=new Array(e.length);r<e.length;r++)n[r]=e[r];return n}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}(u))}else if(I(i)&&I(r.value))n=i,Object.keys(n).forEach((function(e){Object.getOwnPropertyDescriptor(n,e).configurable&&!S(n,e)&&delete n[e]})),E(i,r.value);else{if(!t)throw new Error(\"Patchee is not an object we can patch\");t[o]=r.value}else if(\"move\"===r.op){var l=L(e,r.from);C(t)?t.splice(+o,0,l.splice(+a,1)[0]):(t[o]=l[a],delete l[a])}else\"remove\"===r.op&&(C(t)?t.splice(+o,1):delete t[o])}))},A.clone=function(e){return E({},e)},A.createPatch=function(e,r,n){var t={op:e.toLowerCase(),path:n};return\"move\"===t.op?t.from=r:void 0!==r&&(t.value=r),t},A.updateObject=function(e,r){Object.keys(e).length?A.apply(e,A.generate(e,r)):E(e,r)};var P=A,F=function(e,r,n){if(!e)return Promise.resolve();var t=P.generate(r,n);return o()(!0,r,n),t&&t.length?(t=t.map((function(e){return{qOp:e.op,qValue:JSON.stringify(e.value),qPath:e.path}})),e.applyPatches(t,!0)):Promise.resolve()},N=\"accumulation\";function V(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===N)return n[t]}function w(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===N)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var H={type:\"accumulation\",disabled:!1,accumulationDimension:0,crossAllDimensions:!1,showExcludedValues:!0,fullAccumulation:!1,steps:6,outputExpression:\"\"},T={translationKey:\"properties.modifier.accumulation\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=h.getNumStepComp(n,u),f=h.getAboveComp(n,u,c,p),m=h.getRangeComp(\"RangeSum\",f);if(h.needDimension({modifier:n,properties:t,layout:o})){var d=h.getDimComp(l,1),y=h.getDimComp(l,0),q=h.getAggrComp(m,d,y);m=n.showExcludedValues?h.getExcludedComp({modifier:n,dimensions:l,dimensionAndFieldList:s,valueComp:q}):q}return m},extractInputExpression:h.extractInputExpression,initModifier:function(e){h.initModifier(e,H)},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.accumulation.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(w(r,e),\".accumulationDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.accumulation.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(w(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.accumulation.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},fullRange:{refFn:function(r){return\"\".concat(w(r,e),\".fullAccumulation\")},type:\"boolean\",translation:r.range||\"properties.modifier.range\",component:\"dropdown\",schemaIgnore:!0,defaultValue:!1,options:[{value:!0,translation:r.rangeFull||\"properties.modifier.range.full\"},{value:!1,translation:r.rangeCustom||\"properties.modifier.range.custom\"}]},steps:{refFn:function(r){return\"\".concat(w(r,e),\".steps\")},type:\"integer\",translation:r.rangeSteps||\"properties.modifier.range.steps\",schemaIgnore:!0,defaultValue:6,change:function(r){var n=V(r,e);if(n){var t=n.steps;n.steps=\"number\"!=typeof t||Number.isNaN(t)?6:Math.abs(t)}},show:function(r){var n=V(r,e);return n&&!n.fullAccumulation}},showExcludedValues:{refFn:function(r){return\"\".concat(w(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(N))return!1;var i=V(r,e);return i&&!i.disabled}};return n}},j=\"movingAverage\";function _(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===j)return n[t]}function R(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===j)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var B={type:\"movingAverage\",disabled:!1,primaryDimension:0,crossAllDimensions:!1,showExcludedValues:!0,fullRange:!1,steps:6,outputExpression:\"\",nullSuppression:!1},k={translationKey:\"properties.modifier.movingAverage\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},generateExpression:function(e){var r,n=e.expression,t=e.modifier,o=e.properties,i=e.layout,s=e.numDimensions,u=e.dimensionAndFieldList;if(!t)return n;var l=s;void 0===l&&(l=h.getNumDimensions({properties:o,layout:i}));var c=a(o,\"qHyperCubeDef.qDimensions\",[]),p=t.showExcludedValues&&t.nullSuppression,f=h.getExpressionWithExcludedComp({expression:n,modifier:t,dimensions:c,dimensionAndFieldList:u,treatMissingAsNull:p}),m=h.getNumStepComp(t,l),d=h.getAboveComp(t,l,f,m);if(t.nullSuppression)r=h.getRangeComp(\"RangeAvg\",d);else{var y=h.getRangeComp(\"RangeSum\",d),q=function(e,r){var n=h.getRowNoComp(e,r);if(!h.isFullRange(e)){var t=e.steps,o=\"number\"!=typeof t||Number.isNaN(t)?6:t;return\"RangeMin(\".concat(o,\", \").concat(n,\")\")}return n}(t,l);r=\"\".concat(y,\" / \").concat(q)}var b=r;if(h.needDimension({modifier:t,properties:o,layout:i})){var D=h.getDimComp(c,1),v=h.getDimComp(c,0),g=h.getAggrComp(b,D,v);b=t.showExcludedValues?h.getExcludedComp({modifier:t,dimensions:c,dimensionAndFieldList:u,funcComp:\"Only\",valueComp:g}):g}return b},extractInputExpression:h.extractInputExpression,initModifier:function(e){h.initModifier(e,B)},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.movingAverage.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(R(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.movingAverage.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(R(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.movingAverage.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},fullRange:{refFn:function(r){return\"\".concat(R(r,e),\".fullRange\")},type:\"boolean\",translation:r.range||\"properties.modifier.range\",component:\"dropdown\",schemaIgnore:!0,defaultValue:!1,options:[{value:!0,translation:r.rangeFull||\"properties.modifier.range.full\"},{value:!1,translation:r.rangeCustom||\"properties.modifier.range.custom\"}]},steps:{refFn:function(r){return\"\".concat(R(r,e),\".steps\")},type:\"integer\",translation:r.rangeSteps||\"properties.modifier.range.steps\",schemaIgnore:!0,defaultValue:6,change:function(r){var n=_(r,e);if(n){var t=n.steps;n.steps=\"number\"!=typeof t||Number.isNaN(t)?6:Math.abs(t)}},show:function(r){var n=_(r,e);return n&&!n.fullRange}},showExcludedValues:{refFn:function(r){return\"\".concat(R(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0},nullSuppression:{refFn:function(r){return\"\".concat(R(r,e),\".nullSuppression\")},type:\"boolean\",translation:r.showNull||\"properties.dimensions.showNull\",schemaIgnore:!0,defaultValue:!1,inverted:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(j))return!1;var i=_(r,e);return i&&!i.disabled}};return n}},U=\"difference\";function G(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===U)return n[t]}function W(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===U)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}var $={type:\"difference\",disabled:!1,primaryDimension:0,crossAllDimensions:!1,showExcludedValues:!0,outputExpression:\"\"},z={translationKey:\"properties.modifier.difference\",needDimension:h.needDimension,isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},extractInputExpression:h.extractInputExpression,generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=h.getAboveComp(n,u,c),f=\"\".concat(c,\" - \").concat(p);if(h.needDimension({modifier:n,properties:t,layout:o})){var m=h.getDimComp(l,1),d=h.getDimComp(l,0),y=h.getAggrComp(f,m,d);f=n.showExcludedValues?h.getExcludedComp({modifier:n,dimensions:l,dimensionAndFieldList:s,funcComp:\"Only\",valueComp:y}):y}return f},initModifier:function(e){Object.keys($).forEach((function(r){void 0===e[r]&&(e[r]=$[r])}))},enableTotalsFunction:function(){return!1},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.difference.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{primaryDimension:{refFn:function(r){return\"\".concat(W(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.difference.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},crossAllDimensions:{refFn:function(r){return\"\".concat(W(r,e),\".crossAllDimensions\")},type:\"boolean\",translation:r.crossAllDimensions||\"properties.modifier.crossAllDimensions\",title:{translation:r.crossAllDimensionsTooltip||\"properties.modifier.difference.crossAllDimensions.tooltip\"},schemaIgnore:!0,defaultValue:!1,show:function(e,r){return r.layout.qHyperCube.qDimensionInfo.length>1}},showExcludedValues:{refFn:function(r){return\"\".concat(W(r,e),\".showExcludedValues\")},type:\"boolean\",translation:r.showExcludedValues||\"properties.modifier.showExcludedValues\",schemaIgnore:!0,defaultValue:!0}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(U))return!1;var i=G(r,e);return i&&!i.disabled}};return n}},Y={CURRENT_SELECTION:0,SELECT_FIELD_VALUE:1,DISREGARD_SELECTION:2},J={ONE_DIMENSION:0,ALL_DIMENSIOANS:1,DISREGARD_ALL_DIMENSIONS:2},K=\"normalization\";function X(e,r){var n=a(e,r);if(n)for(var t=0;t<n.length;t++)if(n[t].type===K)return n[t]}function Q(e,r){var n=function(e,r){var n=a(e,r);if(!n)return-1;for(var t=0;t<n.length;t++)if(n[t].type===K)return t;return-1}(e,r);return n>-1?\"\".concat(r,\".\").concat(n):r}function Z(e,r){for(var n=0;n<e.length;n++)if(e[n].value===r)return n;return-1}function ee(e,r,n,t){var o=r.layout.qHyperCube.qDimensionInfo.length,i=[{value:J.ONE_DIMENSION,translation:n.dimensionalScopeOneDimension||\"properties.modifier.dimensionalScope.respectOneDimension\",tooltipTranslation:n.dimensionalScopeOneDimensionTooltip||\"properties.modifier.dimensionalScope.respectOneDimension.tooltip\"},{value:J.ALL_DIMENSIOANS,translation:n.dimensionalScopeAllDimensions||\"properties.modifier.dimensionalScope.\".concat(2===o?\"respectAllDimensions\":\"respectDimension\"),tooltipTranslation:n.dimensionalScopeAllDimensionsTooltip||\"properties.modifier.dimensionalScope.\".concat(2===o?\"respectAllDimensions\":\"respectDimension\",\".tooltip\")},{value:J.DISREGARD_ALL_DIMENSIONS,translation:n.dimensionalScopeDisregardAllDimensions||\"properties.modifier.dimensionalScope.\".concat(2===o?\"disregardAllDimensions\":\"disregardDimension\"),tooltipTranslation:n.dimensionalScopeDisregardAllDimensionsTooltip||\"properties.modifier.dimensionalScope.\".concat(2===o?\"disregardAllDimensions\":\"disregardDimension\",\".tooltip\")}];return i=function(e,r,n){if(e<2){var t=Z(r,0);r.splice(t,1)}return r}(o,i),function(e,r,n){if(0===e){var t=Z(r,1);r.splice(t,1)}return r}(X(e,t).selectionScope,i)}function re(e,r,n){var t=[{value:Y.CURRENT_SELECTION,translation:r.selectionScopeCurrentSelection||\"properties.modifier.selectionScope.currentSelection\"},{value:Y.SELECT_FIELD_VALUE,translation:r.selectionScopeSpecificValue||\"properties.modifier.selectionScope.selectAField\"},{value:Y.DISREGARD_SELECTION,translation:r.selectionScopeTotal||\"properties.modifier.selectionScope.total\"}];return function(e,r,n){if(1===e){var t=Z(r,0);r.splice(t,1)}return r}(X(e,n).dimensionalScope,t)}var ne={type:\"normalization\",disabled:!1,primaryDimension:0,outputExpression:\"\",dimensionalScope:J.DISREGARD_ALL_DIMENSIONS,selectionScope:Y.DISREGARD_SELECTION};function te(e){return 2===e?\"{1}\":\"\"}function oe(e,r,n){return 1===e?\"{$<\".concat(h.getFieldWithWrapper(r),\"={'\").concat(n,\"'}>}\"):\"\"}function ie(e,r){return 0===e&&r>1||2===e?\"Total\":\"\"}function ae(e,r,n){return 0===e&&r>1?\"<\".concat(h.getDimDefWithWrapper(n),\">\"):\"\"}var se={translationKey:\"properties.modifier.normalization\",needDimension:function(){return!0},isApplicable:function(e){var r=e.properties,n=e.layout;return h.isApplicable({properties:r,layout:n,minDimensions:1,maxDimensions:2})},extractInputExpression:h.extractInputExpression,generateExpression:function(e){var r=e.expression,n=e.modifier,t=e.properties,o=e.layout,i=e.numDimensions,s=e.dimensionAndFieldList;if(!n)return r;var u=i;void 0===u&&(u=h.getNumDimensions({properties:t,layout:o}));var l=a(t,\"qHyperCubeDef.qDimensions\",[]),c=h.getExpressionWithExcludedComp({expression:r,modifier:n,dimensions:l,dimensionAndFieldList:s}),p=n.selectionScope,f=n.dimensionalScope;return function(e,r,n,t,o,i,a){var s=te(r),u=oe(r,n,t),l=\"\"===s&&\"\"===u?\"\":s||u,c=ie(o,i),p=ae(o,i,a),f=function(e){for(var r=[],n=0;n<e;n++)r[n]=h.getDimDefWithWrapper(n);return r.join(\", \")}(i);return\"\".concat(e,\"/ Sum(\").concat(l,\" \").concat(c).concat(p,\" Aggr(\").concat(l,\" \").concat(e,\", \").concat(f,\"))\")}(c,p,n.field,n.value,f,u,n.primaryDimension)},initModifier:function(e){Object.keys(ne).forEach((function(r){void 0===e[r]&&(e[r]=ne[r])}))},updateModifier:function(e,r){1===(r.qDimensions?r.qDimensions.length:0)&&0===e.dimensionalScope&&(e.dimensionalScope=2)},enableTotalsFunction:function(){return!0},propertyPanelDef:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:\"items\",items:{disclaimer:{component:\"text\",translation:r.disclaimer||\"properties.modifier.normalization.disclaimer\",show:function(e,r){return!h.isApplicable({properties:r.properties})}},settings:{type:\"items\",items:{selectionScope:{refFn:function(r){return\"\".concat(Q(r,e),\".selectionScope\")},type:\"string\",translation:r.modifierSelectionScope||\"properties.modifier.selectionScope\",title:{translation:r.modifierSelectionScopeTooltip||\"properties.modifier.selectionScope.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:Y.DISREGARD_SELECTION,options:function(n){return re(n,r,e)}},field:{refFn:function(r){return\"\".concat(Q(r,e),\".field\")},type:\"string\",component:\"expression-with-dropdown\",translation:\"Common.Field\",defaultValue:\"\",dropdownOnly:!0,options:function(e,r,n){return n.app.getFieldList().then((function(e){return e.map((function(e){return{label:e.qName,value:e.qName}}))}))},show:function(r){return X(r,e).selectionScope===Y.SELECT_FIELD_VALUE}},value:{refFn:function(r){return\"\".concat(Q(r,e),\".value\")},type:\"string\",ref:\"value\",component:\"string\",translation:\"properties.value\",expression:\"optional\",show:function(r){return X(r,e).selectionScope===Y.SELECT_FIELD_VALUE}},dimensionalScope:{refFn:function(r){return\"\".concat(Q(r,e),\".dimensionalScope\")},type:\"string\",translation:r.modifierDimensionalScope||\"properties.modifier.dimensionalScope\",title:{translation:r.modifierDimensionalScopeTooltip||\"properties.modifier.dimensionalScope.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:J.DISREGARD_ALL_DIMENSIONS,supportTooltip:!0,options:function(n,t){return ee(n,t,r,e)}},primaryDimension:{refFn:function(r){return\"\".concat(Q(r,e),\".primaryDimension\")},type:\"integer\",translation:r.primaryDimension||\"properties.modifier.primaryDimension\",title:{translation:r.primaryDimensionTooltip||\"properties.modifier.normalization.primaryDimension.tooltip\"},component:\"dropdown\",schemaIgnore:!0,defaultValue:1,options:function(e,r){return r.layout.qHyperCube.qDimensionInfo.map((function(e,r){return{value:r,label:e.qGroupFallbackTitles[0]}}))},show:function(r,n){return(X(r,e).dimensionalScope||0)===J.ONE_DIMENSION&&n.layout.qHyperCube.qDimensionInfo.length>1}}},show:function(e,r){return h.isApplicable({properties:r.properties})}}},show:function(r,n,t){var o=t.ext.support.modifiers;if(!Array.isArray(o)||-1===o.indexOf(K))return!1;var i=X(r,e);return i&&!i.disabled}};return n},getDisregardSelectionComp:te,getFieldSelectionComp:oe,getTotalComp:ie,getSelectedDimComp:ae},ue={getExpression:function(e){return a(e,\"qDef.base.qDef\")||a(e,\"qDef.qDef\")},getExpressionRef:function(e){return a(e,\"qDef.base.qDef\")?\"qDef.base.qDef\":\"qDef.qDef\"},getLibraryIdRef:function(e){return a(e,\"qDef.base.qLibraryId\")?\"qDef.base.qLibraryId\":\"qLibraryId\"},getLibraryId:function(e){return a(e,\"qDef.base.qLibraryId\")||a(e,\"qLibraryId\")},getLabelRef:function(e){return a(e,\"qDef.base\")?\"qDef.base.qLabel\":\"qDef.qLabel\"},getLabelExpressionRef:function(e){return a(e,\"qDef.base\")?\"qDef.base.qLabelExpression\":\"qDef.qLabelExpression\"}},le={initBase:function(e,r){(r||le.isValid(e))&&(i(e,\"qDef.base.qDef\",a(e,\"qDef.qDef\")),i(e,\"qDef.base.qLibraryId\",a(e,\"qLibraryId\")),i(e,\"qDef.base.qLabel\",a(e,\"qDef.qLabel\")),i(e,\"qDef.base.qLabelExpression\",a(e,\"qDef.qLabelExpression\")))},restoreBase:function(e){le.isValid(e)&&(i(e,\"qDef.qDef\",a(e,\"qDef.base.qDef\")),i(e,\"qLibraryId\",a(e,\"qDef.base.qLibraryId\")),i(e,\"qDef.qLabel\",a(e,\"qDef.base.qLabel\")),i(e,\"qDef.qLabelExpression\",a(e,\"qDef.base.qLabelExpression\")),a(e,\"qDef.qAggrFunc\")&&a(e,\"qDef.base.qAggrFunc\")&&i(e,\"qDef.qAggrFunc\",a(e,\"qDef.base.qAggrFunc\")),delete e.qDef.base)},isValid:function(e){var r=a(e,\"qDef.base.qDef\"),n=a(e,\"qDef.base.qLibraryId\");return void 0!==r||void 0!==n}},ce=le;function pe(e){return(pe=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}var fe={accumulation:T,movingAverage:k,difference:z,normalization:se},me=(r.default={modifiers:fe,apply:de,applyModifiers:ye,cleanUpMeasure:qe,destroy:function(e){e&&me[e.id]&&me[e.id].masterItemSubscriber&&(me[e.id].masterItemSubscriber&&me[e.id].masterItemSubscriber.unsubscribe(),delete me[e.id])},hasActiveModifiers:be,getActiveModifier:De,initBase:ce.initBase,isSupportedModifiers:function(e){return Array.isArray(e)&&e.some((function(e){return fe[e]}))},isApplicableSupportedModifiers:function(e){var r=e.modifierTypes,n=e.properties,t=e.layout;return Array.isArray(r)&&r.some((function(e){return fe[e]&&fe[e].isApplicable({properties:n,layout:t})}))},measureBase:ue,limitedSorting:function(e){var r=e.measures,n=e.properties,t=e.layout,o=!1,i=!1;return r.forEach((function(e){var r=he(e);Se({modifiers:r,properties:n,layout:t})&&(o=!0,i=i||Ne({modifiers:r,properties:n,layout:t}))})),o&&!i},ifEnableTotalsFunction:ve},{});function de(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.model,n=e.properties,t=e.isSnapshot,i=void 0!==t&&t,s=e.masterItem;me[r.id]=me[r.id]||{isFirstTime:!0};var u=me[r.id].isFirstTime;if(me[r.id].isFirstTime=!1,n&&\"object\"===pe(n))return ye({model:r,properties:n});var l=r?r.layout:void 0,c=a(l,\"qSelectionInfo.qInSelections\");if(i||c)return Promise.resolve(!1);var p=a(l,\"qHyperCube.qMeasureInfo\"),f=me[r.id].lastReloadTime;if(me[r.id].lastReloadTime=a(r,\"app.layout.qLastReloadTime\"),be({measures:p,layout:l})){var m=function(e){var r=e.measures,n=e.layout,t=e.lastReloadTime;return a(e.model,\"app.layout.qLastReloadTime\")!==t&&function(e){var r=e.measures,n=e.properties,t=e.layout;return!!Array.isArray(r)&&r.some((function(e){return Me({measure:e,properties:n,layout:t})}))}({measures:r,layout:n})}({measures:p,layout:l,model:r,lastReloadTime:f});return m||function(e){var r=e.measures,n=e.layout,t=e.masterItem,o=e.isFirstTime;return!!Array.isArray(r)&&(o||t||r.some((function(e){return function(e){var r=e.measure,n=e.layout;return Se({modifiers:he(r),layout:n})?!r.base:!!r.base}({measure:e,layout:n})})))}({measures:p,layout:l,masterItem:s,isFirstTime:u})?r.getEffectiveProperties().then((function(e){var n=o()(!0,{},e);Ee(n);var t=Ve(n);return Le({model:r}).then((function(o){return Oe({libraryIds:t,model:r}).then((function(t){return m&&function(e){var r=e.properties;ge(r).forEach((function(e){return function(e){var r=e.measure;if(Me({measure:r,properties:e.properties})){var n=0,t=r.qDef.modifiers;Array.isArray(t)&&t.forEach((function(e){if(\"object\"===pe(e)&&!e.disabled){if(n++,\"object\"!==pe(fe[e.type]))throw new Error('Modifier \"'.concat(e.type,'\" is not available'));if(n>1)throw new Error(\"More than 1 modifier on a measure! (not yet supported)\");var t=fe[e.type].extractInputExpression({outputExpression:r.qDef.qDef,modifier:e});void 0!==t&&Ce(r)&&h.simplifyExpression(r.qDef.base.qDef)!==h.simplifyExpression(t)&&(r.qDef.base.qDef=t)}}))}}({measure:e,properties:r})}))}({properties:n}),ye({model:r,oldProperties:e,properties:n,runUpdateIfChange:!0,masterItem:s,libraryItemsProps:t,dimensionAndFieldList:o})}))}))})):Promise.resolve(!1)}return function(e){return!!Array.isArray(e)&&e.some((function(e){return\"object\"===pe(e.base)}))}(p)?r.getEffectiveProperties().then((function(e){return function(e){var r=e.model,n=e.properties,t=Ve(n);return we({model:r,libraryIds:t}).then((function(){var e=o()(!0,{},n);return ge(n).forEach((function(e){return qe(e)})),Fe({oldProperties:e,newProperties:n,model:r})}))}({model:r,properties:e})})):Promise.resolve(!1)}function ye(e){var r=e.model,n=e.oldProperties,t=e.properties,i=e.measures,s=e.runUpdateIfChange,u=void 0!==s&&s,l=e.masterItem,c=e.libraryItemsProps,p=e.dimensionAndFieldList;void 0===n&&(n=u?o()(!0,{},t):t),Ee(t);var f=Ve(t);return we({model:r,libraryIds:f,masterItem:l}).then((function(){return function(e){var r=e.measures,n=e.properties,t=e.model,i=e.libraryItemsProps,s=e.dimensionAndFieldList;if(r||(r=ge(n)),!r.length)return Promise.resolve();if(!be({measures:r,properties:n}))return r.forEach((function(e){return qe(e)})),Promise.resolve();var u=i?void 0:Ve(n);return Le({model:t,dimensionAndFieldList:s}).then((function(e){return Oe({libraryIds:u,model:t,libraryItemsProps:i}).then((function(t){r.forEach((function(r){Se({modifiers:r.qDef.modifiers,properties:n})?(function(e){var r=e.measure,n=e.properties,t=e.libraryItemsProps,i=e.dimensionAndFieldList,s=0;ce.isValid(r)||ce.initBase(r,!0);var u=r.qDef,l=u.modifiers,c=u.base;Array.isArray(l)&&l.forEach((function(e){if(\"object\"===pe(e)&&!e.disabled){if(s++,\"object\"!==pe(fe[e.type]))throw new Error('Modifier \"'.concat(e.type,'\" is not available'));if(s>1)throw new Error(\"More than 1 modifier on a measure! (not yet supported)\");fe[e.type].initModifier(e);var u=r.qLibraryId||c&&c.qLibraryId;u?function(e){var r=e.measure,n=e.modifier,t=e.properties,i=e.dimensionAndFieldList,a=e.libraryItemsProps[e.libraryId],s=a.qMeasure.qDef,u=fe[n.type].generateExpression({expression:s,modifier:n,properties:t,dimensionAndFieldList:i});n.outputExpression=u,r.qDef.qDef=n.outputExpression,(r.qDef.qLabel||a.qMeasure.qLabel)&&(r.qDef.qLabel=a.qMeasure.qLabel),(r.qDef.qLabelExpression||a.qMeasure.qLabelExpression)&&(r.qDef.qLabelExpression=a.qMeasure.qLabelExpression),r.qDef.quarantine&&r.qDef.quarantine.qNumFormat&&a.qMeasure.qNumFormat&&(r.qDef.qNumFormat=a.qMeasure.qNumFormat,r.qDef.isCustomFormatted=a.qMeasure.isCustomFormatted),delete r.qLibraryId,r.qDef.coloring=a.qMeasure.coloring,n.base=o()(!0,{},r.qDef.base)}({measure:r,modifier:e,libraryId:u,properties:n,libraryItemsProps:t,dimensionAndFieldList:i}):function(e){var r=e.measure,n=e.modifier,t=e.properties,i=e.dimensionAndFieldList;\"function\"==typeof fe[n.type].updateModifier&&fe[n.type].updateModifier(n,t.qHyperCubeDef);var a=ue.getExpression(r),s=fe[n.type].generateExpression({expression:a,modifier:n,properties:t,dimensionAndFieldList:i});n.outputExpression=s,r.qDef.qDef=n.outputExpression,r.qDef.base.qLabelExpression?r.qDef.qLabelExpression=r.qDef.base.qLabelExpression:r.qDef.qLabel=r.qDef.base.qLabel||a,n.base=o()(!0,{},r.qDef.base)}({measure:r,modifier:e,properties:n,dimensionAndFieldList:i}),function(e){var r=a(e,\"qDef.qAggrFunc\");\"Expr\"!==r||ve(e)?\"None\"!==r?delete e.qDef.base.qAggrFunc:\"None\"===r&&ve(e)&&\"Expr\"===e.qDef.base.qAggrFunc&&(e.qDef.qAggrFunc=\"Expr\",delete e.qDef.base.qAggrFunc):(e.qDef.qAggrFunc=\"None\",e.qDef.base.qAggrFunc=\"Expr\")}(r)}}))}({measure:r,properties:n,libraryItemsProps:t,dimensionAndFieldList:e}),Ae(r)):qe(r)}))}))}))}({measures:i,properties:t,model:r,libraryItemsProps:c,dimensionAndFieldList:p}).then((function(){return u?Fe({oldProperties:n,newProperties:t,model:r}):Promise.resolve(!1)}))}))}function qe(e){!function(e){var r=he(e);return Array.isArray(r)&&r.some((function(e){return\"object\"===pe(e)&&!e.disabled&&!fe[e.type]}))}(e)?ce.restoreBase(e):delete e.qDef.base,e.qDef.coloring&&delete e.qDef.coloring,Ae(e)}function be(e){var r=e.measures,n=e.properties,t=e.layout;return!!Array.isArray(r)&&r.some((function(e){return Se({modifiers:he(e),properties:n,layout:t})}))}function De(e){var r=he(e);if(Array.isArray(r))for(var n=0;n<r.length;n++){var t=r[n];if(fe[t.type]&&!t.disabled)return t}}function ve(e){var r=De(e);return!r||fe[r.type].enableTotalsFunction(e)}function ge(e){return a(e,\"qHyperCubeDef.qMeasures\",[]).concat(a(e,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",[]))}function he(e){return e.modifiers||e.qDef&&e.qDef.modifiers}function xe(e){return a(e,\"outputExpression.qValueExpression.qExpr\")||a(e,\"outputExpression\")}function Ee(e){ge(e).forEach((function(e){return function(e){var r=De(e);r&&(void 0!==r.outputExpression&&xe(r)!==e.qDef.qDef?delete e.qDef.base:!ce.isValid(e)&&r.base&&(e.qDef.base=o()(!0,{},r.base)))}(e)}))}function Ae(e){var r=he(e);Array.isArray(r)&&r.forEach((function(r){\"object\"===pe(r)&&(r.disabled||!fe[r.type]&&xe(r)!==e.qDef.qDef)&&(r.disabled=!0,delete r.base)}))}function Ce(e){return e.base||e.qDef&&e.qDef.base}function Ie(e){var r=Ce(e);return e.qLibraryId||r&&r.qLibraryId}function Me(e){var r=e.measure,n=e.properties,t=e.layout;return!Ie(r)&&Se({modifiers:he(r),properties:n,layout:t})}function Se(e){var r=e.modifiers,n=e.properties,t=e.layout,o={};return Array.isArray(r)&&r.some((function(e){return!(\"object\"!==pe(e)||e.disabled||!fe[e.type])&&(void 0===o[e.type]&&(o[e.type]=fe[e.type].isApplicable({properties:n,layout:t})),o[e.type])}))}function Le(e){var r=e.model,n=e.dimensionAndFieldList;if(n)return Promise.resolve(n);var t=[],o={},i=r.app.getDimensionList().then((function(e){o.dimensionList=e}));t.push(i);var a=r.app.getFieldList().then((function(e){o.fieldList=e}));return t.push(a),Promise.all(t).then((function(){return o}))}function Oe(e){var r=e.libraryIds,n=e.model,t=e.libraryItemsProps;if(t)return Promise.resolve(t);var o=r.measureLibraryIds,i=r.dimensionLibraryIds,a={},s=[];return o.forEach((function(e){var r=n.app.getMeasure(e).then((function(r){return r.getProperties().then((function(r){a[e]=r}))}));s.push(r)})),i.forEach((function(e){var r=n.app.getDimension(e).then((function(r){return r.getProperties().then((function(r){a[e]=r}))}));s.push(r)})),Promise.all(s).then((function(){return a}))}function Pe(e,r){if(\"\"!==r||-1===[\"qFmt\",\"qDec\",\"qThou\"].indexOf(e))return r}function Fe(e){var r=e.oldProperties,n=e.newProperties,t=e.model,o=JSON.stringify(a(r,\"qHyperCubeDef.qMeasures\"),Pe)!==JSON.stringify(a(n,\"qHyperCubeDef.qMeasures\"),Pe)||JSON.stringify(a(r,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\"),Pe)!==JSON.stringify(a(n,\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\"),Pe);return o?function(e){var r=e.model,n=e.oldProperties,t=e.newProperties,o=r.layout;return o&&!o.qHasSoftPatches&&!o.qExtendsId&&a(o,\"qMeta.privileges\",[]).indexOf(\"update\")>-1?r.setProperties(t):F(r,n,t)}({model:t,oldProperties:r,newProperties:n}).then((function(){return o})):Promise.resolve(o)}function Ne(e){var r=e.modifiers,n=e.properties,t=e.layout;return Array.isArray(r)&&r.some((function(e){return\"object\"===pe(e)&&!e.disabled&&fe[e.type]&&fe[e.type].needDimension({modifier:e,properties:n,layout:t})}))}function Ve(e){var r=ge(e),n=[],t=[],o=!1;return r.forEach((function(r){var t=he(r);if(Se({modifiers:t,properties:e})){var i=Ie(r);i&&n.push(i),o=o||Ne({modifiers:t,properties:e})}})),a(e,\"qHyperCubeDef.qDimensions\",[]).forEach((function(e){var r=e.qLibraryId;r&&t.push(r)})),{measureLibraryIds:n,dimensionLibraryIds:t}}function we(e){var r=e.model,n=e.libraryIds;return!e.masterItem&&n&&(n.measureLibraryIds.length||n.dimensionLibraryIds.length)?(me[r.id].masterItemSubscriber=me[r.id].masterItemSubscriber||function(e){var r=e.model,n=e.callback,t={},o={},i={},s={dimension:[\"qDim.qFieldDefs\"],measure:[\"qMeasure.qDef\",\"qMeasure.qLabel\",\"qMeasure.qLabelExpression\",\"qMeasure.coloring\",\"qMeasure.qNumFormat\",\"qMeasure.isCustomFormatted\"]};function u(e){var r={},n=a(e,\"qInfo.qType\");return n&&s[n]&&s[n].forEach((function(n){r[n]=a(e,n)})),JSON.stringify(r)}function l(e){var r=e.qInfo.qId;if(t[r]){var o=u(e);t[r].properties!==o&&(t[r].properties=o,\"function\"==typeof n&&t[r].enabled&&n(e)),t[r].enabled=!0}}function c(e,n){return r.app[n](e).then((function(r){t[e]={listener:r.layoutSubscribe(l),enabled:!1,properties:u(r.layout)}}))}return{subscribe:function(e){var n=e.measureLibraryIds,a=e.dimensionLibraryIds,s=[];return function(e){var r=e.dimensionLibraryIds;o={},e.measureLibraryIds.forEach((function(e){o[e]=!0})),i={},r.forEach((function(e){i[e]=!0}))}({measureLibraryIds:n,dimensionLibraryIds:a}),Object.keys(t).forEach((function(e){o[e]||i[e]||(t[e].listener.dispose(),delete t[e])})),r.app&&(Object.keys(o).forEach((function(e){o[e]&&!t[e]&&s.push(c(e,\"getMeasure\"))})),Object.keys(i).forEach((function(e){i[e]&&!t[e]&&s.push(c(e,\"getDimension\"))}))),Promise.all(s)},unsubscribe:function(){Object.keys(t).forEach((function(e){t[e].listener.dispose()})),t={}}}}({model:r,callback:function(e){return de({model:r,masterItem:e}).then((function(){return r.app.clearUndoBuffer()}))}}),me[r.id].masterItemSubscriber.subscribe(n)):Promise.resolve()}}])},function(e,r,n){\"use strict\";function t(e){var r=function e(r){var n,t=r;return t>9?(n=65+t-10)>90&&(n+=6):t=\"\".concat(t).charCodeAt(0),[48,111,79,105,73,108].indexOf(n)>-1?e(t+1):String.fromCharCode(n)}(e%62),n=Math.floor(e/62);return n>0?t(n)+r:r}function o(e){return(o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}n.r(r);var i={getValue:function(e,r,n){if(null==e||null==r)return n;for(var t=r.split(\".\"),o=e,i=0;i<t.length;++i){var a=t[i];if(\"\"!==a){if(void 0===o[a]||null===o[a])return n;o=o[a]}}return o},setValue:function(e,r,n){if(null!=e&&null!=r){for(var t=r.split(\".\"),o=t[t.length-1],i=e,a=0;a<t.length-1;++a){var s=t[a];void 0!==i[s]&&null!==i[s]||(i[s]=Number.isNaN(+t[a+1])?{}:[]),i=i[s]}void 0!==n?i[o]=n:delete i[o]}},isEmpty:function(e){return 0===Object.keys(e).length&&e.constructor===Object},isAtomicValue:function(e){return/boolean|number|string/.test(o(e))},generateId:function(){return t(Math.round(99e11*Math.random()+1e11)).replace(/\\W/g,\"\")}};function a(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return s(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function s(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function u(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return l(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return l(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function c(e,r,n){if(e){for(var t=0;t<e.length;t++)if(e[t][r]===n)return t;return-1}return-1}var p={isOrderedSubset:function(e,r){if(!(e&&r&&e.length&&r.length))return!1;var n=e.indexOf(r[0]);if(-1!==n){for(var t=0;t<r.length;t++){var o=e.indexOf(r[t]);if(n>o)return!1;n=o}return!0}return!1},indexAdded:function(e,r){var n;for(n=0;n<e.length;++n)e[n]>=0&&e[n]>=r&&++e[n];e.push(r)},indexRemoved:function(e,r){var n,t=0;for(n=0;n<e.length;++n)e[n]>r?--e[n]:e[n]===r&&(t=n);return e.splice(t,1),t},findItemByPropertyValue:function(e,r,n){if(e){for(var t=0;t<e.length;t++)if(e[t][r]===n)return e[t];return null}return null},findIndexByPropertyValue:c};var f=n(1),m=n.n(f);var d={addDimensions:function(e){var r,n=e.exportFormat,t=e.qHyperCubeDef,o=n.data[0];(r=o.dimensions).push.apply(r,a(t.qDimensions));var s,u=i.getValue(t,\"qLayoutExclude.qHyperCubeDef.qDimensions\");u&&(s=o.excludedDimensions).push.apply(s,a(u))},addMeasures:function(e){var r,n=e.exportFormat,t=e.qHyperCubeDef,o=n.data[0];(r=o.measures).push.apply(r,u(t.qMeasures));var a,s=i.getValue(t,\"qLayoutExclude.qHyperCubeDef.qMeasures\");s&&(a=o.excludedMeasures).push.apply(a,u(s))},setInterColumnSortOrder:function(e){var r=e.exportFormat,n=e.qHyperCubeDef,t=r.data[0];n.qInterColumnSortOrder||(n.qInterColumnSortOrder=[]),t.interColumnSortOrder=n.qInterColumnSortOrder.concat();var o=i.getValue(n,\"qLayoutExclude.qHyperCubeDef.qInterColumnSortOrder\");o&&p.isOrderedSubset(o,t.interColumnSortOrder)&&(t.interColumnSortOrder=o.concat())},copyProperties:function(e){var r=e.exportFormat,n=e.properties;Object.keys(n).forEach((function(e){r.properties[e]=n[e]}))},updateLayoutExclude:function(e){var r=e.exportFormat,n=e.properties;n.qLayoutExclude||(n.qLayoutExclude={}),n.qLayoutExclude.disabled&&(Object.keys(n.qLayoutExclude.disabled).forEach((function(e){r.properties.hasOwnProperty(e)||(r.properties[e]=n.qLayoutExclude.disabled[e])})),delete n.qLayoutExclude.disabled),n.qLayoutExclude.changed&&(!function(e){Object.keys(e.qLayoutExclude.changed).forEach((function(r){e.qLayoutExclude.changed[r].to===i.getValue(e,r)&&i.setValue(e,r,e.qLayoutExclude.changed[r].from)}))}(n),delete n.qLayoutExclude.changed),n.qLayoutExclude.quarantine&&!i.isEmpty(n.qLayoutExclude.quarantine)||delete n.qLayoutExclude},storeMeasuresModifiers:function(e){e.forEach((function(e){m.a.cleanUpMeasure(e),e.qDef.modifiers&&(e.store={modifiers:e.qDef.modifiers},delete e.qDef.modifiers)}))}};function y(e,r,n){var t,o,a=i.getValue(e,r);if(!i.isAtomicValue(a))try{if((o=(o=(t=JSON.stringify(a)).match(/:\\{/g))?o.length:0)>2)return;a=JSON.parse(t)}catch(e){return}i.getValue(e,\"qLayoutExclude.quarantine\")||i.setValue(e,\"qLayoutExclude.quarantine\",{});var s=i.getValue(e,\"qLayoutExclude.quarantine\");s[n]||(s[n]={}),s[n][r]=a}var q=n(0),b=n.n(q);function D(e,r){var n=b()(!0,{},r,e);return i.getValue(n,\"qOtherTotalSpec.qOtherCounted\")||i.setValue(n,\"qOtherTotalSpec.qOtherCounted\",{qv:\"10\"}),i.getValue(n,\"qOtherTotalSpec.qOtherLimit\")||i.setValue(n,\"qOtherTotalSpec.qOtherLimit\",{qv:\"0\"}),n.hasOwnProperty(\"othersLabel\")||(n.othersLabel=\"Others\"),n}function v(e,r){return b()(!0,{},r,e)}function g(e,r,n){return\"function\"==typeof e?e(r):Number.isNaN(+e)?n:e}var h=Math.pow(2,53)-1;function x(e){return function(e){if(Array.isArray(e))return E(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return E(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return E(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function E(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}function A(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,r){if(!e)return;if(\"string\"==typeof e)return C(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);\"Object\"===n&&e.constructor&&(n=e.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(e);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return C(e,r)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function C(e,r){(null==r||r>e.length)&&(r=e.length);for(var n=0,t=new Array(r);n<r;n++)t[n]=e[n];return t}var I={importCommonProperties:function(e,r,n){var t=\"masterobject\"===i.getValue(r,\"properties.qInfo.qType\")?\"masterobject\":i.getValue(n,\"qInfo.qType\");i.setValue(e,\"qInfo.qType\",t),e.visualization=n.visualization},copyPropertyIfExist:function(e,r,n){r.hasOwnProperty(e)&&(n[e]=r[e])},copyPropertyOrSetDefault:function(e,r,n,t){r.hasOwnProperty(e)?n[e]=r[e]:n[e]=t},getDefaultDimension:function(){return{qDef:{autoSort:!0,cId:\"\",othersLabel:\"Others\"},qLibraryId:\"\",qNullSuppression:!1,qOtherLabel:\"Others\",qOtherTotalSpec:{qOtherLimitMode:\"OTHER_GE_LIMIT\",qOtherMode:\"OTHER_OFF\",qOtherSortMode:\"OTHER_SORT_DESCENDING\",qSuppressOther:!1}}},getDefaultMeasure:function(){return{qDef:{autoSort:!0,cId:\"\",numFormatFromTemplate:!0},qLibraryId:\"\",qTrendLines:[]}},addDimensions:function(e){var r,n=e.exportFormat,t=e.maxDimensions,o=e.minDimensions,i=e.newHyperCubeDef,a=e.defaultDimension,s=n.data[0];for(r=0;r<s.dimensions.length;++r){var u=D(s.dimensions[r],a);i.qDimensions.length<t?i.qDimensions.push(u):i.qLayoutExclude.qHyperCubeDef.qDimensions.push(u)}for(r=0;r<s.excludedDimensions.length;++r){var l=D(s.excludedDimensions[r],a);i.qDimensions.length<o?i.qDimensions.push(l):i.qLayoutExclude.qHyperCubeDef.qDimensions.push(l)}},addMeasures:function(e){var r,n=e.exportFormat,t=e.maxMeasures,o=e.minMeasures,i=e.newHyperCubeDef,a=e.defaultMeasure,s=n.data[0];for(r=0;r<s.measures.length;++r){var u=v(s.measures[r],a);i.qMeasures.length<t?i.qMeasures.push(u):i.qLayoutExclude.qHyperCubeDef.qMeasures.push(u)}for(r=0;r<s.excludedMeasures.length;++r){var l=v(s.excludedMeasures[r],a);i.qMeasures.length<o?i.qMeasures.push(l):i.qLayoutExclude.qHyperCubeDef.qMeasures.push(l)}},getMaxMinDimensionMeasure:function(e){var r=e.exportFormat,n=e.dataDefinition,t=void 0===n?{}:n,o=r.data[0],i=t.dimensions||{max:0},a=t.measures||{max:0},s=g(a.max,o.dimensions.length,h),u=g(a.min,o.dimensions.length,0);return{maxDimensions:g(i.max,s,h),minDimensions:g(i.min,u,0),maxMeasures:s,minMeasures:u}},setInterColumnSortOrder:function(e){var r=e.exportFormat,n=e.newHyperCubeDef,t=r.data[0],o=n.qDimensions.length+n.qMeasures.length;n.qInterColumnSortOrder=t.interColumnSortOrder.concat();var i=n.qInterColumnSortOrder.length;if(i!==o)for(n.qLayoutExclude&&(n.qLayoutExclude.qHyperCubeDef.qInterColumnSortOrder=t.interColumnSortOrder.concat());i!==o;)i<o?(p.indexAdded(n.qInterColumnSortOrder,i),++i):(--i,p.indexRemoved(n.qInterColumnSortOrder,i))},createNewProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.hypercubePath,o={qLayoutExclude:{disabled:{},quarantine:{}}};return Object.keys(r.properties).forEach((function(e){\"qLayoutExclude\"===e?r.properties[e].quarantine&&(o.qLayoutExclude.quarantine=b()(!0,{},r.properties[e].quarantine)):\"qHyperCubeDef\"===e&&t?i.setValue(o,\"\".concat(t,\".qHyperCubeDef\"),r.properties.qHyperCubeDef):n.hasOwnProperty(e)||-1!==[\"qMetaDef\",\"descriptionExpression\",\"labelExpression\"].indexOf(e)||function(e,r){return\"components\"===r&&Array.isArray(e[r])&&e[r].some((function(e){return\"general\"===e.key}))}(r.properties,e)?o[e]=r.properties[e]:o.qLayoutExclude.disabled[e]=r.properties[e]})),null===(o=b()(!0,{},n,o)).components&&(o.components=[]),o},shouldInitLayoutExclude:function(e){var r=e.exportFormat,n=e.maxDimensions,t=e.minDimensions,o=e.maxMeasures,i=e.minMeasures,a=r.data[0];return a.dimensions.length>n&&n>0||a.measures.length>o&&o>0||a.excludedDimensions.length>0&&a.dimensions.length+a.excludedDimensions.length>t||a.excludedMeasures.length>0&&a.measures.length+a.excludedMeasures.length>i||!o&&a.measures.length>0||!n&&a.dimensions.length>0},initLayoutExclude:function(e){var r=e.exportFormat,n=e.maxDimensions,t=e.minDimensions,o=e.maxMeasures,i=e.minMeasures,a=e.newHyperCubeDef,s=r.data[0];a.qLayoutExclude||(a.qLayoutExclude={}),a.qLayoutExclude.qHyperCubeDef||(a.qLayoutExclude.qHyperCubeDef={}),(s.dimensions.length>n&&n>0||s.excludedDimensions&&s.excludedDimensions.length&&s.dimensions.length+s.excludedDimensions.length>t)&&(a.qLayoutExclude.qHyperCubeDef.qDimensions||(a.qLayoutExclude.qHyperCubeDef.qDimensions=[])),(s.measures.length>o&&o>0||s.excludedMeasures&&s.excludedMeasures.length&&s.measures.length+s.excludedMeasures.length>i)&&(a.qLayoutExclude.qHyperCubeDef.qMeasures||(a.qLayoutExclude.qHyperCubeDef.qMeasures=[])),!o&&s.measures.length&&(a.qLayoutExclude.qHyperCubeDef.qMeasures||(a.qLayoutExclude.qHyperCubeDef.qMeasures=[])),!n&&s.dimensions.length&&(a.qLayoutExclude.qHyperCubeDef.qDimensions||(a.qLayoutExclude.qHyperCubeDef.qDimensions=[]))},updateDimensionsOnAdded:function(e){var r=e.newProperties,n=e.dataDefinition,t=e.hypercubePath;if(n.dimensions&&\"function\"==typeof n.dimensions.added){var o=i.getValue(r,t||\"\").qHyperCubeDef,a=x(o.qDimensions);o.qDimensions=[],a.forEach((function(e){o.qDimensions.push(e),n.dimensions.added(e,r)}))}},updateMeasuresOnAdded:function(e){var r=e.newProperties,n=e.dataDefinition,t=e.hypercubePath;if(n.measures&&\"function\"==typeof n.measures.added){var o=i.getValue(r,t||\"\").qHyperCubeDef,a=A(o.qMeasures);o.qMeasures=[],a.forEach((function(e){o.qMeasures.push(e),n.measures.added(e,r)}))}},restoreMeasuresModifiers:function(e){var r=e.measures,n=e.modifierTypes;r&&n&&m.a.isSupportedModifiers(n)&&r.forEach((function(e){e.store&&e.store.modifiers&&(e.qDef.modifiers=e.store.modifiers),delete e.store}))}};function M(e,r){var n=i.getValue(e,\"qLayoutExclude.quarantine\",{})[r];return!!n&&(Object.keys(n).forEach((function(r){i.setValue(e,r,n[r])})),delete e.qLayoutExclude.quarantine[r],!0)}var S={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,r={data:[],properties:{}},n=0;n<e;++n)r.data.push({dimensions:[],measures:[],excludedDimensions:[],excludedMeasures:[],interColumnSortOrder:[]});return r}(),a=r.qProperty,s=i.getValue(a,n||\"\"),u=s.qHyperCubeDef;return u.qInterColumnSortOrder||(u.qInterColumnSortOrder=[]),d.addDimensions({exportFormat:o,qHyperCubeDef:u}),d.addMeasures({exportFormat:o,qHyperCubeDef:u}),d.setInterColumnSortOrder({exportFormat:o,qHyperCubeDef:u}),delete u.qLayoutExclude,d.copyProperties({exportFormat:o,properties:a}),n&&(o.properties.qHyperCubeDef=u,delete s.qHyperCubeDef),d.updateLayoutExclude({exportFormat:o,properties:a}),t||d.storeMeasuresModifiers(o.properties.qHyperCubeDef.qMeasures),Array.isArray(o.properties.filters)&&(y(o.properties,\"filters\",\"storedFilters\"),delete o.properties.filters),o.properties.qHyperCubeDef.qContextSetExpression&&(y(o.properties,\"qHyperCubeDef.qContextSetExpression\",\"storedFilters\"),o.properties.qHyperCubeDef.qContextSetExpression=\"\"),o.properties.qHyperCubeDef.qDynamicScript&&o.properties.qHyperCubeDef.qDynamicScript.length&&(y(o.properties,\"qHyperCubeDef.qDynamicScript\",\"dynamicScript\"),o.properties.qHyperCubeDef.qDynamicScript=[]),o},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=void 0===n?{}:n,o=e.dataDefinition,a=void 0===o?{}:o,s=e.defaultPropertyValues,u=void 0===s?{}:s,l=e.hypercubePath,c=e.extension,p=e.supportedFilters,f=void 0===p||p,m=e.isHCModifierSupported,d=void 0===m||m,y={qChildren:[]},q=I.createNewProperties({exportFormat:r,initialProperties:t,hypercubePath:l}),b=i.getValue(t,l||\"\").qHyperCubeDef,D=i.getValue(q,l||\"\").qHyperCubeDef,v=I.getMaxMinDimensionMeasure({exportFormat:r,dataDefinition:a}),g=v.maxDimensions,h=v.minDimensions,x=v.maxMeasures,E=v.minMeasures,A=u.defaultDimension,C=void 0===A?I.getDefaultDimension():A,S=u.defaultMeasure,L=void 0===S?I.getDefaultMeasure():S;D.qDimensions.length=0,D.qMeasures.length=0,I.shouldInitLayoutExclude({exportFormat:r,maxDimensions:g,minDimensions:h,maxMeasures:x,minMeasures:E})&&I.initLayoutExclude({exportFormat:r,maxDimensions:g,minDimensions:h,maxMeasures:x,minMeasures:E,newHyperCubeDef:D}),I.addDimensions({exportFormat:r,maxDimensions:g,minDimensions:h,newHyperCubeDef:D,defaultDimension:C}),I.addMeasures({exportFormat:r,maxMeasures:x,minMeasures:E,newHyperCubeDef:D,defaultMeasure:L}),I.updateDimensionsOnAdded({newProperties:q,dataDefinition:a,hypercubePath:l}),I.updateMeasuresOnAdded({newProperties:q,dataDefinition:a,hypercubePath:l}),I.setInterColumnSortOrder({exportFormat:r,newHyperCubeDef:D}),I.copyPropertyIfExist(\"qMaxStackedCells\",b,D),I.copyPropertyIfExist(\"qNoOfLeftDims\",b,D),I.copyPropertyOrSetDefault(\"qInitialDataFetch\",b,D,[{qTop:0,qLeft:0,qWidth:0,qHeight:0}]),I.copyPropertyOrSetDefault(\"qMode\",b,D,\"S\"),I.copyPropertyOrSetDefault(\"qReductionMode\",b,D,\"N\"),I.copyPropertyOrSetDefault(\"qSortbyYValue\",b,D),I.copyPropertyOrSetDefault(\"qIndentMode\",b,D),I.copyPropertyOrSetDefault(\"qShowTotalsAbove\",b,D),I.importCommonProperties(q,r,t),y.qProperty=q;var O=i.getValue(c||{},\"support.modifiers\");return I.restoreMeasuresModifiers({measures:D.qMeasures,modifierTypes:O}),f&&M(y.qProperty,\"storedFilters\"),\"S\"===D.qMode&&d&&M(y.qProperty,\"dynamicScript\"),y}},L={cellBackgroundColor:!0,cellForegroundColor:!0,colorByAlternative:!0,colorByExpression:!0,tooltip:!0,urlLabel:!0,url:!0};function O(e,r,n,t){r=r||[];var o=c(e,t,n),i=c(r,t,n);if(-1!==o&&-1===i){var a=e.splice(o,1);r.push(a[0])}return r}function P(e,r){return e.length!==r}var F={create:function(e,r){if(!e||!L[e])throw new Error(\"Attribute Expressions Util: ID required\");var n={};return r&&Object.keys(r).forEach((function(e){n[e]=r[e]})),n.id=e,n.qAttribute=!0,n},moveByIdFromGroup:function(e,r,n,t,o){n=n||\"qAttributeExpressions\",o=o||\"id\";for(var i=0;i<e.length;i++){var a=e[i][n],s=r.length;if(O(a,r,t,o),P(r,s))return r}return r},IDMAP:{CELL_BACKGROUND_COLOR:\"cellBackgroundColor\",CELL_FOREGROUND_COLOR:\"cellForegroundColor\",COLOR_BY_ALTERNATIVE:\"colorByAlternative\",COLOR_BY_EXPRESSION:\"colorByExpression\",TOOLTIP:\"tooltip\",CELL_LINK_LABEL:\"urlLabel\",CELL_LINK_URL:\"url\"}};var N={getNumDimensions:function(e){return i.getValue(e,\"qHyperCubeDef.qDimensions.length\",0)},getNumMeasures:function(e){return i.getValue(e,\"qHyperCubeDef.qMeasures.length\",0)},wrapFieldName:function(e){return e.split(\" \").length>1&&\"=\"!==e[0]&&\"[\"!==e[0]?\"[\".concat(e,\"]\"):e},getItemLabel:function(e){return e.label||e.name}},V={colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>0&&N.getNumMeasures(e)<=1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)>0},expression:function(e){return N.getNumMeasures(e)>=1}}},w={colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumMeasures(e)>=1}}},H={scatterplot:w,\"sn-scatter-plot\":w,piechart:{colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumMeasures(e)>=1}}},linechart:{colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)<=1},expression:function(e){return N.getNumMeasures(e)>=1}}},map:{colorModeOptions:{primary:function(){return!0},dimension:function(e){return N.getNumDimensions(e)>=1},multiColor:function(e){return N.getNumMeasures(e)>1},measure:function(e){return N.getNumDimensions(e)>=1},expression:function(e){return N.getNumDimensions(e)>=1}}},distributionplot:{colorModeOptions:{primary:function(){return!0},dimension:function(){return!0},multiColor:function(){return!1},measure:function(){return!0},expression:function(e){return N.getNumDimensions(e)>=1}}}};function T(e,r,n){if(Array.isArray(e[r])){var t=p.findIndexByPropertyValue(e[r],\"id\",n);t>=0&&e[r].splice(t,1)}else e[r]=[]}function j(e,r){var n=F.IDMAP.COLOR_BY_ALTERNATIVE;e.forEach((function(e){T(e,\"qAttributeDimensions\",n),T(e,\"qAttributeExpressions\",n)})),r.forEach((function(e){T(e,\"qAttributeDimensions\",n),T(e,\"qAttributeExpressions\",n)}))}function _(e,r){if(r){var n=\"=\"===r.charAt(0);e.color.altLabel=n?{qStringExpression:{qExpr:r.substr(1)}}:r}}function R(e){var r=e.properties,n=e.isDimension,t=e.dimensions,o=e.excludedDimensions,a=e.measures,s=e.label;j(t,o);var u=t[t.length-1];if(u){var l=n?i.getValue(r,\"color.byDimDef\"):i.getValue(r,\"color.byMeasureDef\"),c=i.getValue(r,\"color.formatting.qNumFormat\"),f=i.getValue(r,\"color.formatting.isCustomFormatted\");if(l){var m=F.create(F.IDMAP.COLOR_BY_ALTERNATIVE);switch(l.type){case\"expression\":!function(e){var r=e.attributeExpression,n=e.label,t=e.item,o=e.isDimension,i=e.qNumFormat,a=e.isCustomFormatted;r.label=n||t.label,o?r.qDef=t.key:(r.qExpression=t.key,i&&(r.qNumFormat=i,r.isCustomFormatted=a)),r.matchMeasure=t.activeMeasureIndex,r.label&&\"=\"===r.label.charAt(0)&&(r.labelExpRef=\"color.altLabel\")}({attributeExpression:m,label:s,item:l,isDimension:n,qNumFormat:c,isCustomFormatted:f});break;case\"libraryItem\":!function(e){var r=e.attributeExpression,n=e.measures,t=e.item,o=e.isDimension,i=e.qNumFormat,a=e.isCustomFormatted;o||(r.matchMeasure=p.findIndexByPropertyValue(n,\"qLibraryId\",t.key),i&&(r.qNumFormat=i,r.isCustomFormatted=a)),void 0!==t.expression?r.qExpression=t.expression:r.qLibraryId=t.key,r.colorMapRef=t.key}({attributeExpression:m,measures:a,item:l,isDimension:n,qNumFormat:c,isCustomFormatted:f})}n?(m.qSortBy={qSortByAscii:1},u.qAttributeDimensions.push(m)):u.qAttributeExpressions.push(m)}}}function B(e,r,n,t){var o,i,a,s={};switch(e){case\"dimension\":n.qLibraryId?(s.type=\"dimension\",s.name=n.qLibraryId,s.id=n.qLibraryId):(s.type=\"field\",r?(s.name=n.label||n.qDef,s.id=n.qDef):(s.name=n.qDef.qFieldDefs[0],s.label=(a=n.qDef).qLabelExpression?a.qLabelExpression:a.qFieldLabels&&a.qFieldLabels[0]?a.qFieldLabels[0]:a.qFieldDefs[0]));break;case\"measure\":(o=function(e,r){return r?e.qLibraryId:m.a.measureBase.getLibraryId(e)}(n,r))?(s.type=\"measure\",s.name=o,s.id=o,(i=function(e,r){return m.a.hasActiveModifiers({measures:[e]})&&r?e.qDef.qDef:void 0}(n,t))&&(s.expression=i)):(s.type=\"expression\",r?(s.name=n.label||n.qExpression,s.id=n.qExpression):(s.name=n.qDef.qDef,s.label=function(e){var r=e.qDef;return r.qLabelExpression?r.qLabelExpression:r.qLabel?r.qLabel:r.qDef}(n)));break;default:throw new Error('columnType should be \"dimension\" or \"measure\"')}return s}var k={useMasterNumberFormat:function(e){e.quarantine={qNumFormat:e.qNumFormat||{},isCustomFormatted:e.isCustomFormatted||!1},e.qNumFormat=null,e.isCustomFormatted=void 0}};function U(e,r,n,t){var o=n?\"expression\":r.type,i=e.color,a=i.mode,s=N.getItemLabel(r);switch(_(e,s||\"\"),o){case\"field\":a=\"byDimension\",i.byDimDef={label:r.label||N.wrapFieldName(r.name),key:N.wrapFieldName(r.name),type:\"expression\",activeDimensionIndex:r.activeDimensionIndex};break;case\"expression\":a=\"byMeasure\",i.byMeasureDef={label:n||s,key:n||r.name,type:\"expression\",activeMeasureIndex:r.activeMeasureIndex};break;case\"dimension\":a=\"byDimension\",i.byDimDef={label:r.name,key:r.id,type:\"libraryItem\",activeDimensionIndex:r.activeDimensionIndex};break;case\"measure\":a=\"byMeasure\",i.byMeasureDef={label:r.name,key:r.id,expression:r.expression,type:\"libraryItem\",activeMeasureIndex:r.activeMeasureIndex},i.formatting&&k.useMasterNumberFormat(i.formatting)}t||(i.auto=!1,i.mode=a)}function G(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=n[function(e,r,n){var t=i.getValue(r,\"visualization\"),o=n.split(\".\"),a=Number(o[1]),s=i.getValue(r,\"layers.\".concat(a,\".type\"));return 2===e.length&&\"map\"===t&&\"point\"===s}(n,e,r)?0:n.length-1],o=F.IDMAP.COLOR_BY_ALTERNATIVE,a=p.findItemByPropertyValue(t.qAttributeDimensions,\"id\",o);return U(e,B(\"dimension\",!!a,a||t)),!!a}function W(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]),a=i.getValue(e,\"color.byDimDef\");if(a&&_(e,a.label),function(e){return!!(e&&e.activeDimensionIndex>-1)}(a))!function(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"color.byDimDef\");t.activeDimensionIndex=Math.min(t.activeDimensionIndex,n.length-1);var o=B(\"dimension\",!1,n[t.activeDimensionIndex]);o.activeDimensionIndex=t.activeDimensionIndex,U(e,o)}(e,r);else if(function(e){return!e||!e.key}(a)&&G(e,r))return;R({properties:e,isDimension:!0,dimensions:n,excludedDimensions:o,measures:t,label:i.getValue(e,\"color.byDimDef.label\")})}function $(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]),a=i.getValue(e,\"color.byMeasureDef\");if(a&&_(e,a.label),function(e){return!!(e&&e.activeMeasureIndex>-1)}(a))!function(e,r){var n=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),t=i.getValue(e,\"color.byMeasureDef\");if(t.activeMeasureIndex=Math.min(t.activeMeasureIndex,n.length-1),t.activeMeasureIndex>-1){var o=B(\"measure\",!1,n[t.activeMeasureIndex],!0);o.activeMeasureIndex=t.activeMeasureIndex,U(e,o)}}(e,r);else if(function(e,r){return(!e||!e.key)&&r.length>0}(a,t)&&function(e,r){var n=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),t=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),o=n[n.length-1],a=F.IDMAP.COLOR_BY_ALTERNATIVE,s=p.findItemByPropertyValue(o.qAttributeExpressions,\"id\",a);return U(e,B(\"measure\",!!s,s||t[0])),!!s}(e,r))return;R({properties:e,isDimension:!1,dimensions:n,excludedDimensions:o,measures:t,label:i.getValue(e,\"color.byMeasureDef.label\")})}var z={changeProperty:function(e,r,n){i.setValue(e,r,n),i.isAtomicValue(n)&&function(e,r,n){var t=e.qLayoutExclude;t&&(t.changed||(t.changed={}),t.changed[r]={from:i.getValue(e,r),to:n})}(e,r,n)},getCanColorBy:function(e,r){var n={primary:!0};if(e){var t=(H[r]||V).colorModeOptions||V.colorModeOptions;n.byDimension=t.dimension(e),n.byMeasure=t.measure(e),n.byMultiple=t.multiColor(e),n.byExpression=t.expression(e)}return n},shouldUpdateColorBy:function(e){var r=e.canColorBy,n=e.autoColor,t=e.colorMode,o=e.dimensions;return!(r[t]&&!n&&(\"byDimension\"!==t&&\"byMeasure\"!==t||!o.length))},updateColorBy:function(e,r){var n=i.getValue(e,\"color.mode\"),t=i.getValue(e,\"color.auto\"),o=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),a=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),s=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]);t?j(o,s):function(e){var r=e.auto,n=e.colorMode,t=e.dimensions;return!r&&\"byDimension\"===n&&t.length>0}({auto:t,colorMode:n,dimensions:o})?W(e,r):function(e){var r=e.auto,n=e.colorMode,t=e.dimensions,o=e.measures,a=e.properties,s=i.getValue(a,\"visualization\");return!(r||\"byMeasure\"!==n||!t.length||\"map\"!==s&&!o.length)}({auto:t,colorMode:n,dimensions:o,measures:a,properties:e})?$(e,r):function(e,r){var n=i.getValue(e,\"color.mode\"),t=i.getValue(e,\"\".concat(r,\"qDimensions\"),[]),o=i.getValue(e,\"\".concat(r,\"qMeasures\"),[]),a=i.getValue(e,\"\".concat(r,\"qLayoutExclude.qHyperCubeDef.qDimensions\"),[]);\"byMultiple\"===n&&o.length<2&&i.setValue(e,\"color.mode\",\"primary\"),j(t,a)}(e,r)},deleteTotalMode:function(e){e.forEach((function(e){e.qOtherTotalSpec&&\"qTotalMode\"in e.qOtherTotalSpec&&delete e.qOtherTotalSpec.qTotalMode}))},shouldAddColorByExpression:function(e){var r=e.shouldUpdateColorBy,n=e.properties,t=i.getValue(n,\"qHyperCubeDef.qMeasures\",[]),o=i.getValue(n,\"color.mode\",\"\");return!r&&\"byExpression\"===o&&t.length>0},addColorByExpression:function(e){var r=i.getValue(e,\"qHyperCubeDef.qMeasures.0.qAttributeExpressions\",[]),n=i.getValue(e,\"color.colorExpression\",\"\");r.splice(0,0,{qExpression:n,id:\"colorByExpression\"}),i.setValue(e,\"qHyperCubeDef.qMeasures.0.qAttributeExpressions\",r)},switchToAutoColor:function(e){i.setValue(e,\"color.mode\",\"primary\"),i.setValue(e,\"color.auto\",!0)},shouldSwitchToColorPersistent:function(e){var r=i.getValue(e,\"qHyperCubeDef.qDimensions\",[]),n=i.getValue(e,\"color.persistent\",!1);return r.length>1&&!n}};var Y={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=S.exportProperties({propertyTree:r,hypercubePath:n,viewDataMode:t}),i=o.data[0],a=i.dimensions.concat(i.excludedDimensions),s=i.measures.concat(i.excludedMeasures),u=F.IDMAP,l=u.COLOR_BY_ALTERNATIVE,c=u.COLOR_BY_EXPRESSION;return F.moveByIdFromGroup(a,[],\"qAttributeDimensions\",l),F.moveByIdFromGroup(a,[],\"qAttributeExpressions\",l),F.moveByIdFromGroup(s,[],\"qAttributeExpressions\",c),o},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.dataDefinition,o=e.defaultPropertyValues,a=e.hypercubePath,s=e.extension,u=e.supportedFilters,l=e.isHCModifierSupported,c=S.importProperties({exportFormat:r,initialProperties:n,dataDefinition:t,defaultPropertyValues:o,hypercubePath:a,extension:s,supportedFilters:u,isHCModifierSupported:l}),p=c.qProperty,f=i.getValue(p,\"visualization\"),m=i.getValue(p,\"qHyperCubeDef.qDimensions\",[]),d=i.getValue(p,\"color.mode\",\"\"),y=i.getValue(p,\"color.auto\",\"\"),q=z.getCanColorBy(p,f),b=z.shouldUpdateColorBy({canColorBy:q,autoColor:y,colorMode:d,dimensions:m});return q[d]?z.shouldAddColorByExpression({shouldUpdateColorBy:b,properties:p})&&z.addColorByExpression(p):z.switchToAutoColor(p),b&&z.updateColorBy(p,\"qHyperCubeDef.\"),z.shouldSwitchToColorPersistent(p)&&z.changeProperty(p,\"color.persistent\",!0),z.deleteTotalMode(m),c}};var J=[\"bar\",\"marker\",\"line\"];var K={handleAutoMinMax:function(e){var r=e.initialProperties,n=e.properties;r.measureAxis&&void 0===r.measureAxis.autoMinMax?M(n,\"unsupportedAutoMinMax\")||b()(n.measureAxis,r.measureAxis):M(n,\"supportedAutoMinMax\")||b()(n.measureAxis,r.measureAxis)},handleMeasuresAxis:function(e){var r,n=e.exportFormat,t=e.initialProperties,o=e.properties,i=e.measureType,a=o.qHyperCubeDef,s=o.measureAxis;if(function(e){var r=e.exportFormat,n=e.initialProperties;return!(!r.properties.measureAxes||n.measureAxes||!n.measureAxis||void 0===n.measureAxis.autoMinMax)}({exportFormat:n,initialProperties:t})){var u=function(e){var r=[];return e.qMeasures.length>0&&e.qMeasures.forEach((function(e){if(e.qDef.series){var n=e.qDef.series,t=n.type,o=n.axis;r[o]||(r[o]={axis:o,type:{line:0,marker:0,bar:0,total:0}}),J.includes(t)&&r[o].type[t]++,r[o].type.total++}})),r}(a);u.length?(i&&(r=u.filter((function(e){return e.type[i]>0})).sort((function(e,r){return r.type[i]-e.type[i]}))),r&&r.length||(r=u.sort((function(e,r){return r.type.total-e.type.total}))),r&&r[0]&&b()(s,n.properties.measureAxes[r[0].axis])):b()(s,n.properties.measureAxes[0])}},setInterColumnSortOrder:function(e){if(e.qDimensions.length>1){var r=e.qInterColumnSortOrder.indexOf(0);if(0!==r){var n=e.qInterColumnSortOrder[0];e.qInterColumnSortOrder[0]=0,e.qInterColumnSortOrder[r]=n}}}};var X={exportProperties:function(e){var r=e.propertyTree,n=e.hypercubePath,t=e.viewDataMode,o=e.supportedAutoMinMax,i=void 0===o||o,a=Y.exportProperties({propertyTree:r,hypercubePath:n,viewDataMode:t}),s=a.properties;return i?(y(s,\"measureAxis.min\",\"supportedAutoMinMax\"),y(s,\"measureAxis.max\",\"supportedAutoMinMax\")):(y(s,\"measureAxis.min\",\"unsupportedAutoMinMax\"),y(s,\"measureAxis.max\",\"unsupportedAutoMinMax\")),a},importProperties:function(e){var r=e.exportFormat,n=e.initialProperties,t=e.dataDefinition,o=e.defaultPropertyValues,i=e.hypercubePath,a=e.measureType,s=e.extension,u=e.supportedFilters,l=e.isHCModifierSupported,c=Y.importProperties({exportFormat:r,initialProperties:n,dataDefinition:t,defaultPropertyValues:o,hypercubePath:i,extension:s,supportedFilters:u,isHCModifierSupported:l}),p=c.qProperty;return K.handleAutoMinMax({initialProperties:n,properties:p}),K.handleMeasuresAxis({exportFormat:r,initialProperties:n,properties:p,measureType:a}),K.setInterColumnSortOrder(p.qHyperCubeDef),c}};function Q(e,r,n){return\"qLayoutExclude.quarantine.\".concat(e,\".\").concat(r,\".\").concat(n)}function Z(e){var r=e.properties,n=e.arrayPath,t=e.quarantineName,o=e.arrayName,a=e.itemPath;i.getValue(r,n,[]).forEach((function(e){return function(e){var r=e.properties,n=e.quarantineName,t=e.arrayName,o=e.item,a=e.itemPath,s=i.getValue(o,a);if(void 0!==s){var u=i.getValue(o,\"qDef.cId\");u||(u=i.generateId(),i.setValue(o,\"qDef.cId\",u));var l=Q(n,t,u);i.setValue(r,l,s),i.setValue(o,a,void 0)}}({properties:r,quarantineName:t,arrayName:o,item:e,itemPath:a})}))}function ee(e){var r=e.properties,n=e.arrayPath,t=e.quarantineName,o=e.arrayName,a=e.itemPath;i.getValue(r,n,[]).forEach((function(e){return function(e){var r=e.properties,n=e.quarantineName,t=e.arrayName,o=e.item,a=e.itemPath,s=i.getValue(o,\"qDef.cId\");if(s){var u=Q(n,t,s),l=i.getValue(r,u);void 0!==l&&(i.setValue(o,a,l),i.setValue(r,u,void 0))}}({properties:r,quarantineName:t,arrayName:o,item:e,itemPath:a})}))}var re={quarantine:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalColoring\",arrayName:\"measures\",itemPath:\"qDef.conditionalColoring\"})},unquarantine:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",itemPath:\"qDef.conditionalColoring\",arrayName:\"measures\",quarantineName:\"conditionalColoring\"})}};var ne={quarantine:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"measures\",itemPath:\"qCalcCondition\"}),Z({properties:e,arrayPath:\"qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"dimensions\",itemPath:\"qCalcCondition\"})},unquarantine:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"measures\",itemPath:\"qCalcCondition\"}),ee({properties:e,arrayPath:\"qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"dimensions\",itemPath:\"qCalcCondition\"})},quarantineAlternative:function(e){Z({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeMeasures\",itemPath:\"qCalcCondition\"}),Z({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeDimensions\",itemPath:\"qCalcCondition\"})},unquarantineAlternative:function(e){ee({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qMeasures\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeMeasures\",itemPath:\"qCalcCondition\"}),ee({properties:e,arrayPath:\"qHyperCubeDef.qLayoutExclude.qHyperCubeDef.qDimensions\",quarantineName:\"conditionalShowHide\",arrayName:\"alternativeDimensions\",itemPath:\"qCalcCondition\"})}};r.default={hypercube:S,colorChart:Y,axisChart:X,quarantineProperty:y,unquarantineProperty:M,quarantineArrayProp:Z,unquarantineArrayProp:ee,conditionalColoring:re,conditionalShow:ne}}])}));","import { getValue } from 'qlik-chart-modules';\n\nconst COMMON_COLOR_PROPS = [\n 'altLabel',\n 'auto',\n 'autoMinMax',\n 'byDimDef',\n 'byMeasureDef',\n 'dimensionScheme',\n 'expressionIsColor',\n 'expressionLabel',\n 'measureMax',\n 'measureMin',\n 'measureScheme',\n 'mode',\n 'paletteColor',\n 'persistent',\n 'reverseScheme',\n 'useBaseColors',\n 'useDimColVal',\n];\n\nfunction move(from, to, list) {\n for (let i = 0; i < list.length; ++i) {\n const name = list[i];\n if (from[name] !== undefined) {\n to[name] = from[name];\n delete from[name];\n }\n }\n}\n\nfunction importColors(properties) {\n properties.color.point = properties.color.point || {};\n move(properties.color, properties.color.point, COMMON_COLOR_PROPS);\n if (properties.color.colorExpression) {\n properties.color.point.expression = {\n qValueExpression: { qExpr: properties.color.colorExpression },\n };\n delete properties.color.colorExpression;\n }\n // TODO: Change byExpression and not expressionIsColor to byMeasure when supported\n properties.color.point.expressionIsColor = true;\n}\nfunction exportColors(properties) {\n move(properties.color.point, properties.color, COMMON_COLOR_PROPS);\n properties.color.colorExpression = getValue(properties, 'color.point.expression.qValueExpression.qExpr', '');\n delete properties.color.point.expression;\n}\n\nexport default {\n importColors,\n exportColors,\n};\n","import conversion from 'qlik-object-conversion';\nimport distributionPlotColorBy from './distributionplot-color-by';\n\nexport function importProperties({ dataDefinition, defaultPropertyValues, exportFormat, initialProperties }) {\n const propTree = conversion.axisChart.importProperties({\n exportFormat,\n initialProperties,\n dataDefinition,\n defaultPropertyValues,\n });\n\n const props = propTree.qProperty;\n if (props.qHyperCubeDef.qInterColumnSortOrder.length === 3) {\n props.qHyperCubeDef.qInterColumnSortOrder = [1, 2, 0]; // Since the distribution plot does not allow re-ordering of sorting prioritizes we must set this manually on conversion\n }\n distributionPlotColorBy.importColors(props);\n props.qHyperCubeDef.qAlwaysFullyExpanded = true;\n return propTree;\n}\n\nexport function exportProperties({ propertyTree, viewDataMode }) {\n const exportFormat = conversion.axisChart.exportProperties({\n propertyTree,\n viewDataMode,\n });\n\n distributionPlotColorBy.exportColors(propertyTree.qProperty);\n\n return exportFormat;\n}\n","import properties from './object-properties';\nimport data from './distributionplot-data';\nimport { importProperties, exportProperties } from './distributionplot-import-export';\n\nexport default (env) => {\n const dataDefinition = data(env);\n return {\n properties,\n data: {\n targets: [dataDefinition],\n },\n importProperties({ exportFormat, initialProperties }) {\n return importProperties({ dataDefinition, exportFormat, initialProperties });\n },\n exportProperties,\n };\n};\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","const ExpressionWrapper = {\n wrapExpression,\n};\n\nfunction wrapExpression(expression) {\n const result = expression.replace(/\\]/g, ']]');\n\n return result ? `[${result}]` : '';\n}\n\nexport default ExpressionWrapper;\n","/* eslint-disable no-restricted-syntax */\n/* eslint-disable guard-for-in */\nconst ExpressionReplacer = {\n replaceExpressionTokens,\n createRegExp,\n};\n\nfunction replaceExpressionTokens(expression, tokenMappings, tokenIdentifiers) {\n const identifiers = {\n start: (tokenIdentifiers && tokenIdentifiers.start) || '{{',\n end: (tokenIdentifiers && tokenIdentifiers.end) || '}}',\n };\n\n let returnExpression = expression;\n let tokenExpression;\n let tokenString;\n\n for (const key in tokenMappings) {\n tokenExpression = tokenMappings[key];\n tokenString = identifiers.start + key + identifiers.end;\n\n returnExpression = returnExpression.replace(createRegExp(tokenString, true), tokenExpression);\n }\n\n return returnExpression;\n}\n\nfunction createRegExp(string, isGlobal, isGrouped) {\n const escapedString = escapeRegExp(string);\n const regexpString = isGrouped ? `(${escapedString})` : escapedString;\n return isGlobal ? new RegExp(regexpString, 'g') : new RegExp(regexpString);\n}\n\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nexport default ExpressionReplacer;\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nimport ExpressionWrapper from './expression-wrapper';\nimport ExpressionReplacer from './expression-replacer';\n\nconst ExpressionGenerator = {\n generateExpression,\n};\n\n// builds up mappings for the dimensions and measures and wraps the dimensions\n// mappings = { mapping }\n// mapping = {\n// \tvalue: (string) the expression value to replace the key with,\n// \twrap: (boolean) if the expression should be cleaned and wrapped or not (usually if field)\n// variations: (Array) array of strings with variations on the same key that if the value is empty should also be empty\nfunction generateExpression(template, mappings) {\n const explicitMappings = {};\n\n if (mappings) {\n for (const key in mappings) {\n const mapping = mappings[key];\n\n const expression = mapping.wrap ? ExpressionWrapper.wrapExpression(mapping.value) : mapping.value;\n\n explicitMappings[key] = expression;\n\n const variations = mapping.variations || [];\n\n variations.forEach((variation) => {\n const variationExpressions = assembleVariation(variation, expression, key);\n explicitMappings[variation] = variationExpressions;\n });\n }\n }\n\n return ExpressionReplacer.replaceExpressionTokens(template, explicitMappings);\n}\n\n// Internal functions\n\nfunction assembleVariation(variation, value, key) {\n if (value === '') {\n return '';\n }\n\n const regExp = ExpressionReplacer.createRegExp(key, true, true);\n const stringArray = variation.split(regExp);\n let expression = '';\n\n stringArray.forEach((substring) => {\n expression += substring !== key ? substring : value;\n });\n\n return expression;\n}\n\nexport default ExpressionGenerator;\n","import extend from 'extend';\nimport ExpressionGenerator from '../expression-generator/expression-generator';\n\nconst HyperCubeGenerator = {\n generateHyperCubeDef,\n getAllHyperCubeExpressions,\n};\n\n// builds up a hyper cube using a hyper cube def and the hyper cube result, needs the app as well\n// also supports additional mappings that allows generation of more advanced expressions\nfunction generateHyperCubeDef(template, hyperCubeDef, hyperCube, app, mappings) {\n // hyper cube knows about {{Dim[n]}} {{Mea[n]}} mappings.\n return getKnownMappings(template.dimensions.concat(template.measures), hyperCubeDef, hyperCube, app).then(\n (knownMappings) => {\n const allMappings = extend({}, knownMappings, mappings);\n\n const generatedHyperCubeDef = extend(true, {}, hyperCubeDef);\n // clean the dimensions and measures\n generatedHyperCubeDef.qDimensions = [];\n generatedHyperCubeDef.qMeasures = [];\n\n template.dimensions.forEach((dimensionTemplate) => {\n generatedHyperCubeDef.qDimensions.push({\n qDef: {\n qFieldDefs: [`=${ExpressionGenerator.generateExpression(dimensionTemplate, allMappings)}`],\n },\n });\n });\n\n template.measures.forEach((measureTemplate) => {\n generatedHyperCubeDef.qMeasures.push({\n qDef: {\n qDef: ExpressionGenerator.generateExpression(measureTemplate, allMappings),\n },\n });\n });\n\n return generatedHyperCubeDef;\n }\n );\n}\n\nasync function getAllHyperCubeExpressions(hyperCubeDef, hyperCube, app) {\n const dimensions = hyperCubeDef.qDimensions.map((dimension, index) =>\n getExpressionFromDimension(dimension, app, index, hyperCube)\n );\n const measures = hyperCubeDef.qMeasures.map((measure) => getExpressionFromMeasure(measure, app));\n\n return {\n dimensions: await Promise.all(dimensions),\n measures: await Promise.all(measures),\n };\n}\n\nfunction getExpressionFromDimension(dimension, app, index, hyperCube) {\n if (dimension.qLibraryId) {\n return getExpressionFromLibraryItem(dimension.qLibraryId, 'dimension', app, index, hyperCube);\n }\n const drillIndex = hyperCube.qDimensionInfo[index].qGroupPos;\n return Promise.resolve(dimension.qDef.qFieldDefs[drillIndex]);\n}\n\nfunction getExpressionFromMeasure(measure, app) {\n if (measure.qLibraryId) {\n return getExpressionFromLibraryItem(measure.qLibraryId, 'measure', app);\n }\n return Promise.resolve(measure.qDef.qDef);\n}\n\n// Internal functions\n\nfunction getExpressionFromLibraryItem(id, type, app, index, hyperCube) {\n if (!app) {\n console.warn('No app provided, returning library id');\n return id;\n }\n\n const getFn = type === 'dimension' ? 'getDimension' : 'getMeasure';\n\n return app[getFn](id).then((item) =>\n item.getProperties().then((props) => {\n if (type === 'dimension') {\n return props.qDim.qFieldDefs[hyperCube.qDimensionInfo[index].qGroupPos];\n }\n return props.qMeasure.qDef;\n })\n );\n}\n\n// identifies {{Dim[x]}} {{Mea[x]}} mappings and returns the distinct instances of them\nfunction getKnownMappings(mappings, hyperCubeDef, hyperCube, app) {\n const knownMappings = {};\n let dimensionIndices;\n let measureIndices;\n const dfds = [];\n\n mappings.forEach((mapping) => {\n dimensionIndices = spliceIdentifiedMatches(mapping.match(getMappingRegExp('Dim')));\n dimensionIndices.forEach((index) => {\n dfds.push(\n getExpressionFromDimension(hyperCubeDef.qDimensions[index], app, index, hyperCube).then((expression) => {\n knownMappings[`Dim[${index}]`] = { value: expression, wrap: true };\n })\n );\n });\n\n measureIndices = spliceIdentifiedMatches(mapping.match(getMappingRegExp('Mea')));\n measureIndices.forEach((index) => {\n dfds.push(\n getExpressionFromMeasure(hyperCubeDef.qMeasures[index], app).then((expression) => {\n knownMappings[`Mea[${index}]`] = { value: expression };\n })\n );\n });\n });\n\n let returnPromise;\n if (dfds.length) {\n returnPromise = Promise.all(dfds).then(() => Promise.resolve(knownMappings));\n } else {\n returnPromise = Promise.resolve(knownMappings);\n }\n return returnPromise;\n}\n\nfunction getMappingRegExp(string) {\n return new RegExp(`\\\\{\\\\{${string}\\\\[\\\\d\\\\]\\\\}\\\\}`, 'g');\n}\n\nfunction spliceIdentifiedMatches(matches) {\n if (!matches) {\n return [];\n }\n return matches.map((match) => match.substr(6, 1));\n}\n\nexport default HyperCubeGenerator;\n","function booleanConvertFunctions(isReverseSortFn, defaultSort) {\n isReverseSortFn =\n isReverseSortFn ||\n function () {\n return false;\n };\n defaultSort = defaultSort || 1;\n return {\n get(getFn) {\n return !!getFn('integer');\n },\n set(value, setFn) {\n if (value) {\n const reverseSort = isReverseSortFn();\n let intValue = reverseSort ? -1 : 1;\n intValue *= defaultSort;\n setFn('integer', intValue);\n } else {\n setFn('integer', 0);\n }\n },\n };\n}\n\n/**\n * Create convert functions to convert an integer property value for usage in string / enum\n * property-panel components such as the dropdown.\n *\n * @param {Function} isReverseSortFn Function to determine reverse sorting. Optional.\n */\nfunction enumConvertFunctions(isReverseSortFn) {\n isReverseSortFn =\n isReverseSortFn ||\n function () {\n return false;\n };\n return {\n get(getFn) {\n const reverseSortMultiplier = isReverseSortFn() ? -1 : 1;\n const value = getFn('integer') * reverseSortMultiplier;\n switch (value) {\n case -1:\n return 'descending';\n case 1:\n return 'ascending';\n default:\n // 0\n return 'disabled';\n }\n },\n set(value, setFn) {\n const reverseSort = isReverseSortFn();\n switch (value) {\n case 'descending':\n setFn('integer', reverseSort ? 1 : -1);\n break;\n case 'ascending':\n setFn('integer', reverseSort ? -1 : 1);\n break;\n case 'disabled':\n setFn('integer', 0);\n break;\n default:\n // will delete the property\n setFn('integer', undefined);\n break;\n }\n },\n };\n}\n\nfunction invertedEnumConvertFunctions(isReverseSortFn) {\n const invertedIsReverseSortFn = function () {\n return isReverseSortFn ? !isReverseSortFn() : true;\n };\n return enumConvertFunctions(invertedIsReverseSortFn);\n}\n\nexport default {\n booleanConvertFunctions,\n enumConvertFunctions,\n invertedEnumConvertFunctions,\n};\n","import { getValue } from 'qlik-chart-modules';\nimport convertFunctions from './convert-functions';\n\nconst sortDropdownOptions = [\n {\n value: 'ascending',\n translation: 'properties.sorting.ascending',\n },\n {\n value: 'descending',\n translation: 'properties.sorting.descending',\n },\n];\n\nfunction getSortByPropertyDefinition(ref, translation, convertFuncs) {\n return {\n type: 'items',\n items: {\n toggled: {\n type: 'boolean',\n ref,\n translation,\n convertFunctions: convertFuncs.toggled,\n },\n order: {\n type: 'string',\n component: 'dropdown',\n ref,\n options: sortDropdownOptions,\n convertFunctions: convertFuncs.sorting,\n show(itemData) {\n return getValue(itemData, ref, 0) !== 0;\n },\n },\n },\n };\n}\n\nfunction state(ref, isReverseSortFn) {\n ref = ref || 'qSortByState';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.invertedEnumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByState', cFuncs);\n}\n\nfunction frequency(ref, isReverseSortFn) {\n ref = ref || 'qSortByFrequency';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.invertedEnumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByFrequency', cFuncs);\n}\n\nfunction ascii(ref, isReverseSortFn) {\n ref = ref || 'qSortByAscii';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByAlphabetic', cFuncs);\n}\n\nfunction numeric(ref, isReverseSortFn) {\n ref = ref || 'qSortByNumeric';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn, -1),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n return getSortByPropertyDefinition(ref, 'properties.sorting.sortByNumeric', cFuncs);\n}\n\nfunction expression(ref, isReverseSortFn) {\n ref = ref || 'qSortByExpression';\n const cFuncs = {\n toggled: convertFunctions.booleanConvertFunctions(isReverseSortFn),\n sorting: convertFunctions.enumConvertFunctions(isReverseSortFn),\n };\n const propDef = getSortByPropertyDefinition(ref, 'properties.sorting.sortByExpression', cFuncs);\n\n propDef.items.expression = {\n type: 'number',\n component: 'expression',\n expressionType: 'ValueExpr',\n ref: 'qExpression',\n translation: 'Common.Expression',\n defaultValue: '',\n show(itemData) {\n return getValue(itemData, ref, 0) !== 0;\n },\n };\n\n return propDef;\n}\n\nexport default {\n state,\n ascii,\n numeric,\n expression,\n frequency,\n};\n","const CONSTANTS = {\n DATA_PATH: 'qUndoExclude',\n HYPERCUBE_DEF_PATH: 'qHyperCubeDef',\n HYPERCUBE_PATH: 'qHyperCube',\n CHART_ID: 'object.distributionPlot',\n\n AUTO_SORT: 'sorting.autoSort',\n SORT_CRITERIA: 'sorting.sortCriteria',\n SORTING_ELEMENT_ID: 'sorting.elementId',\n SORTING_ELEMENT_MIN_ID: 'distplot-exp-min',\n SORTING_ELEMENT_MAX_ID: 'distplot-exp-max',\n SORTING_EXPRESSION: 'sorting.expression',\n\n MAX_GLYPH_COUNT: 20,\n MAX_STACKED_VALUES: 3000, // Max nbr of values in outer dim\n\n HORIZONTAL: 'horizontal',\n\n BOX_PADDING: 2,\n POINT_BANDWIDTH_BASE_RATIO: 0.35, // Base value, with no scaling applied\n MAX_POINT_BASE_SIZE_PX: 34, // Base value, with no scaling applied\n MIN_POINT_PIXELS: 5,\n JITTER_PARAMETER: 3, // This is used in relation to point size\n\n BUBBLE_SCALES_MAX: 100,\n};\n\nObject.freeze(CONSTANTS);\n\nexport default CONSTANTS;\n","import { getValue } from 'qlik-chart-modules';\nimport CONSTANTS from './distributionplot-constants';\n\nfunction hasMultipleDimensions(container) {\n // var hasMultiple = container.qHyperCubeDef && container.qHyperCubeDef.qDimensions.length > 1;\n const hasMultiple =\n (container.qHyperCubeDef && container.qHyperCubeDef.qDimensions.length > 1) ||\n (container.qHyperCube && container.qHyperCube.qDimensionInfo && container.qHyperCube.qDimensionInfo.length > 1);\n return hasMultiple;\n}\n\nfunction getOuterDimensionCardinality(layout) {\n const qHyperCube = getValue(layout, CONSTANTS.HYPERCUBE_PATH);\n if (!hasMultipleDimensions(layout)) {\n return 1;\n }\n return qHyperCube && qHyperCube.qDimensionInfo[1].qCardinal;\n}\n\nfunction isAutoSort(properties) {\n return getValue(properties, CONSTANTS.AUTO_SORT, false);\n}\n\nfunction isSortByExpression(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByExpression`, 0) !== 0;\n}\n\nfunction isSortByNumeric(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByNumeric`, 0) !== 0;\n}\n\nfunction isSortByAscii(properties) {\n return getValue(properties, `${CONSTANTS.SORT_CRITERIA}.sortByAscii`, 0) !== 0;\n}\n\nconst distplotUtils = {\n hasMultipleDimensions,\n getOuterDimensionCardinality,\n isAutoSort,\n isSortByExpression,\n isSortByNumeric,\n isSortByAscii,\n};\n\nexport default distplotUtils;\n","const reverseMap = {\n cellBackgroundColor: true,\n cellForegroundColor: true,\n colorByAlternative: true,\n colorByExpression: true,\n tooltip: true,\n urlLabel: true,\n url: true,\n};\n\nexport default {\n create(id, props) {\n if (!id || !reverseMap[id]) {\n throw new Error('Attribute Expressions Util: ID required');\n }\n const ret = {};\n if (props) {\n Object.keys(props).forEach((key) => {\n ret[key] = props[key];\n });\n }\n ret.id = id;\n ret.qAttribute = true;\n\n return ret;\n },\n getById(attributeExpressions, id, idProp) {\n if (attributeExpressions) {\n idProp = idProp || 'id';\n return attributeExpressions.filter((aE) => aE[idProp] === id)[0];\n }\n return false;\n },\n getIndexById(attributeExpressions, id, idProp) {\n let index = -1;\n if (attributeExpressions) {\n idProp = idProp || 'id';\n attributeExpressions.forEach((aE, i) => {\n if (aE[idProp] === id) {\n index = i;\n }\n });\n }\n return index;\n },\n moveById(fromArray, toArray, id, idProp) {\n const expsIndex = this.getIndexById(fromArray, id, idProp);\n toArray = toArray || [];\n const targetIndex = this.getIndexById(toArray, id, idProp);\n if (expsIndex !== -1 && targetIndex === -1) {\n const attribExps = fromArray.splice(expsIndex, 1);\n toArray.push(attribExps[0]);\n }\n return toArray;\n },\n moveAllById(fromArray, toArray, id, idProp) {\n const fromAttribExps = fromArray.filter((obj) => obj.id === id);\n const toAttribExps = toArray.filter((obj) => obj.id === id);\n const newAttribExps = fromAttribExps.filter((fromObj) => {\n const existingAttr = toAttribExps.filter((toObj) => toObj[idProp] === fromObj[idProp]);\n if (existingAttr.length > 0) {\n return false;\n }\n return true;\n });\n return [...toArray, ...newAttribExps];\n },\n moveByIdFromGroup(fromGroup, toArray, attributeProp, id, idProp) {\n attributeProp = attributeProp || 'qAttributeExpressions';\n idProp = idProp || 'id';\n for (let i = 0; i < fromGroup.length; i++) {\n const fromArray = fromGroup[i][attributeProp];\n const l = toArray.length;\n this.moveById(fromArray, toArray, id, idProp);\n if (l !== toArray.length) {\n return toArray;\n }\n }\n return toArray;\n },\n clean(attributeExpressions) {\n return attributeExpressions.filter((aE) => aE && aE.id);\n },\n IDMAP: {\n CELL_BACKGROUND_COLOR: 'cellBackgroundColor',\n CELL_FOREGROUND_COLOR: 'cellForegroundColor',\n COLOR_BY_ALTERNATIVE: 'colorByAlternative',\n COLOR_BY_EXPRESSION: 'colorByExpression',\n TOOLTIP: 'tooltip',\n CELL_LINK_LABEL: 'urlLabel',\n CELL_LINK_URL: 'url',\n },\n};\n","function getColorByDefinition(columnType, isAttribute, target) {\n const ret = {};\n let qDef;\n let hasLabelExpression;\n let hasLabel;\n\n switch (columnType) {\n case 'dimension':\n if (target.qLibraryId) {\n ret.type = 'dimension';\n ret.name = target.qLibraryId;\n ret.id = target.qLibraryId;\n } else {\n ret.type = 'field';\n if (isAttribute) {\n ret.name = target.label || target.qDef;\n ret.id = target.qDef;\n } else {\n qDef = target.qDef;\n hasLabelExpression = !!qDef.qLabelExpression;\n hasLabel = qDef.qFieldLabels && qDef.qFieldLabels[0];\n\n ret.name = qDef.qFieldDefs[0];\n\n if (hasLabelExpression) {\n ret.label = qDef.qLabelExpression;\n } else if (hasLabel) {\n ret.label = qDef.qFieldLabels[0];\n } else {\n ret.label = qDef.qFieldDefs[0];\n }\n }\n }\n break;\n default:\n throw new Error('Default-property-logic.js: getColorByDefinition: Illegal input');\n }\n return ret;\n}\n\nexport default {\n getColorByDefinition,\n};\n","function useMasterNumberFormat(formatting) {\n formatting.quarantine = {\n qNumFormat: formatting.qNumFormat || {},\n isCustomFormatted: formatting.isCustomFormatted || false,\n };\n formatting.qNumFormat = null;\n formatting.isCustomFormatted = undefined;\n}\nfunction useLocalFormat(formatting) {\n formatting.qNumFormat = formatting.quarantine?.qNumFormat || {};\n formatting.isCustomFormatted = formatting.quarantine?.isCustomFormatted || false;\n formatting.quarantine = undefined;\n}\nfunction isUsingMasterNumberFormat(formatting) {\n return !!formatting?.quarantine?.qNumFormat ?? false;\n}\n\nexport default {\n useMasterNumberFormat,\n useLocalFormat,\n isUsingMasterNumberFormat,\n};\n","import { getValue, setValue } from 'qlik-chart-modules';\nimport attributeExpsUtil from '../extra/attribute-expression-util';\nimport LogicHelper from '../extra/property-logic-helper';\nimport NumberFormatUtil from '../extra/number-format-util';\n\n// Hardcoded hack. Should be fixed when we have a better solution.\n// This solves the problem with supporting base colors for old objects.\n// This also fixes the conversion problem.\n\nconst baseNotSupported = ['scatterplot', 'map'];\n\nconst baseDimSupported = ['map'];\n\nexport default {\n baseColor: {\n isSupported(type) {\n return type && type.length && baseNotSupported.indexOf(type) === -1;\n },\n isDimSupported(type) {\n // Used for Auto coloring. Usually we limit coloring by dimension library color to visualizations with\n // one dimension but map is special case with 2 dimensions. However, only one is visible to the user.\n return type && type.length && baseDimSupported.indexOf(type) !== -1;\n },\n },\n colorBy: {},\n colorByUpdater(properties, path, markerSettings, srcPath) {\n this.updateColorDef(properties, srcPath, markerSettings);\n this.updateHypercubeAttributes(properties, path, markerSettings);\n },\n updateColorDef(properties, path, markerSettings) {\n const mode = getValue(markerSettings, 'mode');\n const auto = getValue(markerSettings, 'auto');\n const dimensions = getValue(properties, `${path}qDimensions`, []);\n const measures = getValue(properties, `${path}qMeasures`, []);\n let item;\n let dim;\n let attrDim;\n let colorByDefinition;\n\n if (!auto && mode === 'byDimension' && dimensions.length) {\n item = getValue(markerSettings, 'byDimDef');\n\n if (item) {\n setAltLabel(markerSettings, item.label);\n }\n\n if (item && item.activeDimensionIndex > -1) {\n item.activeDimensionIndex = Math.min(item.activeDimensionIndex, dimensions.length - 1); // Set to last active dimension index if index if out of bounds\n dim = dimensions[item.activeDimensionIndex];\n colorByDefinition = LogicHelper.getColorByDefinition('dimension', false, dim);\n colorByDefinition.activeDimensionIndex = item.activeDimensionIndex;\n setColorByPropertyDef(markerSettings, colorByDefinition);\n } else if (!item || !item.key) {\n dim = dimensions[dimensions.length - 1];\n\n attrDim = attributeExpsUtil.getById(dim.qAttributeDimensions, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE);\n setColorByPropertyDef(markerSettings, LogicHelper.getColorByDefinition('dimension', !!attrDim, attrDim || dim));\n }\n } else if (!auto && mode === 'byMeasure' && dimensions.length) {\n throw new Error('not suported in any 444-chart');\n } else if (mode === 'byMultiple' && measures.length < 2) {\n setValue(markerSettings, 'mode', 'primary');\n }\n },\n updateHypercubeAttributes(properties, path, markerSettings) {\n const mode = getValue(markerSettings, 'mode');\n const auto = getValue(markerSettings, 'auto');\n const dimensions = getValue(properties, `${path}qDimensions`, []);\n const measures = getValue(properties, `${path}qMeasures`, []);\n const exclDimensions = getValue(properties, `${path}qLayoutExclude.qHyperCubeDef.qDimensions`, []);\n\n if (!auto && mode === 'byDimension' && dimensions.length) {\n // Clear old qAttributeDimension/qAttributeExpression and add a qAttributeDimension for the current dimension\n resolveColorByPropertyDef(\n markerSettings,\n true,\n dimensions,\n exclDimensions,\n measures,\n getValue(markerSettings, 'byDimDef.label')\n );\n } else if (!auto && mode === 'byMeasure' && dimensions.length) {\n // Clear old qAttributeDimension/qAttributeExpression and add a qAttributeExpression for the current measure\n resolveColorByPropertyDef(\n markerSettings,\n false,\n dimensions,\n exclDimensions,\n measures,\n getValue(markerSettings, 'byMeasureDef.label')\n );\n } else {\n // Remove color by properties\n clearColorByItem(dimensions, exclDimensions);\n }\n },\n setColorByPropertyDef,\n resolveColorByPropertyDef,\n clearColorByItem,\n};\n\nfunction clearColorByItem(dimensions, exclDimensions) {\n dimensions.forEach((dim) => {\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeDimensions');\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeExpressions');\n });\n exclDimensions.forEach((dim) => {\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeDimensions');\n cleanAttributeByType(dim, attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE, 'qAttributeExpressions');\n });\n}\n\nfunction cleanAttributeByType(target, type, attribute) {\n if (target[attribute]) {\n const index = attributeExpsUtil.getIndexById(target[attribute], type);\n if (index >= 0) {\n target[attribute].splice(index, 1);\n }\n } else {\n target[attribute] = []; // eslint-disable-line no-param-reassign\n }\n}\n\nfunction wrapFieldName(name) {\n return name.split(' ').length > 1 && name[0] !== '=' && name[0] !== '[' ? `[${name}]` : name;\n}\n\nfunction setColorByPropertyDef(properties, item, expression, keepMode) {\n const itemType = expression ? 'expression' : item.type;\n let mode = properties.mode;\n const label = item.label || item.name || '';\n\n setAltLabel(properties, label);\n\n switch (itemType) {\n case 'field':\n mode = 'byDimension';\n properties.byDimDef = {\n label: item.label || wrapFieldName(item.name),\n key: wrapFieldName(item.name),\n type: 'expression',\n activeDimensionIndex: item.activeDimensionIndex,\n }; // eslint-disable-line no-param-reassign\n break;\n case 'expression':\n mode = 'byMeasure';\n properties.byMeasureDef = {\n label: expression || item.label || item.name,\n key: expression || item.name,\n type: 'expression',\n }; // eslint-disable-line no-param-reassign\n break;\n case 'dimension':\n mode = 'byDimension';\n properties.byDimDef = {\n label: item.name,\n key: item.id,\n type: 'libraryItem',\n activeDimensionIndex: item.activeDimensionIndex,\n }; // eslint-disable-line no-param-reassign\n break;\n case 'measure':\n mode = 'byMeasure';\n properties.byMeasureDef = { label: item.name, key: item.id, type: 'libraryItem' };\n if (properties.formatting) {\n NumberFormatUtil.useMasterNumberFormat(properties.formatting);\n }\n break;\n default:\n break;\n }\n if (!keepMode) {\n properties.auto = false; // eslint-disable-line no-param-reassign\n properties.mode = mode; // eslint-disable-line no-param-reassign\n }\n}\n\nfunction resolveColorByPropertyDef(properties, isDim, dimensions, exclDimensions, measures, customLabel) {\n clearColorByItem(dimensions, exclDimensions);\n const dim = dimensions[dimensions.length - 1];\n if (dim) {\n const item = isDim ? getValue(properties, 'byDimDef') : getValue(properties, 'byMeasureDef');\n const qNumFormat = getValue(properties, 'formatting.qNumFormat');\n const isCustomFormatted = getValue(properties, 'formatting.isCustomFormatted');\n\n if (item) {\n const attribExps = attributeExpsUtil.create(attributeExpsUtil.IDMAP.COLOR_BY_ALTERNATIVE);\n switch (item.type) {\n case 'expression':\n attribExps.label = customLabel || item.label;\n if (isDim) {\n attribExps.qDef = item.key;\n } else {\n attribExps.qExpression = item.key;\n if (qNumFormat) {\n attribExps.qNumFormat = qNumFormat;\n attribExps.isCustomFormatted = isCustomFormatted;\n }\n }\n break;\n case 'libraryItem':\n if (!isDim) {\n // Figure out if we are using a library item that matches one in data\n let inIndex = -1;\n measures.forEach((mea, index) => {\n if (item.key === mea.qLibraryId) {\n inIndex = index;\n }\n });\n attribExps.matchMeasure = inIndex;\n if (qNumFormat) {\n attribExps.qNumFormat = qNumFormat;\n attribExps.isCustomFormatted = isCustomFormatted;\n }\n }\n attribExps.qLibraryId = item.key;\n attribExps.colorMapRef = item.key;\n break;\n default:\n break;\n }\n if (isDim) {\n attribExps.qSortBy = { qSortByAscii: 1 };\n dim.qAttributeDimensions.push(attribExps);\n } else {\n dim.qAttributeExpressions.push(attribExps);\n }\n }\n }\n}\n\nfunction setAltLabel(properties, label) {\n if (!label) {\n return;\n }\n\n const isExpression = label.charAt(0) === '=';\n\n properties.altLabel = isExpression ? { qStringExpression: { qExpr: label.substr(1) } } : label;\n}\n","// import propertyResolver from '../../../assets/client/utils/property-resolver';\nimport { getValue } from 'qlik-chart-modules';\nimport AdvancedColorer from '@qlik/common/picasso/advanced-colorer';\n\n// Privates\n\nfunction getBaseColor(info) {\n if (!info) {\n return false;\n }\n if (info.coloring && info.coloring.baseColor && info.coloring.baseColor.color) {\n return info.coloring.baseColor;\n }\n if (info.baseColor && info.baseColor.color) {\n return info.baseColor;\n }\n return false;\n}\n\n// Public\n\nfunction isDimensionLibraryItem(data) {\n return getValue(data, 'color.point.byDimDef.type') === 'libraryItem';\n}\n\nfunction isMeasureLibraryItem(data) {\n return getValue(data, 'color.point.byMeasureDef.type') === 'libraryItem';\n}\n\nfunction isColorAuto(data) {\n return getValue(data, 'color.point.auto') === true;\n}\n\nfunction isColorBySingle(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode', 'primary') === 'primary';\n}\n\nfunction isColorByDimension(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byDimension';\n}\n\nfunction isColorByMeasure(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byMeasure';\n}\n\nfunction isColorByExpression(data) {\n return !isColorAuto(data) && getValue(data, 'color.point.mode') === 'byExpression';\n}\n\nfunction measuresHasBaseColors(handler) {\n return getValue(handler, 'layout.qHyperCube.qMeasureInfo', []).filter((info) => !!getBaseColor(info)).length > 0;\n}\n\nfunction dimensionsHasBaseColors(handler) {\n return getValue(handler, 'layout.qHyperCube.qDimensionInfo', []).filter((info) => !!getBaseColor(info)).length > 0;\n}\n\nfunction onGlobalChangeColors(data) {\n AdvancedColorer.updateColorDef(data, 'qHyperCubeDef.', data.color.point);\n}\n\n/**\n * Logic for showing/hiding legend section\n * @param {object} data\n */\nfunction showLegend(data) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return mode !== 'primary' && mode !== 'byExpression' && isColorAuto(data) === false;\n}\n\nfunction showColorByLabel(data) {\n // We only want to show if we are not coloring by a \"library item\" or Coloring by \"n:th dimension\"\n const isDimAndNotLibraryItem = isColorByDimension(data) && isDimensionLibraryItem(data) === false;\n\n const isMeasureAndNotLibraryItem = isColorByMeasure(data) && isMeasureLibraryItem(data) === false;\n const hasActiveDimensionIndex = getValue(data, 'color.point.byDimDef.activeDimensionIndex') > -1;\n return (isDimAndNotLibraryItem && !hasActiveDimensionIndex) || isMeasureAndNotLibraryItem;\n}\n\nfunction onChangeCalcCond(data) {\n const baseCube = data?.qHyperCubeDef;\n const generatedCube = data?.qUndoExclude?.qHyperCubeDef;\n if (baseCube && generatedCube) {\n generatedCube.qCalcCond = baseCube.qCalcCond;\n generatedCube.qCalcCondition = baseCube.qCalcCondition;\n }\n}\n\nfunction hasDimValueColors(handler, activeDimId) {\n return handler.layout.qHyperCube.qDimensionInfo[activeDimId]?.coloring?.hasValueColors ?? true;\n}\n\nexport default {\n measuresHasBaseColors,\n dimensionsHasBaseColors,\n onGlobalChangeColors,\n onChangeCalcCond,\n\n isColorByDimension,\n isColorByMeasure,\n isColorAuto,\n isColorByExpression,\n isColorBySingle,\n isDimensionLibraryItem,\n isMeasureLibraryItem,\n showLegend,\n showColorByLabel,\n hasDimValueColors,\n};\n","import { setValue } from 'qlik-chart-modules';\n\nfunction Sorter(getSettingsFn, getElementsFn) {\n this.getSettings = getSettingsFn;\n\n this.getElements = getElementsFn;\n}\n\nSorter.prototype.applyAutoSorting = applyAutoSorting;\nSorter.prototype.applyDefaultCustomSorting = applyDefaultCustomSorting;\nSorter.prototype.applyCustomSorting = applyCustomSorting;\n\nexport default Sorter;\n\nfunction applyAutoSorting(dimension) {\n const sortCriterias = dimension.qDef.qSortCriterias;\n\n if (!sortCriterias[0]) {\n sortCriterias.push({});\n }\n\n const sortCriteria = sortCriterias[0];\n const settings = this.getSettings();\n\n setValue(sortCriteria, 'qSortByExpression', settings.SORT_BY_EXPRESSION);\n setValue(sortCriteria, 'qSortByAscii', settings.SORT_BY_ASCII);\n setValue(sortCriteria, 'qSortByNumeric', settings.SORT_BY_NUMERIC);\n setValue(sortCriteria, 'qSortByLoadOrder', settings.SORT_BY_LOAD_ORDER);\n\n if (!sortCriteria.qExpression) {\n sortCriteria.qExpression = {};\n }\n\n const elements = this.getElements();\n const defaultElement = getDefaultElement(elements);\n\n sortCriteria.qExpression.qv = defaultElement.exp;\n}\n\nfunction applyDefaultCustomSorting(dimension, chartSorting) {\n applyAutoSorting.call(this, dimension);\n\n const elements = this.getElements();\n const defaultElement = getDefaultElement(elements);\n const sortCriteria = dimension.qDef.qSortCriterias[0];\n\n chartSorting.elementId = defaultElement.id;\n\n chartSorting.sortCriteria = {};\n\n setValue(chartSorting.sortCriteria, 'sortByExpression', sortCriteria.qSortByExpression);\n setValue(chartSorting.sortCriteria, 'sortByAscii', sortCriteria.qSortByAscii);\n setValue(chartSorting.sortCriteria, 'sortByNumeric', sortCriteria.qSortByNumeric);\n setValue(chartSorting.sortCriteria, 'sortByLoadOrder', sortCriteria.qSortByLoadOrder);\n}\n\nfunction applyCustomSorting(dimension, chartSorting) {\n const sortCriteria = dimension.qDef.qSortCriterias[0];\n\n setValue(sortCriteria, 'qSortByExpression', chartSorting.sortCriteria.sortByExpression);\n setValue(sortCriteria, 'qSortByAscii', chartSorting.sortCriteria.sortByAscii);\n setValue(sortCriteria, 'qSortByNumeric', chartSorting.sortCriteria.sortByNumeric);\n setValue(sortCriteria, 'qSortByLoadOrder', chartSorting.sortCriteria.sortByLoadOrder);\n\n if (sortCriteria.qSortByExpression !== 1 && sortCriteria.qSortByExpression !== -1) {\n return;\n }\n\n if (!sortCriteria.qExpression) {\n sortCriteria.qExpression = {};\n }\n\n if (chartSorting.elementId) {\n const elements = this.getElements();\n const element = getMatchingElement(elements, chartSorting.elementId);\n\n sortCriteria.qExpression.qv = element.exp;\n } else {\n sortCriteria.qExpression.qv = chartSorting.expression.qValueExpression.qExpr;\n }\n}\n\nfunction getDefaultElement(elements) {\n const matchingElements = elements.filter((element) => element.isDefault);\n\n return matchingElements.length === 0 ? elements[0] : matchingElements[0];\n}\n\nfunction getMatchingElement(elements, elementId) {\n const matchingElements = elements.filter((measure) => measure.id === elementId);\n\n if (matchingElements.length === 0) {\n throwError(`Could not find any element matching the element '${elementId}'`);\n }\n\n return matchingElements[0];\n}\n\nfunction throwError(message) {\n throw new Error(`Sorter: ${message}`);\n}\n","import Sorter from './Sorter';\n\nconst sorterFactory = {\n create,\n};\n\nexport default sorterFactory;\n\nfunction create(getSettingsFn, elementsRetriever) {\n return new Sorter(getSettingsFn, elementsRetriever);\n}\n","const sorterFacade = {\n applySorting,\n};\n\nexport default sorterFacade;\n\nfunction applySorting(sorter, dimension, chartSorting) {\n const isAutoSort = chartSorting.autoSort;\n const hasCachedSortCriteria = !!chartSorting.sortCriteria;\n\n if (isAutoSort) {\n sorter.applyAutoSorting(dimension);\n } else if (!hasCachedSortCriteria) {\n sorter.applyDefaultCustomSorting(dimension, chartSorting);\n } else {\n sorter.applyCustomSorting(dimension, chartSorting);\n }\n}\n","const SORTER_BASE_SORTING_SETTINGS = {\n ASCII: {\n ELEMENT: undefined,\n SORT_BY_EXPRESSION: undefined,\n SORT_BY_ASCII: 1,\n SORT_BY_NUMERIC: 1,\n SORT_BY_LOAD_ORDER: 1,\n },\n};\n\nObject.freeze(SORTER_BASE_SORTING_SETTINGS.ASCII);\nObject.freeze(SORTER_BASE_SORTING_SETTINGS);\n\nexport default SORTER_BASE_SORTING_SETTINGS;\n","import extend from 'extend';\nimport BASE_SORTING_SETTINGS from '@qlik/common/picasso/sorting/base-derived/sorter-base-sorting-settings';\n\nconst SORTING_SETTINGS = extend(\n true,\n {\n DIST_MAX: {\n ELEMENT: 'distplot-exp-max', // This refers to the element returned from getElements() in distributionplot-sorting-elements-retriever.js\n SORT_BY_EXPRESSION: -1,\n SORT_BY_ASCII: 1,\n SORT_BY_NUMERIC: 1,\n SORT_BY_LOAD_ORDER: 1,\n },\n },\n BASE_SORTING_SETTINGS\n);\n\nexport default SORTING_SETTINGS;\n","import { getValue } from 'qlik-chart-modules';\nimport SETTINGS from './distributionplot-sorting-settings';\n\n//\n// Implementation details\n//\nfunction getSettings(layout) {\n const cardinality = getValue(layout, 'qHyperCube.qDimensionInfo.1.qCardinal', 1);\n\n if (cardinality > 10) {\n return SETTINGS.DIST_MAX;\n }\n\n return SETTINGS.ASCII;\n}\n\nconst settingsRetriever = {\n getSettings,\n};\n\nexport default settingsRetriever;\n","import ExpressionWrapper from '@qlik/common/picasso/expression-generator/expression-wrapper';\n// import translator from '../../../../js/lib/translator';\nimport distributionPlotConstants from '../distributionplot-constants';\n\n//\n// Implementation details\n//\nfunction getElementIds() {\n return [distributionPlotConstants.SORTING_ELEMENT_MIN_ID, distributionPlotConstants.SORTING_ELEMENT_MAX_ID];\n}\n\n/**\n * Get a fractile or min/max expression, putting the dimensions/measures in the correct\n * place inside the expression.\n *\n * @param {number} percentile given as a decimal value in the range 0 <= 1\n * @param {string} innerDimString\n * @param {string} outerDimString\n * @param {string} innerMeasureString\n * @return {string} An expression which will sort the data on outer dimension's min/max/fractile value\n */\nfunction getFractileExpression(percentile, innerDim, outerDim, innerMeasureString) {\n const totalAndAggr =\n 'total {{<outerDimString>}} Aggr( {{innerMeasureString}}, {{outerDimString,}} {{innerDimString}} )';\n let fnName = 'Fractile';\n\n if (percentile === 0) {\n fnName = 'Min';\n } else if (percentile === 1) {\n fnName = 'Max';\n }\n\n const wrappedInnerDim = innerDim ? ExpressionWrapper.wrapExpression(innerDim) : '';\n const wrappedOuterDim = outerDim ? ExpressionWrapper.wrapExpression(outerDim) : '';\n\n const template = `${fnName}( ${totalAndAggr}, ${percentile} )`;\n const expression = template\n .replace(/{{innerDimString}}/g, wrappedInnerDim)\n .replace(/{{outerDimString}}/g, wrappedOuterDim)\n .replace(/{{<outerDimString>}}/g, outerDim ? `<${wrappedOuterDim}>` : '')\n .replace(/{{outerDimString,}}/g, outerDim ? `${wrappedOuterDim},` : '')\n .replace(/{{innerMeasureString}}/g, (innerMeasureString || '').replace(/^=/, ''));\n\n return expression;\n}\n\nfunction getElements(measureExpressions, dimensionExpressions, settings, translator) {\n const innerDimString = dimensionExpressions[0];\n const outerDimString = dimensionExpressions[1];\n const innerMeasureString = measureExpressions[0];\n const expMin = getFractileExpression(0, innerDimString, outerDimString, innerMeasureString);\n const expMax = getFractileExpression(1, innerDimString, outerDimString, innerMeasureString);\n\n return [\n {\n id: distributionPlotConstants.SORTING_ELEMENT_MIN_ID,\n label: translator.get('properties.distributionPlot.min'),\n exp: expMin,\n isDefault: distributionPlotConstants.SORTING_ELEMENT_MIN_ID === settings.ELEMENT,\n },\n {\n id: distributionPlotConstants.SORTING_ELEMENT_MAX_ID,\n label: translator.get('properties.distributionPlot.max'),\n exp: expMax,\n isDefault: distributionPlotConstants.SORTING_ELEMENT_MAX_ID === settings.ELEMENT,\n },\n ];\n}\n\nconst distplotSortingElementsRetriever = {\n getElementIds,\n getElements,\n getFractileExpression,\n};\n\nexport default distplotSortingElementsRetriever;\n","import sorterFactory from '@qlik/common/picasso/sorting/base-derived/sorter-factory';\nimport sorterFacade from '@qlik/common/picasso/sorting/base-derived/sorter-facade';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport settingsRetriever from './distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './distributionplot-sorting-elements-retriever';\n\nfunction throwError(message) {\n throw new Error(`distributionplot-sorter.applySorting: ${message}`);\n}\n\nfunction validate(properties) {\n const qHyperCubeDef = properties.qHyperCubeDef;\n if (!qHyperCubeDef) {\n throwError(\"no 'qHyperCubeDef' in properties arg\");\n } else if (!qHyperCubeDef.qDimensions) {\n throwError(\"no 'qHyperCubeDef.qDimensions' in properties arg\");\n } else if (!qHyperCubeDef.qMeasures) {\n throwError(\"no 'qHyperCubeDef.qMeasures' in properties arg\");\n } else if (!qHyperCubeDef.qDimensions.length || qHyperCubeDef.qDimensions.length < 2) {\n throwError(\"'qHyperCubeDef.qDimensions' has no outer dimension\");\n }\n}\n\nfunction setSorting(properties, layout, expressions, translator) {\n if (!properties.qUndoExclude) {\n return;\n }\n\n if (!properties.sorting) {\n properties.sorting = { autoSort: true };\n }\n\n const dimensions = properties.qUndoExclude.qHyperCubeDef.qDimensions;\n\n if (dimensions.length >= 2) {\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [0, 2, 1];\n } else {\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n }\n\n const getSettingsFn = function () {\n return settingsRetriever.getSettings(layout);\n };\n\n const getElementsFn = function () {\n const settings = getSettingsFn();\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n };\n\n const sorter = sorterFactory.create(getSettingsFn, getElementsFn);\n const outerDimension = dimensions[0];\n const chartSorting = properties.sorting;\n\n sorterFacade.applySorting(sorter, outerDimension, chartSorting);\n}\n\nfunction applySorting(properties, layout, app, exps, translator) {\n validate(properties);\n\n if (exps) {\n return setSorting(properties, layout, exps, translator);\n }\n\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(properties.qHyperCubeDef, layout.qHyperCube, app).then(\n (expressions) => {\n setSorting(properties, layout, expressions, translator);\n }\n );\n}\n\nconst distplotSorter = {\n applySorting,\n};\n\nexport default distplotSorter;\n","import { getValue, setValue } from 'qlik-chart-modules';\nimport CONSTANTS from '../distributionplot-constants';\n\nconst SORT_BY_EXPRESSION_REF = `${CONSTANTS.SORT_CRITERIA}.sortByExpression`;\n\n//\n// Implementation details\n//\nfunction updateSortOrder(properties, prevProperties) {\n if (!prevProperties) {\n return;\n }\n\n const currentSortByExpression = getValue(properties, SORT_BY_EXPRESSION_REF);\n const currentIsSortByExpression = currentSortByExpression === -1 || currentSortByExpression === 1;\n\n if (!currentIsSortByExpression) {\n return;\n }\n\n const currentSortingElement = getValue(properties, CONSTANTS.SORTING_ELEMENT_ID);\n const prevSortingElement = getValue(prevProperties, CONSTANTS.SORTING_ELEMENT_ID);\n\n const hasPrevSortingElement = !!prevSortingElement;\n\n const currentSortingElementIsMin = currentSortingElement === CONSTANTS.SORTING_ELEMENT_MIN_ID;\n const currentSortingElementIsMax = currentSortingElement === CONSTANTS.SORTING_ELEMENT_MAX_ID;\n const prevSortingElementIsMin = prevSortingElement === CONSTANTS.SORTING_ELEMENT_MIN_ID;\n const prevSortingElementIsMAx = prevSortingElement === CONSTANTS.SORTING_ELEMENT_MAX_ID;\n const wasChangedFromMaxToMin = currentSortingElementIsMin && prevSortingElementIsMAx;\n const wasChangedFromMinToMax = currentSortingElementIsMax && (!hasPrevSortingElement || prevSortingElementIsMin);\n const prevSortByExpression = getValue(prevProperties, SORT_BY_EXPRESSION_REF);\n const prevWasSortByExpression = prevSortByExpression === -1 || prevSortByExpression === 1;\n\n const currentSortByExpressionIsAscending = currentSortByExpression === 1;\n\n const sortByExpressionToggledOnWithMaxElementAndAscendingSet =\n currentSortingElementIsMax && !prevWasSortByExpression && currentSortByExpressionIsAscending;\n\n if (wasChangedFromMaxToMin) {\n setValue(properties, SORT_BY_EXPRESSION_REF, 1);\n } else if (wasChangedFromMinToMax || sortByExpressionToggledOnWithMaxElementAndAscendingSet) {\n setValue(properties, SORT_BY_EXPRESSION_REF, -1);\n }\n}\n\nconst expressionSortOrderer = {\n updateSortOrder,\n};\n\nexport default expressionSortOrderer;\n","const getStylingPanelDefinition = (bkgOptionsEnabled) => ({\n component: 'styling-panel',\n chartTitle: 'Object.DistributionPlot',\n translation: 'LayerStyleEditor.component.styling',\n subtitle: 'LayerStyleEditor.component.styling',\n ref: 'components',\n useGeneral: true,\n useBackground: bkgOptionsEnabled,\n});\n\nexport default getStylingPanelDefinition;\n","import { setValue, getValue } from 'qlik-chart-modules';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport sortOrderBuilder from '@qlik/common/extra/sort-order/sort-order';\nimport distplotUtils from './distributionplot-utils';\nimport propsLogic from './distributionplot-properties-logic';\nimport distplotSorter from './sorting/distributionplot-sorter';\nimport settingsRetriever from './sorting/distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\nimport expressionSortOrderer from './sorting/distributionplot-expression-sort-orderer';\nimport CONSTANTS from './distributionplot-constants';\nimport getStylingPanelDefinition from './styling-panel-definition';\n\nfunction getNumMeasures(obj) {\n return getValue(obj, 'qHyperCubeDef.qMeasures.length', 0);\n}\nfunction getNumDimensions(obj) {\n return getValue(obj, 'qHyperCubeDef.qDimensions.length', 0);\n}\n\nfunction persistentColorsShowFunc(data) {\n return (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byDimension' &&\n getNumMeasures(data) <= 1\n );\n}\n\nexport default function propertyDefinition(env) {\n const { flags, translator } = env;\n const theme = env.anything.sense.theme;\n\n // Feature Flags\n const stylingPanelEnabled = env.flags.isEnabled('SENSECLIENT_IM_2018_STYLINGPANEL_DIST_PLOT');\n const bkgOptionsEnabled = env.flags.isEnabled('DIST_BKG_OPTIONS');\n\n const lookupColorInPalette = (color) => {\n const palette = theme.getDataColorPickerPalettes()[0].colors;\n const index = palette.indexOf(color);\n return { color, index };\n };\n\n const colors = {\n translation: 'properties.colors',\n type: 'items',\n items: {\n colors: {\n type: 'items',\n items: {\n pointColor: {\n type: 'items',\n translation: 'properties.colorsAndLegend',\n grouped: true,\n items: {\n colors: {\n type: 'items',\n items: {\n autoColor: {\n ref: 'color.point.auto',\n type: 'boolean',\n translation: 'properties.colors',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n },\n colorMode: {\n ref: 'color.point.mode',\n type: 'string',\n component: 'dropdown',\n options() {\n return [\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n },\n ];\n },\n defaultValue: 'primary',\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n show(data) {\n return (\n !getValue(data, 'color.point.auto', true) &&\n getValue(data, 'color.point.mode', 'primary') === 'primary'\n );\n },\n defaultValue() {\n const color = theme.getDataColorSpecials().primary;\n return lookupColorInPalette(color);\n },\n },\n attributeExpression: {\n type: 'string',\n component: 'expression',\n expressionType: 'measure',\n schemaIgnore: true,\n ref: 'color.point.expression.qValueExpression.qExpr',\n translation: 'Common.Expression',\n show(data) {\n return (\n !getValue(data, 'color.point.auto') && getValue(data, 'color.point.mode') === 'byExpression'\n );\n },\n },\n expressionIsColor: {\n ref: 'color.point.expressionIsColor',\n translation: 'properties.expressionIsColor',\n type: 'boolean',\n defaultValue: true,\n show: false,\n },\n },\n },\n },\n },\n },\n },\n },\n };\n\n const general = {\n items: {\n showDisclaimer: {\n translation: 'properties.showDisclaimer',\n type: 'boolean',\n ref: 'showDisclaimer',\n component: 'switch',\n show() {\n return flags.isEnabled('SHOW_DISCLAIMER');\n },\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Show',\n },\n {\n value: false,\n translation: 'properties.hide',\n },\n ],\n },\n },\n };\n const presentation = {\n type: 'items',\n translation: 'properties.presentation',\n items: {\n styleEditor: stylingPanelEnabled && getStylingPanelDefinition(bkgOptionsEnabled),\n orientation: {\n ref: 'orientation',\n type: 'string',\n component: 'item-selection-list',\n defaultValue: 'horizontal',\n horizontal: true,\n items: [\n {\n component: 'icon-item',\n icon: 'direction_up_down',\n labelPlacement: 'bottom',\n translation: 'properties.orientation.vertical',\n value: 'vertical',\n },\n {\n icon: 'direction_left_right',\n component: 'icon-item',\n labelPlacement: 'bottom',\n translation: 'Common.Horizontal',\n value: 'horizontal',\n },\n ],\n },\n showDistBackground: {\n ref: 'presentation.visibleComponents',\n translation: 'properties.show',\n type: 'string',\n component: 'dropdown',\n defaultValue: 'points_box',\n options: [\n {\n value: 'points_box',\n translation: 'properties.distributionPlot.pointsAndBox',\n },\n {\n value: 'points',\n translation: 'properties.distributionPlot.pointsOnly',\n },\n {\n value: 'box',\n translation: 'properties.distributionPlot.boxOnly',\n },\n ],\n },\n gridLines: {\n type: 'items',\n snapshot: {\n tid: 'property-gridLines',\n },\n items: {\n showGridLines: {\n ref: 'gridlines.auto',\n type: 'boolean',\n translation: 'properties.gridLine.spacing',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n },\n gridSpacing: {\n ref: 'gridlines.spacing',\n type: 'number',\n component: 'dropdown',\n defaultValue: 2,\n options: [\n {\n value: 0,\n translation: 'properties.gridLine.noLines',\n },\n // Gridlines \"wide\" option can be implemented when Picasso supports displaying a\n // gridline every other tick: http://rd-picasso.rdlund.qliktech.com/picasso/master/docs/dist/components/grid-line.html\n // {\n // \tvalue: 1,\n // \ttranslation: \"properties.gridLine.wide\"\n // },\n {\n value: 2,\n translation: 'properties.gridLine.medium',\n },\n {\n value: 3,\n translation: 'properties.gridLine.narrow',\n },\n ],\n show(data) {\n return data.gridlines && !data.gridlines.auto;\n },\n },\n },\n },\n },\n };\n\n presentation.items.bubbleScaleItems = {\n type: 'items',\n items: {\n bubbleScales: {\n type: 'integer',\n component: 'slider',\n ref: 'dataPoint.bubbleScales',\n translation: 'properties.dataPoints.bubbleSizes', // we may need translation for bubbleScales instead\n min: 20,\n max: CONSTANTS.BUBBLE_SCALES_MAX,\n step: 5,\n defaultValue: 100,\n show(data) {\n return data.qHyperCubeDef.qMeasures.length < 2 && data.presentation.visibleComponents !== 'box';\n },\n },\n },\n };\n\n presentation.items.jitter = {\n type: 'string',\n component: 'switch',\n ref: 'dataPoint.displacement',\n translation: 'properties.distributionPlot.jitter',\n defaultValue: 'none',\n options: [\n {\n value: 'none',\n translation: 'properties.off',\n },\n {\n value: 'jitter',\n translation: 'properties.on',\n },\n ],\n show(data) {\n return data.presentation.visibleComponents !== 'box';\n },\n };\n\n // These will be added to the distplot drop-down\n // properties.distributionPlot.min, properties.distributionPlot.max\n\n const measureAxis = {\n uses: 'axis.picasso.measureAxis',\n items: {\n startAt: {\n type: 'string',\n component: 'dropdown',\n translation: 'properties.axis.startAt',\n readOnly: (data) =>\n !data.measureAxis.autoMinMax && !(data.measureAxis.minMax === 'min' && data.measureAxis.min === 0),\n options: [\n {\n value: 'zero',\n translation: 'properties.axis.startAt.zero',\n },\n {\n value: 'lowest',\n translation: 'properties.axis.startAt.lowest',\n },\n ],\n defaultValue: 'lowest',\n convertFunctions: {\n get(getter, definition, args, data) {\n const { autoMinMax, minMax, min } = data?.measureAxis || {};\n if (autoMinMax === true) {\n return 'lowest';\n }\n if (!autoMinMax && minMax === 'min' && min === 0) {\n return 'zero';\n }\n return getter(definition.type);\n },\n set(value, setter, definition, args, data) {\n if (value === 'zero') {\n setValue(data, 'measureAxis.autoMinMax', false);\n setValue(data, 'measureAxis.minMax', 'min');\n setValue(data, 'measureAxis.min', 0);\n } else {\n setValue(data, 'measureAxis.autoMinMax', true);\n }\n },\n },\n classification: {\n section: 'axis',\n tags: ['simple'],\n exclusive: true,\n },\n },\n },\n };\n\n const dimensionAxis = {\n uses: 'axis.picasso.dimensionAxis',\n show(properties, handler) {\n const hasSecondDimension = getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n return hasSecondDimension;\n },\n items: {\n dimensionAxisTitle: {\n component: 'header',\n type: 'string',\n show(properties, handler) {\n return getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n },\n classification: {\n section: 'axis',\n tags: ['simple'],\n exclusive: true,\n },\n },\n othersGroup: {\n items: {\n label: {\n show(properties, handler) {\n return (\n getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1 &&\n getValue(handler.layout, 'orientation') !== 'horizontal'\n );\n },\n options: flags.isEnabled('SENSECLIENT_LAYERED_LABELS')\n ? [\n {\n value: 'auto',\n translation: 'Common.Auto',\n },\n {\n value: 'horizontal',\n translation: 'Common.Horizontal',\n },\n {\n value: 'tilted',\n translation: 'properties.labels.tilted',\n },\n {\n value: 'layered',\n translation: 'properties.labels.layered',\n },\n ]\n : undefined,\n },\n dock: {\n show(properties, handler) {\n return getValue(handler.layout, `${CONSTANTS.HYPERCUBE_PATH}.qDimensionInfo.length`) > 1;\n },\n },\n },\n },\n },\n };\n\n function updateAltLabel(data, byDefRef) {\n const byDef = getValue(data, byDefRef, undefined);\n if (!byDef || typeof byDef.label === 'undefined') {\n return;\n }\n if (byDef.label.charAt(0) === '=') {\n data.color.point.altLabel = {\n qStringExpression: {\n qExpr: byDef.label.substr(1),\n },\n };\n } else {\n data.color.point.altLabel = byDef.label;\n }\n }\n\n const label = (data) => {\n if (getValue(data, 'color.point.auto'))\n return translator.get('Simple.Color.Auto', translator.get('properties.colorMode.primary'));\n return translator.get('Common.Custom');\n };\n\n const colorModeOptions = (data) => {\n const options = [\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n },\n ];\n if (getValue(data, 'color.point.mode') === 'byExpression') {\n options.push({\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n });\n }\n return options;\n };\n\n const getLabel = (data, args) => {\n if (data.color.point.byDimDef?.type === 'libraryItem') {\n const libId = data.color.point.byDimDef?.key ?? '';\n const qDimensionInfo = args.handler.layout.qUndoExclude?.qHyperCube?.qDimensionInfo ?? [];\n for (let i = 0; i < qDimensionInfo.length; i++) {\n const qAttrDimInfo = qDimensionInfo[i].qAttrDimInfo;\n if (qAttrDimInfo) {\n for (let j = 0; j < qAttrDimInfo.length; j++) {\n if (qAttrDimInfo[j].colorMapRef === libId) return qAttrDimInfo[j].qFallbackTitle;\n }\n }\n }\n return '';\n }\n\n return data.color.point.byDimDef?.label ?? '';\n };\n\n const byDimensionOptions = (data, handler, args) => {\n if (data.qHyperCubeDef?.qDimensions?.length) {\n const options = data.qHyperCubeDef?.qDimensions.map((d, index) => ({\n value: index,\n label: translator.get('properties.colorBy.currentDimension', index + 1),\n }));\n if ((data.color?.point?.byDimDef?.activeDimensionIndex ?? -1) < 0) {\n options.push({\n value: -1,\n label: getLabel(data, args),\n });\n }\n return options;\n }\n return [];\n };\n\n const showPointPaletteColor = (data, handler) => {\n const useMeasureBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'measure' && propsLogic.measuresHasBaseColors(handler);\n const useDimensionBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'dimension' && propsLogic.dimensionsHasBaseColors(handler);\n return propsLogic.isColorBySingle(data) && !useMeasureBaseColor && !useDimensionBaseColor;\n };\n\n const showDisclaimer = (data, handler) =>\n !getValue(data, 'color.point.auto', undefined) &&\n getValue(data, 'color.point.mode', undefined) === 'primary' &&\n !showPointPaletteColor(data, handler);\n\n const simpleColors = {\n items: {\n disclaimer: {\n show(data, handler) {\n return flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') ? false : showDisclaimer(data, handler);\n },\n },\n simpleItems: {\n show(data, handler) {\n return flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') ? true : !showDisclaimer(data, handler);\n },\n items: {\n autoColor: {\n ref: 'color.point.auto',\n undefinedValue: false,\n label,\n change: (data) => {\n if (!getValue(data, 'color.point.auto')) {\n setValue(data, 'color.point.mode', 'primary');\n setValue(data, 'color.point.useBaseColors', 'off');\n }\n },\n },\n colorMode: {\n ref: 'color.point.mode',\n options: colorModeOptions,\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n change(data) {\n if (getValue(data, 'color.point.mode', undefined) === 'primary') {\n const useBaseColors = getValue(data, 'color.point.useBaseColors', undefined);\n if (useBaseColors !== undefined && useBaseColors !== 'off') {\n setValue(data, 'color.point.useBaseColors', 'off');\n }\n }\n },\n globalChange() {},\n },\n colorByDimension: {\n ref: 'color.point.byDimDef.activeDimensionIndex',\n options: byDimensionOptions,\n show(data, handler, args) {\n return propsLogic.isColorByDimension(data) && byDimensionOptions(data, handler, args).length > 1;\n },\n change(data) {\n updateAltLabel(data, 'color.point.byDimDef');\n },\n },\n baseColors: {\n type: 'items',\n items: {\n useBaseColor: {\n ref: 'color.point.useBaseColors',\n show(data, handler) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return (\n flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') &&\n !propsLogic.isColorAuto(data) &&\n mode === 'primary' &&\n (propsLogic.measuresHasBaseColors(handler) || propsLogic.dimensionsHasBaseColors(handler))\n );\n },\n },\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n show: showPointPaletteColor,\n },\n // Switch for showing/hiding custom color schemes\n useDimColVal: {\n ref: 'color.point.useDimColVal',\n show(data, handler, args) {\n const activeDimId = data.color.point?.byDimDef?.activeDimensionIndex ?? null;\n const hasValueColors = propsLogic.hasDimValueColors(args.handler, activeDimId);\n return (\n flags.isEnabled('SIMPLE_PROPERTIES_LIBRARY_COLOR') &&\n hasValueColors &&\n propsLogic.isColorByDimension(data) &&\n propsLogic.isDimensionLibraryItem(data)\n );\n },\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n },\n },\n },\n };\n\n const colorsAndLegend = {\n uses: 'colorsAndLegend',\n items: {\n colors: {\n globalChange: propsLogic.onGlobalChangeColors,\n items: {\n autoColor: {\n ref: 'color.point.auto',\n undefinedValue: false,\n },\n colorMode: {\n ref: 'color.point.mode',\n options(data) {\n const options = [];\n options.push({\n value: 'primary',\n translation: 'properties.colorMode.primary',\n });\n options.push({\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n });\n if (getNumDimensions(data) >= 1) {\n options.push({\n value: 'byExpression',\n translation: 'properties.colorMode.byExpression',\n });\n }\n return options;\n },\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n globalChange() /* data, handler */ {}, // overriding with empty func\n },\n colorByDimension: {\n ref: 'color.point.byDimDef',\n show(data) {\n const isColorByDimension = propsLogic.isColorByDimension(data);\n return isColorByDimension;\n },\n change(data) {\n updateAltLabel(data, 'color.point.byDimDef');\n },\n },\n colorByMeasure: {\n ref: 'color.point.byMeasureDef',\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n change(data) {\n updateAltLabel(data, 'color.point.byMeasureDef');\n },\n },\n colorByLabel: {\n ref: 'color.point.altLabel',\n show: propsLogic.showColorByLabel,\n change(data) {\n // Store the custom label in either the dim or the measure (temporary) property. The label is further handled in globalChangeColors()\n const colorMode = getValue(data, 'color.point.mode');\n\n const altLabel = getValue(data, 'color.point.altLabel', '');\n let byDef;\n\n switch (colorMode) {\n case 'byMeasure':\n byDef = data.color.point.byMeasureDef;\n break;\n case 'byDimension':\n byDef = data.color.point.byDimDef;\n break;\n default:\n break;\n }\n\n if (!byDef) {\n return;\n }\n\n byDef.label = altLabel.qStringExpression ? `=${altLabel.qStringExpression.qExpr}` : altLabel;\n },\n },\n baseColors: {\n type: 'items',\n items: {\n useBaseColor: {\n ref: 'color.point.useBaseColors',\n show(data, handler) {\n const mode = getValue(data, 'color.point.mode', 'primary');\n return (\n !propsLogic.isColorAuto(data) &&\n mode === 'primary' &&\n (propsLogic.measuresHasBaseColors(handler) || propsLogic.dimensionsHasBaseColors(handler))\n );\n },\n },\n measureColor: {\n translation: 'properties.libraryColors',\n component: 'measure-color',\n show(data, handler) {\n return (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byMultiple' && // Base color indicator should only be shown when we are in \"Custom\" / \"byMultiple\" mode\n getValue(data, 'color.point.useBaseColors') === 'measure' && // Use base colors must be active\n // && baseColorSupport.isSupported( data.visualization ) // Visualization must support base colors\n handler.layout.qHyperCube.qMeasureInfo.length > 1 && // More than one color must be rendered\n propsLogic.measuresHasBaseColors(handler)\n ); // At least one of the colors must be a base color\n },\n },\n },\n },\n paletteColor: {\n ref: 'color.point.paletteColor',\n translation: 'properties.distributionPlot.pointColor',\n show(data, handler) {\n const useMeasureBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'measure' && propsLogic.measuresHasBaseColors(handler);\n const useDimensionBaseColor =\n getValue(data, 'color.point.useBaseColors') === 'dimension' &&\n propsLogic.dimensionsHasBaseColors(handler);\n return propsLogic.isColorBySingle(data) && !useMeasureBaseColor && !useDimensionBaseColor;\n },\n },\n // Switch for showing/hiding custom color schemes\n useDimColVal: {\n ref: 'color.point.useDimColVal',\n show(data) {\n return propsLogic.isColorByDimension(data) && propsLogic.isDimensionLibraryItem(data);\n },\n },\n useMeasureGradient: {\n ref: 'color.point.useMeasureGradient',\n translation: 'properties.libraryColors',\n type: 'boolean',\n component: 'switch',\n schemaIgnore: true,\n defaultValue: false,\n options: [\n {\n value: true,\n translation: 'properties.on',\n },\n {\n value: false,\n translation: 'properties.off',\n },\n ],\n show(data) {\n const auto = getValue(data, 'color.point.auto');\n const mode = getValue(data, 'color.point.mode');\n return !auto && mode === 'byMeasure' && getValue(data, 'color.point.byMeasureDef.type') === 'libraryItem';\n },\n },\n // // -- Custom color scheme for color by dimensions --\n persistentColors: {\n ref: 'color.point.persistent',\n show(data) {\n if (\n !getValue(data, 'color.point.auto') &&\n getValue(data, 'color.point.mode') === 'byDimension' &&\n getValue(data, 'color.point.byDimDef.type') === 'libraryItem'\n ) {\n return persistentColorsShowFunc(data) && !getValue(data, 'color.point.useDimColVal');\n }\n return persistentColorsShowFunc(data);\n },\n },\n // // -- Color scheme measure\n colorSchemeMeasure: {\n ref: 'color.point.measureScheme',\n show(data) {\n return !propsLogic.isColorAuto(data) && propsLogic.isColorByMeasure(data);\n },\n },\n reverseScheme: {\n ref: 'color.point.reverseScheme',\n change(data) {\n // Also store att data.color.reverseScheme here due to logic connected with the color scheme which would be best left alone (to be continued…).\n data.color.reverseScheme = data.color.point.reverseScheme;\n },\n show(data) {\n return !propsLogic.isColorAuto(data) && propsLogic.isColorByMeasure(data);\n },\n },\n // // -- Color scheme dimension\n colorSchemeDimension: {\n ref: 'color.point.dimensionScheme',\n show(data) {\n const show =\n propsLogic.isColorByDimension(data) &&\n (!propsLogic.isDimensionLibraryItem(data) || !getValue(data, 'color.point.useDimColVal'));\n return show;\n },\n },\n customRange: {\n show(data) {\n return !propsLogic.isColorAuto(data);\n },\n items: {\n autoMinMax: {\n ref: 'color.point.autoMinMax',\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n },\n min: {\n ref: 'color.point.measureMin',\n show(data) {\n return propsLogic.isColorByMeasure(data) && getValue(data, 'color.point.autoMinMax') === false;\n },\n invalid(data) {\n if (getValue(data, 'color.point.minMax') === 'minMax') {\n return getValue(data, 'color.point.measureMin') >= getValue(data, 'color.point.measureMax');\n }\n return false;\n },\n },\n max: {\n ref: 'color.point.measureMax',\n show(data) {\n return propsLogic.isColorByMeasure(data) && getValue(data, 'color.point.autoMinMax') === false;\n },\n invalid(data) {\n if (getValue(data, 'color.point.minMax') === 'minMax') {\n return getValue(data, 'color.point.measureMin') >= getValue(data, 'color.point.measureMax');\n }\n return false;\n },\n },\n },\n },\n attributeExpression: {\n ref: 'color.point.expression.qValueExpression.qExpr',\n show(data) {\n return propsLogic.isColorByExpression(data);\n },\n },\n expressionIsColor: {\n ref: 'color.point.expressionIsColor',\n show: false,\n },\n boxColor: {\n ref: 'color.box.paletteColor',\n translation: 'properties.distributionPlot.boxColor',\n type: 'object',\n component: 'color-picker',\n dualOutput: true,\n defaultValue() {\n const color = theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill');\n return lookupColorInPalette(color);\n },\n show(data) {\n return !getValue(data, 'color.point.auto', true);\n },\n },\n },\n },\n simpleColors,\n legend: {\n show: propsLogic.showLegend,\n type: 'items',\n items: {\n show: {\n // ref: \"legend.show\",\n snapshot: {\n tid: 'property-legend',\n },\n },\n dock: {\n // ref: \"legend.dock\",\n show(data) {\n const show = propsLogic.showLegend(data) && getValue(data, 'legend.show', true);\n return show;\n },\n },\n showTitle: {\n // ref: \"legend.showTitle\",\n show(data) {\n const show = propsLogic.showLegend(data) && getValue(data, 'legend.show', true);\n return show;\n },\n },\n },\n },\n },\n };\n\n const simpleLabels = {\n items: {\n labels: {\n items: {\n header: {\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length && props.qHyperCubeDef.qMeasures?.length;\n },\n },\n dimensionTitle: {\n component: 'checkbox',\n ref: 'dimensionAxis.show',\n type: 'string',\n translation: 'Simple.Label.Dimension.Hide',\n defaultValue: 'all',\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length > 1 && props.qHyperCubeDef.qMeasures?.length;\n },\n convertFunctions: {\n get(getter, def, args, data) {\n return data.dimensionAxis.show === 'labels' || data.dimensionAxis.show === 'none';\n },\n set(value, setter, def, args, data) {\n data.dimensionAxis.show = value ? 'labels' : 'all';\n },\n },\n },\n measureTitle: {\n component: 'checkbox',\n ref: 'measureAxis.show',\n type: 'string',\n translation: 'Simple.Label.Measure.Hide',\n defaultValue: 'all',\n show(props) {\n return props.qHyperCubeDef.qDimensions?.length && props.qHyperCubeDef.qMeasures?.length;\n },\n convertFunctions: {\n get(getter, def, args, data) {\n return data.measureAxis.show === 'labels' || data.measureAxis.show === 'none';\n },\n set(value, setter, def, args, data) {\n data.measureAxis.show = value ? 'labels' : 'all';\n },\n },\n },\n },\n },\n },\n };\n\n const settings = {\n uses: 'settings',\n items: {\n simpleLabels,\n general,\n presentation,\n colors: colorsAndLegend || colors,\n measureAxis,\n dimensionAxis,\n },\n };\n\n const addons = {\n type: 'items',\n component: 'expandable-items',\n translation: 'properties.addons',\n items: {\n dataHandling: {\n uses: 'dataHandling',\n items: {\n calcCond: {\n uses: 'calcCond',\n change: propsLogic.onChangeCalcCond,\n },\n },\n },\n refLines: {\n uses: 'reflines',\n items: {\n colorBackground: {\n show: false,\n },\n },\n },\n },\n };\n\n const defaultExpressionItem = sortOrderBuilder.expression(`${CONSTANTS.SORT_CRITERIA}.sortByExpression`);\n const expressionItem = {\n type: 'items',\n items: {\n toggled: defaultExpressionItem.items.toggled,\n sortByElement: {\n component: 'sort-by-element',\n expressionRef: CONSTANTS.SORTING_EXPRESSION,\n elementRef: CONSTANTS.SORTING_ELEMENT_ID,\n show: distplotUtils.isSortByExpression,\n elements(args) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(\n args.properties.qHyperCubeDef,\n args.layout.qHyperCube,\n args.model.app\n ).then((expressions) => {\n const settings = settingsRetriever.getSettings(args.layout);\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n });\n },\n },\n order: defaultExpressionItem.items.order,\n },\n };\n\n const sorting = {\n type: 'items',\n translation: 'properties.sorting',\n schemaIgnore: true,\n grouped: false,\n globalChange(data, handler, args) {\n if (args) {\n expressionSortOrderer.updateSortOrder(data, args.prevProperties);\n }\n },\n items: {\n autoSort: {\n ref: CONSTANTS.AUTO_SORT,\n type: 'boolean',\n translation: 'properties.sorting',\n component: 'switch',\n defaultValue: true,\n options: [\n {\n value: true,\n translation: 'Common.Auto',\n },\n {\n value: false,\n translation: 'Common.Custom',\n },\n ],\n show: distplotUtils.hasMultipleDimensions,\n change(data, handler, properties, args) {\n if (data && distplotUtils.hasMultipleDimensions(data) && handler.layout) {\n return distplotSorter.applySorting(data, handler.layout, args.model.app, null, translator);\n }\n return undefined;\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n },\n reset(data) {\n data.sorting = { autoSort: true };\n },\n },\n simpleSorting: {\n component: 'sorting-with-elements',\n expressionRef: CONSTANTS.SORTING_EXPRESSION,\n elementRef: CONSTANTS.SORTING_ELEMENT_ID,\n sortCriteriasRef: CONSTANTS.SORT_CRITERIA,\n show(properties) {\n return distplotUtils.hasMultipleDimensions(properties) && !distplotUtils.isAutoSort(properties);\n },\n elements(args) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(\n args.handler.properties.qHyperCubeDef,\n args.handler.layout.qHyperCube,\n args.model.app\n ).then((expressions) => {\n const settings = settingsRetriever.getSettings(args.layout);\n\n return elementsRetriever.getElements(expressions.measures, expressions.dimensions, settings, translator);\n });\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n exclusive: true,\n },\n },\n sortingItems: {\n type: 'items',\n grouped: true,\n show(properties) {\n return distplotUtils.hasMultipleDimensions(properties) && !distplotUtils.isAutoSort(properties);\n },\n items: {\n expression: expressionItem,\n numeric: sortOrderBuilder.numeric(`${CONSTANTS.SORT_CRITERIA}.sortByNumeric`),\n ascii: sortOrderBuilder.ascii(`${CONSTANTS.SORT_CRITERIA}.sortByAscii`),\n\n defaultSortMessage: {\n component: 'text',\n translation: 'properties.sorting.defaultSortingMessage',\n show(properties) {\n return (\n !distplotUtils.isSortByExpression(properties) &&\n !distplotUtils.isSortByNumeric(properties) &&\n !distplotUtils.isSortByAscii(properties)\n );\n },\n },\n },\n },\n noData: {\n component: 'text',\n translation: 'Common.NoData',\n style: 'hint',\n show(properties) {\n return !distplotUtils.hasMultipleDimensions(properties);\n },\n classification: {\n section: 'sorting',\n tags: ['simple'],\n },\n },\n },\n };\n\n const dimensions = {\n uses: 'dimensions',\n };\n\n const measures = {\n uses: 'measures',\n };\n\n const data = {\n uses: 'data',\n grouped: true,\n items: {\n dimensions,\n measures,\n },\n };\n\n return {\n type: 'items',\n component: 'accordion',\n items: {\n data,\n sorting,\n addons,\n settings,\n },\n };\n}\n","import { getValue } from 'qlik-chart-modules';\n\nconst explorePropertiesSortingDefinitionBuilder = {\n buildDefinition,\n};\n\nexport default explorePropertiesSortingDefinitionBuilder;\n\nfunction buildDefinition(baseHyperCubeDefPath, chartSortingPath, sortedDimensionPath, getSettingsFn, getElementIdsFn) {\n const dimensionSortCriteriaPath = `${sortedDimensionPath}.qDef.qSortCriterias.0.`;\n\n const sortingDefinition = {\n type: 'items',\n translation: 'properties.sorting',\n icon: 'ascending',\n show(data) {\n return getValue(data, `${baseHyperCubeDefPath}.qDimensions.length`, 0) > 1;\n },\n items: {\n sortingOptions: {\n component: 'radio-list',\n type: 'number',\n diffs: [\n `${dimensionSortCriteriaPath}qSortByExpression`,\n `${dimensionSortCriteriaPath}qSortByNumeric`,\n `${dimensionSortCriteriaPath}qSortByAscii`,\n ],\n options: [\n {\n value: 1,\n translation: 'properties.sorting.ascending',\n },\n {\n value: -1,\n translation: 'properties.sorting.descending',\n },\n ],\n setPropertyValue(properties, value, args) {\n const layout = args.layout;\n let currentChartSortProperty = getCurrentSortPropertyInfo(properties, dimensionSortCriteriaPath).chart;\n\n if (!currentChartSortProperty) {\n currentChartSortProperty = 'sortByAscii';\n }\n\n const chartSorting = getValue(properties, chartSortingPath);\n\n if (!chartSorting.sortCriteria) {\n chartSorting.sortCriteria = {};\n }\n\n if (chartSorting.autoSort) {\n const settings = getSettingsFn(layout);\n\n if (settings.ELEMENT) {\n chartSorting.elementId = settings.ELEMENT;\n } else {\n const elementIds = getElementIdsFn(properties, layout);\n\n chartSorting.elementId = elementIds[0];\n }\n }\n\n chartSorting.autoSort = false;\n\n cleanChartSorting(chartSorting, currentChartSortProperty);\n\n chartSorting.sortCriteria[currentChartSortProperty] = value;\n },\n getValue(data) {\n const currentDimensionSortProperty = getCurrentSortPropertyInfo(data, dimensionSortCriteriaPath).dimension;\n\n if (!currentDimensionSortProperty) {\n return 0;\n }\n\n return getValue(data, dimensionSortCriteriaPath + currentDimensionSortProperty);\n },\n },\n },\n };\n\n return sortingDefinition;\n}\n\nfunction getCurrentSortPropertyInfo(data, dimensionSortCriteriaPath) {\n const currentSortPropertyInfo = {\n chart: '',\n dimension: '',\n };\n\n if (getValue(data, `${dimensionSortCriteriaPath}qSortByExpression`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByExpression';\n currentSortPropertyInfo.dimension = 'qSortByExpression';\n } else if (getValue(data, `${dimensionSortCriteriaPath}qSortByNumeric`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByNumeric';\n currentSortPropertyInfo.dimension = 'qSortByNumeric';\n } else if (getValue(data, `${dimensionSortCriteriaPath}qSortByAscii`, 0) !== 0) {\n currentSortPropertyInfo.chart = 'sortByAscii';\n currentSortPropertyInfo.dimension = 'qSortByAscii';\n }\n\n return currentSortPropertyInfo;\n}\n\nfunction cleanChartSorting(chartSorting, currentChartSortProperty) {\n const sortCriteria = chartSorting.sortCriteria;\n\n if (currentChartSortProperty === 'sortByNumeric' || currentChartSortProperty === 'sortByAscii') {\n sortCriteria.sortByExpression = 0;\n }\n\n if (currentChartSortProperty === 'sortByAscii') {\n sortCriteria.sortByNumeric = 0;\n }\n}\n","import extend from 'extend';\nimport sortingDefinitionBuilder from '@qlik/common/picasso/sorting/base-derived/explore-properties-sorting-definition-builder';\nimport settingsRetriever from './sorting/distributionplot-sorting-settings-retriever';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\nimport propsLogic from './distributionplot-properties-logic';\n\nconst sorting = sortingDefinitionBuilder.buildDefinition(\n 'qHyperCubeDef',\n 'sorting',\n 'qUndoExclude.qHyperCubeDef.qDimensions.0',\n settingsRetriever.getSettings,\n elementsRetriever.getElementIds\n);\n\nconst settings = {\n type: 'items',\n component: 'accordion',\n items: {\n data: {\n uses: 'data',\n },\n sorting,\n presentation: {\n uses: 'presentation',\n items: {\n orientation: {\n ref: 'orientation',\n type: 'string',\n component: 'item-selection-list',\n horizontal: true,\n items: [\n {\n component: 'icon-item',\n icon: 'direction_up_down',\n labelPlacement: 'bottom',\n translation: 'properties.orientation.vertical',\n value: 'vertical',\n },\n {\n icon: 'direction_left_right',\n component: 'icon-item',\n labelPlacement: 'bottom',\n translation: 'Common.Horizontal',\n value: 'horizontal',\n },\n ],\n },\n bubbleScales: {\n type: 'integer',\n component: 'slider',\n ref: 'dataPoint.bubbleScales',\n translation: 'properties.dataPoints.bubbleSizes', // we may need translation for bubbleScales instead\n min: 20,\n max: 100,\n step: 5,\n defaultValue: 100,\n show(data) {\n return data.qHyperCubeDef.qMeasures.length < 2 && data.presentation.visibleComponents !== 'box';\n },\n },\n jitter: {\n type: 'string',\n component: 'switch',\n ref: 'dataPoint.displacement',\n translation: 'properties.distributionPlot.jitter',\n defaultValue: 'none',\n options: [\n {\n value: 'none',\n translation: 'properties.off',\n },\n {\n value: 'jitter',\n translation: 'properties.on',\n },\n ],\n show(data) {\n return data.presentation.visibleComponents !== 'box';\n },\n },\n },\n },\n },\n};\n// Add color by features\nconst color = {\n items: {\n color: {\n uses: 'color',\n items: {\n mode: {\n options: [\n {\n value: 'auto',\n translation: 'Common.Auto',\n },\n {\n value: 'primary',\n translation: 'properties.colorMode.primary',\n },\n {\n value: 'byDimension',\n translation: 'properties.colorMode.byDimension',\n },\n ],\n diffs: ['color.point.mode', 'color.point.auto'],\n setPropertyValue(data, v) {\n if (v === 'auto') {\n data.color.point.auto = true;\n } else {\n data.color.point.auto = false;\n data.color.point.mode = v;\n }\n },\n getValue(data) {\n return propsLogic.isColorAuto(data) ? 'auto' : data.color.point.mode;\n },\n },\n dimension: {\n show(data) {\n return propsLogic.isColorByDimension(data);\n },\n items: {\n colorScheme: {\n ref: 'color.point.dimensionScheme',\n },\n persistentColors: {\n ref: 'color.point.persistent',\n },\n },\n },\n measure: {\n show(data) {\n return propsLogic.isColorByMeasure(data);\n },\n items: {\n sequential: {\n ref: 'color.point.measureScheme',\n },\n },\n },\n legend: {\n show: propsLogic.showLegend,\n },\n },\n },\n },\n};\nextend(true, settings, color);\nexport default settings;\n","import pp from './distributionplot-properties';\nimport softDefinition from './distributionplot-explore-properties';\nimport propsLogic from './distributionplot-properties-logic';\nimport data from './distributionplot-data';\nimport { importProperties, exportProperties } from './distributionplot-import-export';\n\nexport default function ext(env) {\n if (!env.anything?.sense) {\n return undefined;\n }\n\n return {\n definition: pp(env),\n softDefinition,\n support: {\n cssScaling: false,\n snapshot: true,\n export: true,\n exportData: true,\n sharing: true,\n viewData: true,\n },\n options: {\n usingDerivedProperties: true,\n colorByPath: 'color.point',\n },\n onSoftPropertyChange(prevProperties, nextProperties) {\n propsLogic.onGlobalChangeColors(nextProperties);\n },\n importProperties: (exportFormat, initialProperties, extension) => {\n const dataDefinition = data(env);\n extension.mapProperties();\n const defaultPropertyValues = {\n defaultDimension: extension.getDefaultDimensionProperties(),\n defaultMeasure: extension.getDefaultMeasureProperties(),\n };\n return importProperties({\n dataDefinition,\n defaultPropertyValues,\n exportFormat,\n initialProperties,\n });\n },\n exportProperties(propertyTree, hyperCubePath, viewDataMode) {\n return exportProperties({ propertyTree, viewDataMode });\n },\n };\n}\n","// private\nconst idGen = {\n getChar(value) {\n // 0 o O i I l\n const banned = [48, 111, 79, 105, 73, 108];\n let val = value;\n\n let charCode;\n if (val > 9) {\n charCode = 65 + val - 10;\n if (charCode > 90) {\n charCode += 6;\n }\n } else {\n val = `${val}`.charCodeAt(0);\n }\n return banned.indexOf(charCode) > -1 ? this.getChar(val + 1) : String.fromCharCode(charCode);\n },\n base62(value) {\n const chr = this.getChar(value % 62);\n const y = Math.floor(value / 62);\n return y > 0 ? this.base62(y) + chr : chr;\n },\n id() {\n const s = this.base62(Math.round(Math.random() * (1e13 - 1e11) + 1e11));\n return s.replace(/\\W/g, '');\n },\n};\n\nexport default function generateId() {\n return idGen.id();\n}\n","const SCROLLBAR_KEY = 'scrollbar';\n\nfunction getActions(isEnabledFn) {\n function targetIsScrollbar(manager, e) {\n if (!e || !isEnabledFn()) {\n return false;\n }\n const startPoint = {\n x: e.center.x - e.deltaX,\n y: e.center.y - e.deltaY,\n };\n const components = this.chart.componentsFromPoint(startPoint);\n return components.some((c) => c.settings.key === SCROLLBAR_KEY);\n }\n\n const tap = {\n // single tap\n type: 'Tap',\n options: {\n enable: targetIsScrollbar,\n },\n events: {\n tap(e) {\n this.chart.component(SCROLLBAR_KEY).emit('tap', e);\n },\n },\n };\n\n const pan = {\n type: 'Pan',\n options: {\n enable: targetIsScrollbar,\n },\n events: {\n panstart(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panStart', e);\n },\n pan(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panMove', e);\n },\n panend(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panEnd', e);\n },\n pancancel(e) {\n this.chart.component(SCROLLBAR_KEY).emit('panCancel', e);\n },\n },\n };\n\n const actions = [tap, pan];\n return actions;\n}\n\nexport default getActions;\n","function getAxisDock(direction, dock, isRtl) {\n return direction === 'y' ? getYAxisDock(dock, isRtl) : getXAxisDock(dock);\n}\n\nfunction getOppositeAxisDock(direction, dock, isRtl) {\n const oppositeDock = dock === 'far' ? 'near' : 'far';\n return getAxisDock(direction, oppositeDock, isRtl);\n}\n\nfunction getYAxisDock(dock, isRtl) {\n const yDockNearFar = dock || 'near';\n return (isRtl && yDockNearFar === 'near') || (!isRtl && yDockNearFar === 'far') ? 'right' : 'left';\n}\n\nfunction getXAxisDock(dock) {\n return dock === 'far' ? 'top' : 'bottom';\n}\n\nexport default {\n getAxisDock,\n getOppositeAxisDock,\n getYAxisDock,\n};\n","// Source: https://en.wikipedia.org/wiki/Bi-directional_text and http://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt\n// 3 types of strong direction characters: L (strong left-to-right), R(strong right-to-left, Hebrew) and AL(strong right-to-left, Arabic language)\nconst rangesOfLChars =\n '[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u037D\\u0386\\u0388-\\u03F5\\u03F7-\\u0482\\u048A-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u097F\\u0982-\\u09B9\\u09BD-\\u09C0\\u09C7-\\u09CC\\u09CE-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u0A03-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A6F\\u0A72-\\u0A74\\u0A83-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9-\\u0ACC\\u0AD0-\\u0AE1\\u0AE6-\\u0AEF\\u0B02-\\u0B39\\u0B3D-\\u0B3E\\u0B40\\u0B47-\\u0B4C\\u0B57-\\u0B61\\u0B66-\\u0B77\\u0B83-\\u0BBF\\u0BC1-\\u0BCC\\u0BD0-\\u0BF2\\u0C01-\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C61\\u0C66-\\u0C6F\\u0C7F-\\u0CB9\\u0CBD-\\u0CCB\\u0CD5-\\u0CE1\\u0CE6-\\u0D40\\u0D46-\\u0D4C\\u0D4E-\\u0D61\\u0D66-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD-\\u0EC6\\u0ED0-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083-\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u135A\\u1360-\\u138F\\u13A0-\\u13F4\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u1711\\u1720-\\u1731\\u1735-\\u1751\\u1760-\\u1770\\u1780-\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u18A8\\u18AA-\\u191C\\u1923-\\u1926\\u1929-\\u1931\\u1933-\\u1938\\u1946-\\u19DA\\u1A00-\\u1A16\\u1A19-\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B6A\\u1B74-\\u1B7C\\u1B82-\\u1BA1\\u1BA6-\\u1BA7\\u1BAA-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1C2B\\u1C34-\\u1C35\\u1C3B-\\u1C7F\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1DBF\\u1E00-\\u1FBC\\u1FBE\\u1FC2-\\u1FCC\\u1FD0-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E-\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2D00-\\u2D70\\u2D80-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u31BA\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA66E\\uA680-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA925\\uA92E-\\uA946\\uA952-\\uA97C\\uA983-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEC\\uABF0-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFDC]';\nconst rangesOfRChars =\n '[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u07C0-\\u07EA\\u07F4-\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB4F]';\nconst rangesOfALChars =\n '[\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u070D\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\uFB50-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]';\n// eslint-disable-next-line no-misleading-character-class\nconst rangesOfLRgExp = new RegExp(rangesOfLChars);\nconst rangesOfRRgExp = new RegExp(rangesOfRChars);\nconst rangesOfALRgExp = new RegExp(rangesOfALChars);\n\nconst // left-to-right marker\n lrm = String.fromCharCode(8206); // right-to-left marker\n\nconst rlm = String.fromCharCode(8207);\n\nfunction isLtrChar(c) {\n return rangesOfLRgExp.test(c);\n}\n\nfunction isRtlChar(c) {\n return rangesOfRRgExp.test(c) || rangesOfALRgExp.test(c);\n}\n\nfunction detectTextDirection(s) {\n const n = s ? s.length : 0;\n let i;\n let c;\n for (i = 0; i < n; i++) {\n c = s[i];\n if (isLtrChar(c)) {\n return 'ltr';\n }\n if (isRtlChar(c)) {\n return 'rtl';\n }\n }\n return 'ltr';\n}\n\nexport default {\n lrm,\n rlm,\n detectTextDirection,\n};\n","import extend from 'extend';\nimport RtlUtil from '../../../../extra/rtl-util';\n\n/**\n * Get Picasso settings for an individual ref-line.\n *\n * @param {*} settings Default settings for the ref-line\n * @param {*} lineColorIndex Chart builder options + paletteColor option\n */\nfunction lineSettings(settings, options) {\n const lineStroke =\n typeof options.paletteColor !== 'undefined'\n ? options.theme.getColorPickerColor(options.paletteColor)\n : 'transparent';\n const defaultSettings = {\n value: 0,\n line: {\n stroke: lineStroke,\n strokeDasharray: options?.style?.lineType,\n },\n };\n return extend(true, defaultSettings, settings || {});\n}\n\n/**\n * Get Picasso settings for an individual ref-line used to display label and OOB.\n *\n * @param {*} settings Default settings for the ref-line label\n * @param {*} options Chart builder options + paletteColor option\n */\nfunction lineLabelSettings(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n let labelColor = options.theme.getStyle(chartID, 'referenceLine.label.name', 'color');\n const labelFontSize = options.theme.getStyle(chartID, 'referenceLine.label.name', 'fontSize');\n const labelFontFamily = options.theme.getStyle(chartID, 'referenceLine.label.name', 'fontFamily');\n\n if (options.paletteColor) {\n labelColor = options.theme.getColorPickerColor(options.paletteColor);\n } else if (!labelColor) {\n labelColor = 'transparent';\n }\n\n const defaultSettings = {\n value: 0,\n line: {\n stroke: 'transparent',\n },\n label: {\n align: 'center',\n vAlign: 'middle',\n text: '',\n fill: labelColor,\n fontFamily: labelFontFamily,\n fontSize: labelFontSize,\n maxWidthPx: 135,\n },\n };\n return extend(true, defaultSettings, settings || {});\n}\n\nconst isVisible = (refLine) =>\n refLine && refLine.show !== false && refLine.show !== 0 && refLine.show !== '0' && refLine.refLineExpr !== undefined;\n\nfunction getRefLineTitle({ refLine, label, valueString }) {\n if (refLine.showValue !== false) {\n if (refLine.showLabel !== false) {\n return `${label} ${RtlUtil.lrm}(${valueString})${RtlUtil.lrm}`;\n }\n return `${RtlUtil.lrm}(${valueString})${RtlUtil.lrm}`;\n }\n if (refLine.showLabel !== false) {\n return label;\n }\n return '';\n}\n\nexport default {\n lineSettings,\n lineLabelSettings,\n isVisible,\n getRefLineTitle,\n};\n","import DimensionMeasureChartLayoutSettings from './layout-settings';\n\nconst constants = {\n SHOW_AXIS_LABELS_OPTIONS: ['all', 'labels'], // show dim/measure axis labels when it matches one of this values\n SHOW_TITLE_OPTIONS: ['all', 'title'], // show the dimension/measure title when the show option matches one of these values\n HORIZONTAL: 'horizontal',\n VERTICAL: 'vertical',\n LAYOUTSETTINGS: DimensionMeasureChartLayoutSettings,\n};\n\nconstants.DEFAULT_CHART_ORIENTATION = constants.HORIZONTAL;\n\nexport default constants;\n","export default {\n lasso: {\n displayOrder: 10000,\n },\n rangeDim: {\n displayOrder: 10000,\n },\n rangeMeasure: {\n displayOrder: 10000,\n },\n rangeMinor: {\n displayOrder: 10000,\n },\n\n // SPARK\n scrollBar: {\n minimumLayoutMode: 'SPARK',\n prioOrder: -1,\n displayOrder: 100,\n },\n\n refLines: {\n minimumLayoutMode: 'SPARK',\n prioOrder: 60,\n displayOrder: -10,\n },\n\n // XMALL\n measureAxisTitle: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 30,\n displayOrder: 90,\n },\n dimensionAxisTitle: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 30,\n displayOrder: 90,\n },\n\n measureAxis: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 10,\n displayOrder: 80,\n },\n dimensionAxis: {\n minimumLayoutMode: 'XSMALL',\n prioOrder: 10,\n displayOrder: 80,\n },\n\n gridLines: {\n minimumLayoutMode: 'XSMALL',\n displayOrder: -100,\n },\n\n // SMALL\n refLinesLabels: {\n minimumLayoutMode: 'SMALL',\n prioOrder: 60,\n displayOrder: 0,\n },\n};\n","import extend from 'extend';\nimport generateId from '../../../../extra/generate-id';\nimport getScrollActions from '../../../scroll/scroll-actions';\nimport axisDockUtil from '../../components/util/axis-dock-util';\nimport refLineUtil from '../../components/util/ref-line-util';\nimport CONSTANTS from './constants';\n\nconst SENSE_PICASSO_SPACING_COEFFICIENT = 100;\n\nfunction DimensionMeasureChart(chartBuilder, opts) {\n const options = opts || {};\n\n const measureAxisProperties = options.measureAxisProperties || {};\n const dimensionAxisProperties = options.dimensionAxisProperties || {};\n const chartOrientation = options.orientation || CONSTANTS.DEFAULT_CHART_ORIENTATION;\n const isChartHorizontal = chartOrientation === CONSTANTS.HORIZONTAL;\n const measureDirection = isChartHorizontal ? 'x' : 'y';\n const dimensionDirection = isChartHorizontal ? 'y' : 'x';\n const SHOW_AXIS_LABELS_OPTIONS = CONSTANTS.SHOW_AXIS_LABELS_OPTIONS;\n const SHOW_TITLE_OPTIONS = CONSTANTS.SHOW_TITLE_OPTIONS;\n const includeMeasureAxisComponent = SHOW_AXIS_LABELS_OPTIONS.includes(measureAxisProperties.show);\n const includeMeasureAxisTitleComponent =\n !!options.measureTitleText && SHOW_TITLE_OPTIONS.includes(measureAxisProperties.show);\n const includeDimensionAxisComponent =\n options.includeDimensionAxis && SHOW_AXIS_LABELS_OPTIONS.includes(dimensionAxisProperties.show);\n const includeDimensionAxisTitleComponent =\n options.includeDimensionAxis &&\n !!options.dimensionTitleText &&\n SHOW_TITLE_OPTIONS.includes(dimensionAxisProperties.show);\n const includeGridlines = options.gridlines && !(!options.gridlines.auto && options.gridlines.spacing === 0);\n\n const includeRefLines = options.refLines && options.refLines.some((refLine) => refLine.show);\n\n const interactionActions = [];\n\n if (includeMeasureAxisComponent) {\n addMeasureAxisComponent(chartBuilder, options, measureDirection, measureAxisProperties);\n }\n\n if (includeMeasureAxisTitleComponent) {\n addMeasureAxisTitleComponent(chartBuilder, options, measureDirection);\n }\n\n addMeasureScale(chartBuilder, options, chartOrientation, measureAxisProperties);\n\n if (includeDimensionAxisComponent) {\n addDimensionAxisComponent(chartBuilder, options, dimensionDirection);\n }\n\n if (includeDimensionAxisTitleComponent) {\n addDimensionAxisTitleComponent(chartBuilder, options, dimensionDirection);\n }\n\n if (options.includeDimensionAxis) {\n addDimensionScale(chartBuilder, options, chartOrientation);\n }\n\n if (includeGridlines) {\n addGridlinesComponent(chartBuilder, options.gridlines, measureDirection);\n }\n\n if (options.hasNavigation) {\n addScrollbarComponent(chartBuilder, interactionActions, options, isChartHorizontal);\n }\n\n if (includeRefLines) {\n addRefLineComponent(chartBuilder, options, measureDirection, measureAxisProperties);\n }\n\n if (options.enableLasso && options.selectionsEnabled) {\n const lassoOptions = options.lasso || {};\n addLassoComponent(chartBuilder, lassoOptions);\n }\n\n if (options.enableDimRange && options.includeDimensionAxis && options.selectionsEnabled) {\n const rangeDimOptions = options.dimRange || {};\n const dimensionAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n addRangeDimComponent(chartBuilder, rangeDimOptions, isChartHorizontal, dimensionAxisOptions.dock, options.isRtl);\n }\n\n if (options.enableMeasureRange && options.selectionsEnabled) {\n const rangeMeasureOptions = options.measureRange || {};\n const measureAxisOptions = getMeasureAxisOptions(options, measureDirection);\n addRangeMeasureComponent(\n chartBuilder,\n rangeMeasureOptions,\n isChartHorizontal,\n measureAxisOptions.dock,\n options.isRtl\n );\n }\n\n if (options.enableAreaRange && options.selectionsEnabled) {\n const areaDimOptions = options.areaRange || {};\n const dimAreaAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n addRangeAreaComponent(chartBuilder, areaDimOptions, isChartHorizontal, dimAreaAxisOptions.dock, options.isRtl);\n }\n\n if (options.brushActions) {\n addInteractionActions(interactionActions, options.brushActions);\n }\n\n if (interactionActions.length) {\n addInteractionComponent(chartBuilder, interactionActions);\n }\n}\n\nexport default DimensionMeasureChart;\n\nfunction addInteractionComponent(chartBuilder, interactionActions) {\n return chartBuilder.addInteraction({}, { gestures: interactionActions });\n}\n\nfunction addInteractionActions(interactionActions, actions) {\n actions.forEach((a) => {\n interactionActions.push(a);\n });\n}\n\nfunction addMeasureScale(chartBuilder, options, chartOrientation, measureAxisProperties) {\n let measureScaleSettings = options.measureScaleSettings;\n\n const measureScaleOptions = {\n isRtl: options.isRtl,\n source: options.measureSource,\n orientation: chartOrientation,\n measureAxisProperties,\n };\n\n if (measureAxisProperties && measureAxisProperties.spacing > 0) {\n measureScaleSettings = extend(true, measureScaleSettings || {}, {\n component: {\n ticks: {\n distance: measureAxisProperties.spacing * SENSE_PICASSO_SPACING_COEFFICIENT,\n },\n },\n });\n }\n\n chartBuilder.addScale('measure-scale', measureScaleSettings, measureScaleOptions);\n}\n\nfunction addMeasureAxisComponent(chartBuilder, options, measureDirection, measureAxisProperties) {\n let measureAxisSettings = {\n scale: 'measure',\n forceBounds: measureAxisProperties && !measureAxisProperties.autoMinMax && measureAxisProperties.showBounds,\n };\n measureAxisSettings = extend(measureAxisSettings, CONSTANTS.LAYOUTSETTINGS.measureAxis);\n\n const measureAxisOptions = getMeasureAxisOptions(options, measureDirection);\n\n chartBuilder.addComponent(`${measureDirection}-axis`, measureAxisSettings, measureAxisOptions);\n}\n\nfunction addMeasureAxisTitleComponent(chartBuilder, options, measureDirection) {\n let measureTitleSettings = {\n text: options.measureTitleText,\n };\n measureTitleSettings = extend(measureTitleSettings, CONSTANTS.LAYOUTSETTINGS.measureAxisTitle);\n\n const measureAxisOptions = getMeasureAxisTitleOptions(options, measureDirection);\n\n chartBuilder.addComponent(`${measureDirection}-axis-title`, measureTitleSettings, measureAxisOptions);\n}\n\nfunction addDimensionScale(chartBuilder, options, chartOrientation) {\n const dimensionScaleOptions = {\n isRtl: options.isRtl,\n source: options.dimensionSource,\n orientation: chartOrientation === CONSTANTS.HORIZONTAL ? CONSTANTS.VERTICAL : CONSTANTS.HORIZONTAL,\n };\n\n chartBuilder.addScale('dimension-scale', options.dimensionScaleSettings, dimensionScaleOptions);\n}\n\nfunction addDimensionAxisComponent(chartBuilder, options, dimensionDirection) {\n let dimensionAxisSettings = {\n scale: 'dimension',\n };\n dimensionAxisSettings = extend(dimensionAxisSettings, CONSTANTS.LAYOUTSETTINGS.dimensionAxis);\n\n const dimensionAxisOptions = getDimensionAxisOptions(options, dimensionDirection);\n\n extend(true, dimensionAxisSettings, options.dimensionAxisSettings || {});\n\n chartBuilder.addComponent(`${dimensionDirection}-axis`, dimensionAxisSettings, dimensionAxisOptions);\n}\n\nfunction addDimensionAxisTitleComponent(chartBuilder, options, dimensionDirection) {\n let dimensionAxisTitleSettings = {\n text: options.dimensionTitleText,\n };\n dimensionAxisTitleSettings = extend(dimensionAxisTitleSettings, CONSTANTS.LAYOUTSETTINGS.dimensionAxisTitle);\n\n const dimensionAxisTitleOptions = getDimensionAxisTitleOptions(options, dimensionDirection);\n\n chartBuilder.addComponent(`${dimensionDirection}-axis-title`, dimensionAxisTitleSettings, dimensionAxisTitleOptions);\n}\n\nfunction addGridlinesComponent(chartBuilder, gridlinesOptions, measureDirection) {\n let gridlinesSettings = {\n ticks: {\n show: true,\n },\n minorTicks: {\n show: !gridlinesOptions.auto && !gridlinesOptions.auto && gridlinesOptions.spacing === 3,\n },\n };\n gridlinesSettings = extend(gridlinesSettings, CONSTANTS.LAYOUTSETTINGS.gridLines);\n\n gridlinesSettings[measureDirection] = { scale: 'measure' };\n\n chartBuilder.addComponent('grid-line', gridlinesSettings);\n}\n\nfunction addScrollbarComponent(chartBuilder, interactionActions, options, isChartHorizontal) {\n const settings = chartBuilder.getSettings();\n\n settings.scroll = {\n dimension: {\n viewSize: (options.scrollSettings && options.scrollSettings.viewSize) || 0,\n max: (options.scrollSettings && options.scrollSettings.max) || 0,\n },\n };\n\n const scrollbarOptions = {\n isRtl: options.isRtl,\n chartID: options.chartID,\n isHorizontal: !isChartHorizontal,\n };\n\n const scrollBarSettings = extend({}, CONSTANTS.LAYOUTSETTINGS.scrollBar);\n\n chartBuilder.addComponent('scrollbar', scrollBarSettings, scrollbarOptions);\n\n addInteractionActions(interactionActions, getScrollActions(options.isNavigationEnabledFn));\n}\n\n/*\n * Add \"ref-line\" component(s). Currently two \"ref-line\" components are used to reserve space for labels and\n * OOB markers outside of the data area. First component: shows the line(s) within the data area. Second component:\n * shows the label(s) and OOB marker(s).\n */\nfunction addRefLineComponent(chartBuilder, options, measureDirection, measureAxisProperties) {\n const axisDock = axisDockUtil.getAxisDock(measureDirection, measureAxisProperties.dock, options.isRtl);\n let refLinesSettings = {\n // First component\n key: 'ref-line',\n style: {\n oob: {\n show: false,\n },\n },\n lines: {\n x: [],\n y: [],\n },\n };\n refLinesSettings = extend(refLinesSettings, CONSTANTS.LAYOUTSETTINGS.refLines);\n\n let refLinesLabelsSettings = {\n // Second component\n // Use a unique key to force re-render of this component in Picasso.\n // This must be done because Picasso does not allow re-binding of functions (and shouldn't either).\n key: `ref-line-labels-${generateId()}`,\n require: ['renderer', 'chart'],\n dock: axisDockUtil.getOppositeAxisDock(measureDirection, measureAxisProperties.dock, options.isRtl),\n preferredSize() {\n if (measureDirection === 'x') {\n // Use constant component size if horizontal\n return 26;\n }\n\n // Adapt component size to the longest label if vertical\n const measureText = this.renderer.measureText;\n const formatter = this.chart.formatter({ data: chartBuilder.settings.scales.measure.data });\n const labelWidths = refLinesLabelsSettings.lines.y.map((line) => {\n const formattedValue = line.label.showValue !== false ? `(${formatter(line.value)})` : '';\n const text = `${line.label.text} ${formattedValue}`;\n const minimumText = line.label.text && formattedValue ? ` ${formattedValue}` : formattedValue;\n return {\n wanted: measureText({\n text,\n fontSize: line.fontSize,\n fontFamily: line.fontFamily,\n }).width,\n required: measureText({\n text: minimumText,\n fontSize: line.fontSize,\n fontFamily: line.fontFamily,\n }).width,\n };\n });\n\n const maxLabelWidth = labelWidths[0];\n for (let i = 1; i < labelWidths.length; i++) {\n if (labelWidths[i].wanted > maxLabelWidth.wanted) {\n maxLabelWidth.wanted = labelWidths[i].wanted;\n }\n if (labelWidths[i].required > maxLabelWidth.required) {\n maxLabelWidth.required = labelWidths[i].required;\n }\n }\n const labelPadding = 12;\n if (maxLabelWidth.required + labelPadding > 100) {\n return maxLabelWidth.required + labelPadding; // Always have space for the value\n }\n return Math.min(maxLabelWidth.wanted + labelPadding, 100); // Limit to 100 px width\n },\n lines: {\n x: [],\n y: [],\n },\n };\n refLinesLabelsSettings = extend(refLinesLabelsSettings, CONSTANTS.LAYOUTSETTINGS.refLinesLabels);\n\n options.refLines.forEach((refLine) => {\n if (!refLine.show) {\n return;\n }\n\n const expressionValue = refLine.refLineExpr && refLine.refLineExpr.value;\n const lineOptions = extend(true, {}, options, {\n paletteColor: refLine.paletteColor,\n style: refLine.style,\n chartID: chartBuilder.options.chartID,\n });\n\n // Add a line for each visible ref line\n const lineSettings = refLineUtil.lineSettings(\n {\n scale: 'measure',\n dir: measureDirection,\n value: expressionValue,\n },\n lineOptions\n );\n\n refLinesSettings.lines[measureDirection].push(lineSettings);\n\n // Add a label and an OOB marker for each visible ref line (using the second component)\n const lineLabelSettings = refLineUtil.lineLabelSettings(\n {\n scale: 'measure',\n value: expressionValue,\n label: {\n text: refLine.showLabel !== false ? refLine.label : '',\n showValue: refLine.showValue !== false,\n },\n },\n lineOptions\n );\n\n if (measureDirection === 'x') {\n lineLabelSettings.label.vAlign = axisDock === 'near' ? 1 : 0;\n } else {\n // y\n lineLabelSettings.label.align = axisDock === 'near' ? 0 : 1;\n }\n\n refLinesLabelsSettings.lines[measureDirection].push(lineLabelSettings);\n });\n\n chartBuilder.addComponent('ref-line', refLinesSettings, {});\n chartBuilder.addComponent('ref-line', refLinesLabelsSettings, {});\n}\n\n/**\n * Adds a lasso component to the chart builder\n * @param {ChartBuilder} chartBuilder\n * @param {object} options - lasso options\n * @param {string} options.brushKey - key used as context for lasso selection triggers\n * @param {string} options.brushComponent - target component key\n */\nfunction addLassoComponent(chartBuilder, options) {\n const lassoOptions = {\n brushKey: options.brushKey,\n brushComponents: options.brushComponents,\n brushData: options.brushData,\n };\n\n chartBuilder.addComponent('lasso', CONSTANTS.LAYOUTSETTINGS.lasso, lassoOptions);\n}\n/**\n * Adds a dimension range component to the chart builder\n * @param {any} chartBuilder\n * @param {object} options - range dim options\n * @param {string} options.brushKey - key used as context for range selection triggers\n * @param {string} options.brushAxis - target axis to perform range select on\n * @param {string} options.brushScale - Scale to use\n * @param {boolean} isChartHorizontal - Whether the chart is horizontal or not\n */\nfunction addRangeDimComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeDimSettings = {\n key: 'rangeDim',\n };\n\n rangeDimSettings = extend(rangeDimSettings, CONSTANTS.LAYOUTSETTINGS.rangeDim);\n\n const rangeDimOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushArea: options.brushArea,\n brushScale: options.brushScale,\n isHorizontal: !isChartHorizontal,\n dock,\n isRtl,\n };\n\n chartBuilder.addComponent('range', rangeDimSettings, rangeDimOptions);\n}\n\nfunction addRangeMeasureComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeMeasureSettings = {\n key: 'rangeMeasure',\n };\n\n rangeMeasureSettings = extend(rangeMeasureSettings, CONSTANTS.LAYOUTSETTINGS.rangeMeasure);\n\n const rangeMeasureOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushArea: options.brushArea,\n brushScale: options.brushScale,\n multiple: options.multiple,\n isHorizontal: isChartHorizontal,\n dock,\n isRtl,\n };\n\n chartBuilder.addComponent('range', rangeMeasureSettings, rangeMeasureOptions);\n}\n\nfunction addRangeAreaComponent(chartBuilder, options, isChartHorizontal, dock, isRtl) {\n let rangeMinorSettings = {\n key: 'rangeMinor',\n };\n\n rangeMinorSettings = extend(rangeMinorSettings, CONSTANTS.LAYOUTSETTINGS.rangeMinor);\n\n const rangeMeasureOptions = {\n brushKey: options.brushKey,\n brushAxis: options.brushAxis,\n brushData: options.brushData,\n brushArea: options.brushArea,\n brushComponents: options.brushComponents,\n brushScale: options.brushScale,\n multiple: options.multiple,\n isHorizontal: options.brushScale === 'measure' ? isChartHorizontal : !isChartHorizontal,\n dock,\n isRtl,\n chartInstance: options.chartInstance,\n };\n\n chartBuilder.addComponent('range-area', rangeMinorSettings, rangeMeasureOptions);\n}\n\nfunction getMeasureAxisOptions(options, measureDirection) {\n return {\n dock: options.measureAxisProperties && options.measureAxisProperties.dock,\n direction: measureDirection,\n isRtl: options.isRtl,\n };\n}\n\nfunction getMeasureAxisTitleOptions(options, measureDirection) {\n return getMeasureAxisOptions(options, measureDirection);\n}\n\nfunction getDimensionAxisOptions(options, dimensionDirection) {\n return {\n dock: options.dimensionAxisProperties && options.dimensionAxisProperties.dock,\n direction: dimensionDirection,\n isRtl: options.isRtl,\n };\n}\n\nfunction getDimensionAxisTitleOptions(options, dimensionDirection) {\n return getDimensionAxisOptions(options, dimensionDirection);\n}\n","import extend from 'extend';\n\nfunction scale(settings, opts) {\n const options = opts || {};\n const isHorizontal = !options.orientation || options.orientation === 'horizontal';\n const isRtl = !!options.isRtl;\n\n const defaultSettings = {\n name: options.name || 'scale',\n component: {\n invert: isHorizontal && isRtl,\n minorTicks: {\n count: 1,\n },\n range: options.range || undefined,\n domain: options.domain || undefined,\n trackBy: options.trackBy || 'id',\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nfunction measureScale(settings, opts) {\n const options = opts || {};\n let fields = options.source || [];\n if (typeof fields === 'string') {\n fields = [fields];\n }\n\n const defaultSettings = {\n name: 'measure',\n component: {\n expand: 0.1,\n data: {\n fields: fields.map((f) => ({\n field: f,\n })),\n },\n },\n };\n\n const measureAxisProperties = opts && opts.measureAxisProperties;\n\n if (measureAxisProperties && !measureAxisProperties.autoMinMax) {\n // explicit min max measure scale range\n if (['min', 'minMax'].includes(measureAxisProperties.minMax)) {\n defaultSettings.component.min = measureAxisProperties.min;\n }\n if (['max', 'minMax'].includes(measureAxisProperties.minMax)) {\n defaultSettings.component.max = measureAxisProperties.max;\n }\n }\n\n const measureSettings = extend(true, defaultSettings, settings || {});\n const scaleSettings = scale(measureSettings, opts);\n const hasInvertSettings = settings && settings.component && typeof settings.component.invert !== 'undefined';\n\n if (!hasInvertSettings && opts && opts.orientation === 'vertical') {\n scaleSettings.component.invert = !scaleSettings.component.invert;\n }\n\n return scaleSettings;\n}\n\nfunction dimensionScale(settings, opts) {\n const defaultSettings = {\n name: 'dimension',\n component: {\n trackBy: 'id',\n type: 'band',\n data: {\n extract: {\n field: (opts && opts.source) || '',\n props: {\n label(v) {\n return v.qText || '';\n }, // Map qText to handle both qElemNo and qElemNumber\n },\n },\n },\n label(v) {\n return v.datum.label.value;\n }, // Set qText as value from the mapping on r.92\n },\n };\n\n const dimensionSettings = extend(true, defaultSettings, settings || {});\n\n return scale(dimensionSettings, opts);\n}\n\nscale.measureScale = measureScale;\nscale.dimensionScale = dimensionScale;\n\nexport default scale;\n","import extend from 'extend';\nimport axisDockUtil from './util/axis-dock-util';\n\nfunction axis(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n const dock = options && options.dock;\n const direction = options && options.direction;\n const isRtl = options && options.isRtl;\n\n const axisLineStroke = options.theme.getStyle(chartID, 'axis.line.major', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'axis.title', 'fontSize');\n const titleFill = options.theme.getStyle(chartID, 'axis.title', 'color');\n const labelsFill = options.theme.getStyle(chartID, 'axis.label.name', 'color');\n const labelsFontSize = options.theme.getStyle(chartID, 'axis.label.name', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'axis.title', 'fontFamily');\n const labelsFontFamily = options.theme.getStyle(chartID, 'axis.label.name', 'fontFamily');\n\n const defaultSettings = {\n key: 'axis',\n type: 'axis',\n dock: axisDockUtil.getAxisDock(direction, dock, isRtl),\n brush: { trigger: [], consume: [] },\n settings: {\n title: {\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n line: {\n show: true,\n strokeWidth: 1,\n stroke: axisLineStroke,\n },\n labels: {\n fill: labelsFill,\n fontSize: labelsFontSize,\n fontFamily: labelsFontFamily,\n tiltAngle: isRtl ? -40 : 40,\n maxEdgeBleed: 75,\n maxSize: 150,\n mode: 'auto',\n },\n ticks: {\n stroke: axisLineStroke,\n },\n minorTicks: {\n stroke: axisLineStroke,\n },\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nfunction xAxis(settings, options) {\n const defaultSettings = {\n key: 'x-axis',\n scale: 'x',\n };\n const xAxisSettings = extend(true, defaultSettings, settings || {});\n return axis(xAxisSettings, options);\n}\n\nfunction yAxis(settings, options) {\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const defaultSettings = {\n key: 'y-axis',\n scale: 'y',\n dock: axisDockUtil.getYAxisDock(dock, isRtl),\n };\n const yAxisSettings = extend(true, defaultSettings, settings || {});\n return axis(yAxisSettings, options);\n}\n\naxis.xAxis = xAxis;\naxis.yAxis = yAxis;\n\nexport default axis;\n","import extend from 'extend';\nimport axisDockUtil from './util/axis-dock-util';\n\nfunction text(settings, options) {\n const chartID = options && options.chartID;\n const dock = options && options.dock;\n const direction = options && options.direction;\n const isRtl = options && options.isRtl;\n const titleFontSize = options.theme.getStyle(chartID, 'axis.title', 'fontSize');\n const titleFill = options.theme.getStyle(chartID, 'axis.title', 'color');\n const titleFontFamily = options.theme.getStyle(chartID, 'axis.title', 'fontFamily');\n\n const defaultSettings = {\n key: 'text',\n type: 'text',\n dock: axisDockUtil.getAxisDock(direction, dock, isRtl) || 'bottom',\n displayOrder: 0, // TODO: This can be removed when picasso set displayOrder for text component to 0. Currently picasso set it to 99.\n style: {\n text: {\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nfunction xAxisTitle(settings, options) {\n const defaultSettings = {\n key: 'x-axis-title',\n };\n const xAxisTitleSettings = extend(true, defaultSettings, settings || {});\n return text(xAxisTitleSettings, options);\n}\n\nfunction yAxisTitle(settings, options) {\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const defaultSettings = {\n key: 'y-axis-title',\n dock: axisDockUtil.getYAxisDock(dock, isRtl) || 'left',\n };\n const yAxisTitleSettings = extend(true, defaultSettings, settings || {});\n return text(yAxisTitleSettings, options);\n}\n\ntext.xAxisTitle = xAxisTitle;\ntext.yAxisTitle = yAxisTitle;\n\nexport default text;\n","function getBublesAlign(isHorizontal, dock, isRtl) {\n let isAlignStart = (isHorizontal && dock !== 'far') || (!isHorizontal && dock === 'far');\n if (!isHorizontal && isRtl) {\n isAlignStart = !isAlignStart;\n }\n return isAlignStart ? 'start' : 'end';\n}\n\nfunction getDock(brushAxis, brushArea) {\n const dockTargets = [];\n let dockT;\n if (brushAxis) {\n dockTargets.push(`@${brushAxis}`);\n }\n if (brushArea) {\n dockTargets.push(`@${brushArea}`);\n }\n if (dockTargets.length) {\n dockT = dockTargets.join(',');\n }\n return dockT;\n}\n\nexport default {\n getBublesAlign,\n getDock,\n};\n","/* eslint-disable guard-for-in */\n/* eslint-disable no-restricted-syntax */\nconst layoutModes = {\n SPARK: { width: 0, height: 0 },\n XSMALL: { width: 150, height: 75 },\n SMALL: { width: 300, height: 150 },\n MEDIUM: { width: 400, height: 220 },\n FULL: { width: 550, height: 450 },\n};\n\nfunction LayoutModes() {\n return layoutModes;\n}\n\nLayoutModes.getLayoutModeKeys = function () {\n const layoutModeKeys = [];\n let modeKey;\n\n for (modeKey in layoutModes) {\n layoutModeKeys.push(modeKey);\n }\n return layoutModeKeys;\n};\n\nexport default LayoutModes;\n","import extend from 'extend';\n\nfunction getLabel(context) {\n const end = context.data.end;\n const formatter = context.dataset(end.source.key).field(end.source.field).formatter();\n return formatter(end.value);\n}\n\nfunction labels(settings, options) {\n const chartID = options && options.chartID;\n const labelsFill = options.theme.getStyle(chartID, 'label.value', 'color');\n const labelsFontSize = options.theme.getStyle(chartID, 'label.value', 'fontSize');\n const labelsFontFamily = options.theme.getStyle(chartID, 'label.value', 'fontFamily');\n\n const defaultSettings = {\n key: 'labels',\n type: 'labels',\n displayOrder: 1,\n settings: {\n sources: [\n {\n component: 'box-marker', // Connects with the matching \"key:\" attribute in the visualizations\n selector: 'rect',\n strategy: {\n type: 'bar',\n settings: {\n direction: 'up',\n fontFamily: labelsFontFamily,\n fontSize: parseFloat(labelsFontSize),\n align: 0.5,\n labels: [\n {\n placements: [\n {\n position: 'outside',\n fill: labelsFill,\n justify: 0,\n },\n {\n position: 'inside',\n fill: settings && settings.settings.sources[0].strategy.settings.labels[0].placements[1].fill,\n justify: 1,\n },\n ],\n label: getLabel,\n },\n ],\n },\n },\n },\n ],\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default labels;\n","import extend from 'extend';\n\nconst directions = {\n left: 'left',\n right: 'right',\n up: 'top',\n down: 'bottom',\n};\n\nfunction legend(settings, options) {\n const chartID = options && options.chartID;\n const isRtl = options && options.isRtl;\n let dock = (options && options.dock) || 'auto';\n const show = options && options.show;\n\n if (dock === 'auto') {\n dock = options.chartHeight / options.chartWidth < 1 ? (isRtl ? 'left' : 'right') : 'bottom';\n }\n\n const titleFill = options.theme.getStyle(chartID, 'legend.title', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'legend.title', 'fontSize');\n const itemFill = options.theme.getStyle(chartID, 'legend.label', 'color');\n const itemFontSize = options.theme.getStyle(chartID, 'legend.label', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'legend.title', 'fontFamily');\n const itemFontFamily = options.theme.getStyle(chartID, 'legend.label', 'fontFamily');\n\n const defaultSettings = {\n key: 'legend',\n type: 'legend-cat',\n dock,\n show,\n\n scale: {\n type: 'color',\n },\n settings: {\n title: {\n anchor: 'middle',\n },\n layout: {\n direction: isRtl ? 'rtl' : 'ltr',\n size: dock === 'top' || dock === 'bottom' ? 2 : 1,\n vertical: dock === 'top' || dock === 'bottom' ? 16 : 8,\n },\n navigation: {\n button: {\n class: {\n 'lui-fade-button': true,\n },\n content(h, state) {\n const c = ['lui-button__icon', 'lui-icon', `lui-icon--triangle-${directions[state.direction]}`];\n return h('span', {\n style: {\n pointerEvents: 'none',\n },\n class: c.join(' '),\n });\n },\n },\n },\n },\n style: {\n item: {\n label: {\n fontSize: itemFontSize,\n fontFamily: itemFontFamily,\n fill: itemFill,\n lineHeight: 1,\n wordBreak: 'break-word',\n },\n margin: {\n top: 5,\n left: 10,\n right: 10,\n bottom: 10,\n },\n shape: {\n type: options.type ? options.type : 'square',\n size: (parseInt(itemFontSize, 10) * 3) / 4, // To make it consistent with non-picasso charts\n },\n },\n title: {\n show: options.showTitle,\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n },\n };\n return extend(true, {}, defaultSettings, settings);\n}\n\nexport default legend;\n","import extend from 'extend';\nimport ChartPresets from './chart-presets';\nimport scale from './scale';\nimport axis from './components/axis';\nimport boxMarker from './components/box-marker';\nimport eventArea from './components/event-area';\nimport gridLine from './components/grid-line';\nimport interaction from './components/interaction';\nimport pointMarker from './components/point-marker';\nimport scrollbar from './components/scrollbar';\nimport text from './components/text';\nimport lasso from './components/lasso';\nimport range from './components/range';\nimport refLine from './components/ref-line';\nimport layoutModes from './layout-modes';\nimport labels from './components/labels';\nimport categoricalLegend from './components/categorical-legend';\nimport sequentialLegend from './components/sequential-legend';\nimport rangeArea from './components/range-area';\n\nfunction createComponent(type, settings, options) {\n switch (type) {\n // Picasso components\n case 'scale':\n return scale(settings, options);\n case 'measure-scale':\n return scale.measureScale(settings, options);\n case 'dimension-scale':\n return scale.dimensionScale(settings, options);\n case 'axis':\n return axis(settings, options);\n case 'box-marker':\n return boxMarker(settings, options);\n case 'point-marker':\n return pointMarker(settings, options);\n case 'scrollbar':\n return scrollbar(settings, options);\n case 'text':\n return text(settings, options);\n case 'lasso':\n return lasso(settings, options);\n case 'range':\n return range(settings, options);\n case 'range-area':\n return rangeArea(settings, options);\n case 'categorical-legend':\n return categoricalLegend(settings, options);\n case 'sequential-legend':\n return sequentialLegend(settings, options);\n // Wrapepd picasso components\n case 'x-axis':\n return axis.xAxis(settings, options);\n case 'y-axis':\n return axis.yAxis(settings, options);\n case 'x-axis-title':\n return text.xAxisTitle(settings, options);\n case 'y-axis-title':\n return text.yAxisTitle(settings, options);\n case 'grid-line':\n return gridLine(settings, options);\n case 'interaction':\n return interaction(settings, options);\n case 'ref-line':\n return refLine(settings, options);\n // Custom components\n case 'event-area':\n return eventArea(settings, options);\n case 'labels':\n return labels(settings, options);\n default:\n return undefined;\n }\n}\n\nfunction ChartBuilder(options) {\n this.options = options || {};\n\n this.settings = {\n dockLayout: {\n layoutModes: layoutModes(),\n },\n components: [],\n scales: {},\n };\n}\n\nChartBuilder.prototype.addComponent = function addComponent(type, settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const component = createComponent(type, settings, extendedOptions);\n this.settings.components.push(component);\n return component;\n};\n\nChartBuilder.prototype.addInteraction = function addInteraction(settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const component = createComponent('interaction', settings, extendedOptions);\n if (!this.settings.interactions) {\n this.settings.interactions = [];\n }\n this.settings.interactions.push(component);\n return component;\n};\n\nChartBuilder.prototype.addScale = function addScale(type, settings, options) {\n const extendedOptions = extend(true, {}, this.options, options || {});\n const scale = createComponent(type, settings, extendedOptions);\n this.settings.scales[scale.name] = scale.component;\n};\n\nChartBuilder.prototype.getSettings = function getSettings() {\n return this.settings;\n};\n\nChartBuilder.prototype.getComponent = function getComponent(key) {\n return this.settings.components.filter((component) => component.key === key)[0];\n};\n\nChartBuilder.prototype.addPreset = function addPreset(type, options) {\n ChartPresets(type, this, options);\n};\n\nChartBuilder.validateComponentKeys = function validateComponentKeys(components) {\n const keys = {};\n return components\n .map((component) => {\n const key = component.key;\n if (!key) {\n return `Missing key for component ${component.type}`;\n }\n if (keys[key]) {\n return `Duplicate key for component ${component.type}`;\n }\n keys[key] = true;\n return null;\n })\n .filter((msg) => !!msg);\n};\n\n/*\n * Factory function\n */\nChartBuilder.create = function (options) {\n return new ChartBuilder(options);\n};\n\nChartBuilder.createComponent = createComponent;\n\nexport default ChartBuilder;\n","import extend from 'extend';\n\nfunction boxMarker(settings) {\n const defaultSettings = {\n key: 'box-marker',\n type: 'box-marker',\n settings: {\n minor: { scale: 'x' },\n orientation: 'horizontal',\n },\n brush: { trigger: [], consume: [] },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default boxMarker;\n","import extend from 'extend';\n\nfunction pointMarker(settings) {\n const defaultSettings = {\n key: 'point-marker',\n type: 'point-marker',\n settings: {},\n brush: { trigger: [], consume: [] },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default pointMarker;\n","import extend from 'extend';\n\nfunction scrollbar(settings, options) {\n const isRtl = options && options.isRtl;\n const chartID = options && options.chartID;\n const isHorizontal = options && options.isHorizontal;\n const defaultSettings = {\n key: 'scrollbar',\n type: 'scrollbar',\n scroll: 'dimension',\n dock: isHorizontal ? 'bottom' : isRtl ? 'left' : 'right',\n settings: {\n backgroundColor: options.theme.getStyle(chartID, '', 'backgroundColor'),\n invert: isRtl && isHorizontal,\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default scrollbar;\n","import extend from 'extend';\n\nfunction lasso(settings, options) {\n const brushKey = options && options.brushKey;\n const brushComponents = options && options.brushComponents ? options.brushComponents : [];\n const brushData = options && options.brushData ? options.brushData : ['elemNo'];\n\n const defaultSettings = {\n type: 'brush-lasso',\n key: 'lasso',\n displayOrder: 99,\n settings: {\n brush: {\n components: [],\n },\n lasso: {\n fill: 'rgba(0, 0, 0, 0)',\n stroke: 'rgba(102,102,102,1)',\n strokeWidth: 2,\n opacity: 1,\n strokeDasharray: null, // '10, 4',\n },\n startPoint: {\n r: 10,\n fill: 'rgba(0, 152, 69, 1)',\n strokeWidth: 0,\n opacity: 1,\n },\n },\n };\n\n brushComponents.forEach((comp) => {\n defaultSettings.settings.brush.components.push({\n contexts: brushKey ? [brushKey] : undefined,\n key: comp,\n data: brushData,\n });\n });\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default lasso;\n","import extend from 'extend';\nimport rangeUtil from './util/range-util';\n\nfunction range(settings, options) {\n const brushKey = options && options.brushKey;\n const brushAxis = options && options.brushAxis;\n const brushArea = options && options.brushArea;\n const brushScale = options && options.brushScale;\n const isHorizontal = options && options.isHorizontal;\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n\n const defaultSettings = {\n type: 'brush-range',\n key: 'range',\n displayOrder: 99,\n dock: rangeUtil.getDock(brushAxis, brushArea),\n settings: {\n brush: brushKey,\n fill: 'rgba(0, 0, 0, 0)',\n scale: brushScale,\n multiple: options && options.multiple === false ? options.multiple : true,\n direction: isHorizontal ? 'horizontal' : 'vertical',\n target: {\n component: brushAxis,\n fill: 'rgba( 82, 204, 82, 0.2 )',\n fillActive: 'rgba(82, 204, 82, 0.4)',\n },\n bubbles: {\n align: rangeUtil.getBublesAlign(isHorizontal, dock, isRtl),\n },\n },\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default range;\n","import extend from 'extend';\nimport rangeUtil from './util/range-util';\n\nfunction rangeArea(settings, options) {\n const brushKey = options && options.brushKey;\n const brushAxis = options && options.brushAxis;\n const brushComponents = options && options.brushComponents ? options.brushComponents : [];\n const brushData = options && options.brushData ? options.brushData : ['elemNo'];\n const brushArea = options && options.brushArea;\n const isHorizontal = options && options.isHorizontal;\n const dock = options && options.dock;\n const isRtl = options && options.isRtl;\n const chartInstance = options && options.chartInstance;\n let isStartBorder = true;\n\n const defaultSettings = {\n type: 'brush-area-dir',\n key: 'area',\n displayOrder: 99,\n dock: rangeUtil.getDock(brushAxis, brushArea),\n settings: {\n brush: {\n components: [],\n },\n direction: isHorizontal ? 'horizontal' : 'vertical',\n target: {\n component: brushAxis,\n fill: 'rgba( 82, 204, 82, 0.2 )',\n fillActive: 'rgba(82, 204, 82, 0.4)',\n },\n bubbles: {\n align: rangeUtil.getBublesAlign(isHorizontal, dock, isRtl),\n label(data) {\n if (isStartBorder) {\n isStartBorder = false;\n const formattedStartValue = chartInstance\n .dataset(data.binStart.source.key)\n .field(data.binStart.source.field)\n .formatter()(data.binStart.value);\n return formattedStartValue;\n }\n isStartBorder = true;\n const formattedEndValue = chartInstance\n .dataset(data.binEnd.source.key)\n .field(data.binEnd.source.field)\n .formatter()(data.binEnd.value);\n return formattedEndValue;\n },\n },\n multiple: options && options.multiple === false ? options.multiple : true,\n },\n };\n\n brushComponents.forEach((comp) => {\n defaultSettings.settings.brush.components.push({\n contexts: brushKey ? [brushKey] : undefined,\n key: comp,\n data: brushData,\n action: 'add',\n });\n });\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default rangeArea;\n","import extend from 'extend';\n\nfunction sequentialLegend(settings, options) {\n const chartID = options && options.chartID;\n const isRtl = options && options.isRtl;\n let dock = options.dock || 'auto';\n\n if (dock === 'auto') {\n dock = options.chartHeight < options.chartWidth ? (isRtl ? 'left' : 'right') : 'bottom';\n }\n\n const titleFill = options.theme.getStyle(chartID, 'legend.title', 'color');\n const titleFontSize = options.theme.getStyle(chartID, 'legend.title', 'fontSize');\n const titleFontFamily = options.theme.getStyle(chartID, 'legend.title', 'fontFamily');\n const tickFill = options.theme.getStyle(chartID, 'legend.label', 'color');\n const tickFontSize = options.theme.getStyle(chartID, 'legend.label', 'fontSize');\n const tickFontFamily = options.theme.getStyle(chartID, 'legend.label', 'fontFamily');\n\n function getAlignValue(word) {\n switch (word) {\n case 'left':\n return 0;\n case 'right':\n return 1;\n case 'middle':\n default:\n return 0.5;\n }\n }\n\n const defaultSettings = {\n key: 'seqlegend',\n type: 'legend-seq',\n dock,\n\n // Settings to position the legend outside of the axis\n displayOrder: 200,\n minimumLayoutMode: 'MEDIUM',\n prioOrder: 0,\n\n settings: {\n align: isRtl ? getAlignValue('right') : getAlignValue('left'),\n major: {\n invert: dock === 'left' || dock === 'right' || isRtl,\n },\n title: {\n show: options.showTitle,\n fontSize: titleFontSize,\n fontFamily: titleFontFamily,\n fill: titleFill,\n },\n tick: {\n fill: tickFill,\n fontSize: tickFontSize,\n fontFamily: tickFontFamily,\n },\n },\n };\n const finalSettings = extend(true, {}, defaultSettings, settings);\n return finalSettings;\n}\n\nexport default sequentialLegend;\n","import extend from 'extend';\n\nfunction gridLine(settings, options) {\n const chartID = options && options.chartID;\n\n const axisLineStroke = options.theme.getStyle(chartID, 'grid.line.major', 'color');\n\n const defaultSettings = {\n displayOrder: -1,\n key: 'grid-line',\n type: 'grid-line',\n x: null,\n y: null,\n ticks: {\n stroke: axisLineStroke,\n },\n minorTicks: {\n stroke: axisLineStroke,\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default gridLine;\n","import extend from 'extend';\n\nfunction interaction(settings, options) {\n const gestures = (options && options.gestures) || [];\n const defaultSettings = {\n type: 'hammer',\n key: 'hammered',\n gestures,\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default interaction;\n","import extend from 'extend';\n\nfunction refLine(settings, options) {\n const chartID = options && options.chartID; // Should we validate if the parameter exists?\n const oobColor = options.theme.getStyle(chartID, 'referenceLine.outOfBounds', 'color');\n const oobBackgroundColor = options.theme.getStyle(chartID, 'referenceLine.outOfBounds', 'backgroundColor');\n\n const defaultSettings = {\n key: 'ref-line',\n type: 'ref-line',\n dock: 'center',\n prioOrder: -1,\n lines: {\n x: [],\n y: [],\n },\n style: {\n oob: {\n width: 7,\n fill: oobBackgroundColor,\n text: {\n fill: oobColor,\n },\n padding: {\n x: 7,\n y: 5,\n },\n },\n },\n };\n\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default refLine;\n","import extend from 'extend';\n\nfunction eventArea(settings) {\n const defaultSettings = {\n type: 'event-area',\n key: 'event-area',\n };\n return extend(true, {}, defaultSettings, settings || {});\n}\n\nexport default eventArea;\n","import DimensionMeasureChart from './presets/dimension-measure-chart/dimension-measure-chart';\n\nfunction ChartPresets(type, chartBuilder, options) {\n switch (type) {\n case 'dimension-measure-chart':\n DimensionMeasureChart(chartBuilder, options);\n break;\n default:\n throw Error('There is no chart preset with that type');\n }\n}\n\nexport default ChartPresets;\n","/**\n * Configuration for disclaimers\n *\n */\n\n/**\n * Placement on chart\n */\nconst ALIGNMENT = {\n CENTER: 0,\n BOTTOM: 1,\n};\n\n/**\n * Configuration of all disclaimers\n *\n * label - key for translation\n * alignment - Placement on chart\n * default - Supported by default. If 'false' the disclaimer needs to be set to 'true' in supportedDisclaimers to be valid\n */\nconst DISCLAIMERS = [\n {\n label: 'NoDataExist',\n alignment: ALIGNMENT.CENTER,\n default: true,\n },\n {\n label: 'RequireNumericDimension',\n alignment: ALIGNMENT.CENTER,\n default: false,\n },\n {\n label: 'OnlyNanData',\n alignment: ALIGNMENT.CENTER,\n default: true,\n },\n {\n label: 'OnlyNegativeOrZeroValues',\n alignment: ALIGNMENT.CENTER,\n default: false,\n },\n {\n label: 'LimitedData',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'OnlyNanColor',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'NegativeOrZeroValues',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n {\n label: 'DataRangeIncludingZero',\n alignment: ALIGNMENT.BOTTOM,\n default: false,\n },\n];\n\nexport default {\n DISCLAIMERS,\n ALIGNMENT,\n};\n","/**\n * Disclaimer utility for setting attributes needed for the disclaimer component\n *\n * @exports objects.picasso/disclaimer/disclaimer-attributes-utils\n */\nimport DisclaimersConfig from './disclaimers-config';\n\n/**\n * Checks if the data range in measures and axis spans over the value 0\n * @ignore\n * @param measureAxis\n * @param measureInfo\n * @returns {boolean} True if the data range in any measure or the given axis spans over 0\n */\nfunction hasDataRangeIncludingZero(measureAxis, measureInfo) {\n const len = measureInfo.length;\n let i;\n let explicitMinOn;\n let explicitMaxOn;\n let min;\n let max;\n if (measureAxis) {\n explicitMinOn =\n !measureAxis.autoMinMax &&\n (measureAxis.minMax === 'min' || measureAxis.minMax === 'minMax') &&\n measureAxis.min !== null &&\n !Number.isNaN(+measureAxis.min);\n explicitMaxOn =\n !measureAxis.autoMinMax &&\n (measureAxis.minMax === 'max' || measureAxis.minMax === 'minMax') &&\n measureAxis.max !== null &&\n !Number.isNaN(+measureAxis.max);\n }\n min = Number.MAX_VALUE;\n max = -Number.MAX_VALUE;\n\n // return true if data contains zero\n for (i = 0; i < len; i++) {\n min = Math.min(min, measureInfo[i].qMin);\n max = Math.max(max, measureInfo[i].qMax);\n if (min <= 0 && max >= 0) {\n return true;\n }\n }\n\n // return true if axis explicits contains zero\n min = explicitMinOn ? measureAxis.min : min;\n max = explicitMaxOn ? measureAxis.max : max;\n return min <= 0 && max >= 0;\n}\n\nfunction hasSubNodes(stackedDataPages) {\n return (\n stackedDataPages && stackedDataPages[0] && stackedDataPages[0].qData[0] && stackedDataPages[0].qData[0].qSubNodes\n );\n}\n\nconst util = {\n getNoDataExistAttribute(qHyperCube) {\n return qHyperCube.qSize.qcy * qHyperCube.qSize.qcx === 0;\n },\n\n getLimitedDataAttribute(qHyperCube, opts) {\n let result = false;\n let maxNbrOfDimensions;\n if (!qHyperCube) {\n result = opts.explicitLimitedData === true;\n } else if (opts.explicitLimitedData !== undefined) {\n result = opts.explicitLimitedData === true;\n } else if (qHyperCube.qDataPages && qHyperCube.qDataPages[0]) {\n result = !opts.paging && qHyperCube.qSize.qcy > qHyperCube.qDataPages[0].qMatrix.length;\n } else if (hasSubNodes(qHyperCube.qStackedDataPages)) {\n maxNbrOfDimensions = opts.maxNbrOfDimensions ? opts.maxNbrOfDimensions : 2;\n if (qHyperCube.qDimensionInfo.length >= maxNbrOfDimensions) {\n result = qHyperCube.qStackedDataPages[0].qData[0].qSubNodes.some((node) => node.qDown > 0);\n } else {\n result =\n qHyperCube.qStackedDataPages[0].qData[0].qSubNodes.length < qHyperCube.qStackedDataPages[0].qArea.qHeight;\n }\n }\n return result;\n },\n\n getNegativeOrZeroValuesAttribute(qHyperCube, opts) {\n return !opts.supportNegative && qHyperCube.qMeasureInfo.some((measure) => measure.qMin <= 0);\n },\n\n getOnlyNegativeOrZeroValuesAttribute(qHyperCube, opts) {\n return (\n (!opts.supportNegative &&\n qHyperCube.qMeasureInfo.every((measure) => measure.qMax <= 0 && measure.qMax >= measure.qMin)) ||\n qHyperCube.qSize.qcy === 0\n );\n },\n\n getOnlyNanDataAttribute(qHyperCube, opts) {\n if (opts.explicitOnlyNanData !== undefined) {\n return opts.explicitOnlyNanData;\n }\n\n return qHyperCube.qMeasureInfo.every((measure) => measure.qMax < measure.qMin || measure.qMax === 'NaN');\n },\n\n getDataRangeIncludingZeroAttribute(data, opts) {\n return !opts.supportRangeOverZero && hasDataRangeIncludingZero(data.measureAxis, data.qHyperCube.qMeasureInfo);\n },\n\n /**\n * Apply attributes that configures disclaimers for a charts\n * @param {Object} options - Options\n * @param {Object} data - Layout data\n * @returns {Object}\n */\n applyAttributes(options, data) {\n const opts = options || {};\n const dataAttributes = {};\n\n opts.supportNegative = opts.supportNegative === undefined ? true : opts.supportNegative;\n opts.supportRangeOverZero = opts.supportRangeOverZero === undefined ? true : opts.supportRangeOverZero;\n\n DisclaimersConfig.DISCLAIMERS.forEach((config) => {\n dataAttributes[config.label] = false;\n });\n if (!data || !data.qHyperCube) {\n return dataAttributes;\n }\n dataAttributes.NoDataExist = this.getNoDataExistAttribute(data.qHyperCube);\n if (dataAttributes.NoDataExist) {\n return dataAttributes;\n }\n dataAttributes.RequireNumericDimension = opts.explicitRequireNumericDimension;\n if (dataAttributes.RequireNumericDimension) {\n return dataAttributes;\n }\n dataAttributes.LimitedData = this.getLimitedDataAttribute(data.qHyperCube, opts);\n dataAttributes.NegativeOrZeroValues = this.getNegativeOrZeroValuesAttribute(data.qHyperCube, opts);\n dataAttributes.OnlyNegativeOrZeroValues = this.getOnlyNegativeOrZeroValuesAttribute(data.qHyperCube, opts);\n dataAttributes.OnlyNanData = this.getOnlyNanDataAttribute(data.qHyperCube, opts);\n dataAttributes.DataRangeIncludingZero = this.getDataRangeIncludingZeroAttribute(data, opts);\n\n return dataAttributes;\n },\n};\nexport default util;\n","/**\n * Helper for disclaimer component\n *\n */\n\n/**\n * Create new Helper for disclaimer\n * @param disclaimersConfig {Array} List of disclaimer config objects\n * @param dataAttributes {Object} Config for which disclaimers that are valid to show\n * @param supportedDisclaimers {Object} Config for which disclaimers that are supported\n * @constructor\n */\nfunction Helper(disclaimersConfig, dataAttributes, supportedDisclaimers) {\n this.disclaimersConfig = disclaimersConfig;\n this.dataAttributes = dataAttributes;\n this.supportedDisclaimers = supportedDisclaimers;\n}\n\nfunction isValid(label, list) {\n return label && list && list[label];\n}\n\n/**\n * Returns true if disclaimer config is valid, supported and has an alignment\n * @param disclaimer {Object} Configuration for a disclaimer\n * @param alignment {Integer} Alignment value in disclaimers config\n * @returns {Boolean}\n */\nHelper.prototype.isValidAndSupported = function (disclaimer, alignment) {\n return (\n isValid(disclaimer.label, this.dataAttributes) &&\n (disclaimer.default || isValid(disclaimer.label, this.supportedDisclaimers)) &&\n alignment !== undefined &&\n disclaimer.alignment === alignment\n );\n};\n\n/**\n * Returns true if there are any valid disclaimers for an alignment\n * @param alignment {Integer} Alignment value in disclaimers config\n * @returns {Boolean}\n */\nHelper.prototype.isAnyValidDisclaimer = function (alignment) {\n let result = false;\n const self = this;\n this.disclaimersConfig.forEach((config) => {\n if (self.isValidAndSupported(config, alignment)) {\n result = true;\n }\n });\n return result;\n};\n\n/**\n * Gets all translated disclaimer messages for an alignment\n * @param alignment {Integer} Alignment value in disclaimers config\n * @param translator {Object} Translator component\n * @returns {string}\n */\nHelper.prototype.getMessage = function (alignment, translator) {\n let str = '';\n const self = this;\n if (translator) {\n this.disclaimersConfig.forEach((config) => {\n if (self.isValidAndSupported(config, alignment)) {\n str += `${translator.get(`Object.Disclaimer.${config.label}`)} `;\n }\n });\n }\n return str;\n};\n\nexport default Helper;\n","/**\n * Disclaimer component for Picasso base charts\n *\n * @exports objects.picasso/disclaimer/disclaimer\n */\n\nimport extend from 'extend';\nimport DisclaimersConfig from './disclaimers-config';\nimport AttributesUtil from './disclaimer-attributes-util';\nimport DisclaimerComponentHelper from './disclaimer-component-helper';\n\nDisclaimer.ERRORS = {\n SET: 'Calling Disclaimer.set() without attributes',\n DISPLAY: 'Calling Disclaimer.display() before attributes are applied',\n};\n\n/**\n * Create new disclaimer component\n * @param {Object} options - A reference to chart options\n * @constructor\n */\nfunction Disclaimer(environment) {\n this.environment = environment;\n this.clear();\n}\n\nDisclaimer._applyDefaultSupport = function (supportedDisclaimers, disclaimersConfig) {\n let supported = supportedDisclaimers;\n if (!supported) {\n supported = {};\n }\n disclaimersConfig.forEach((config) => {\n if (supported[config.label] === undefined) {\n supported[config.label] = config.default;\n }\n });\n return supported;\n};\n\nDisclaimer.prototype.getComponentSettings = function () {\n const { translator } = this.environment;\n const supportedDisclaimers = extend(true, {}, this.vizAttributes.supportedDisclaimers);\n const helper = new DisclaimerComponentHelper(\n DisclaimersConfig.DISCLAIMERS,\n this.dataAttributes,\n supportedDisclaimers\n );\n\n let message;\n let dock;\n if (helper.isAnyValidDisclaimer(DisclaimersConfig.ALIGNMENT.CENTER)) {\n message = helper.getMessage(DisclaimersConfig.ALIGNMENT.CENTER, translator);\n dock = 'center';\n } else if (helper.isAnyValidDisclaimer(DisclaimersConfig.ALIGNMENT.BOTTOM)) {\n message = helper.getMessage(DisclaimersConfig.ALIGNMENT.BOTTOM, translator);\n dock = 'bottom';\n } else {\n return undefined;\n }\n\n return {\n key: 'disclaimer',\n type: 'disclaimer',\n layout: {\n displayOrder: 1000,\n dock,\n },\n settings: {\n label: message,\n rtl: this.environment?.options?.direction === 'rtl',\n },\n };\n};\n\n/**\n * Set attributes that configures disclaimers for a charts\n * @param {Object} attributes - Disclaimer settings for a chart\n */\nDisclaimer.prototype.set = function (attributes) {\n this.clear();\n if (attributes) {\n this.vizAttributes = attributes;\n this.dataAttributes = AttributesUtil.applyAttributes(this.vizAttributes.options, this.vizAttributes.data);\n } else {\n throw new Error(Disclaimer.ERRORS.SET);\n }\n};\n\n/**\n * Clears disclaimer settings\n */\nDisclaimer.prototype.clear = function () {\n this.vizAttributes = null;\n this.dataAttributes = null;\n};\n\nexport default Disclaimer;\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\n\nimport Class from '../extra/class';\nimport ChartBuilder from './chart-builder/chart-builder';\nimport Disclaimer from './disclaimer/disclaimer';\n\nfunction getData(backendApi, hyperCube, rect) {\n let page = {\n qTop: 0,\n qLeft: 0,\n qWidth: hyperCube.qSize.qcx,\n qHeight: 10000 / hyperCube.qSize.qcx,\n };\n let dataPagesPath;\n\n if (rect) {\n const width = rect.width || hyperCube.qSize.qcx;\n const maxHeight = Math.floor(10000 / width);\n page = {\n qTop: rect.top || 0,\n qLeft: rect.left || 0,\n qWidth: width,\n qHeight: rect.height ? Math.min(rect.height, maxHeight) : maxHeight,\n };\n } else {\n page = {\n qTop: 0,\n qLeft: 0,\n qWidth: hyperCube.qSize.qcx,\n qHeight: 10000 / hyperCube.qSize.qcx,\n };\n }\n\n switch (hyperCube.qMode) {\n case 'K': // Stacked mode\n dataPagesPath = 'qStackedDataPages';\n break;\n case 'S': // Straight table mode\n default:\n dataPagesPath = 'qDataPages';\n break;\n }\n\n return backendApi.getData([page], null, hyperCube).then((pages) => {\n hyperCube[dataPagesPath] = pages;\n });\n}\n\nconst ChartView = Class.extend({\n init(picasso, $element, environment, backendApi, selectionsApi) {\n this.$element = $element;\n this.environment = environment;\n this.backendApi = backendApi;\n\n this._selectionsApi = selectionsApi;\n this._on = false;\n this._disclaimer = new Disclaimer(environment);\n this._dataPaths = ['qHyperCube'];\n\n const self = this;\n\n // Set properties that should be available in subclasses\n\n this.picassoElement = $element[0];\n this.picassoElement.className += ' picasso-chart';\n\n // Paint a visually empty Picasso chart containing an event-area component\n this.chartInstance = picasso.chart({\n element: this.picassoElement,\n settings: {\n components: [\n ChartBuilder.createComponent('event-area', {\n mounted(element) {\n // Mounted is run synchronously so this.dataAreaElem will be available in subclass constructors\n self.dataAreaElem = element;\n },\n }),\n ],\n },\n });\n },\n\n updateEnvironment(environment) {\n this.environment = environment;\n },\n\n isRtl() {\n return this.environment.options?.direction === 'rtl';\n },\n\n setDataPaths(dataPaths) {\n this._dataPaths = dataPaths;\n },\n\n getData(backendApi, hyperCube, rect) {\n return getData(backendApi, hyperCube, rect);\n },\n\n hasValidData() {\n return true;\n },\n\n paint() {\n // Use this.layout\n if (this.hasValidData()) {\n this._disclaimer.set(this.getDisclaimerAttributes(this.layout));\n const disclaimerComponent = this._disclaimer.getComponentSettings();\n const isSuppressingDisc = disclaimerComponent?.layout?.dock === 'center';\n\n const chartSettings = this.createChartSettings(this.layout);\n if (isSuppressingDisc) {\n chartSettings.components = [disclaimerComponent];\n } else if (disclaimerComponent) {\n chartSettings.components.push(disclaimerComponent);\n }\n ChartBuilder.validateComponentKeys(chartSettings.components).forEach((errorMsg) => {\n console.error(errorMsg);\n });\n\n this.updateChart(this.layout, chartSettings);\n this._painted = true;\n }\n return Promise.resolve();\n },\n\n resize() {\n // Use this.layout\n if (!this.layout) {\n // There are cases where resize is run before updateData, therefore layout is undefined\n return undefined;\n }\n return this.paint();\n },\n\n createChartSettings() {\n throw new Error('Subclass must implement \"createChartSettings\" function');\n },\n\n addSnapshotChartSettings(settings, layout) {\n const { freeResize } = this.environment.options;\n if (!freeResize && layout.snapshotData) {\n settings.dockLayout.logicalSize = {\n width: layout.snapshotData.content.size.w,\n height: layout.snapshotData.content.size.h,\n preserveAspectRatio: true,\n };\n }\n },\n\n updateData(layout) {\n // clone the layout so that updates ignored by suppressOnPaint does not affect it.\n if (this._destroyed) {\n return Promise.reject();\n }\n\n this.layout = extend(true, {}, layout);\n this.layout.permissions = layout.permissions;\n return Promise.resolve();\n },\n\n updateChart(layout, settings, isPartialData) {\n const localeInfo = this.environment.appLayout?.qLocaleInfo ?? {};\n const data = this._dataPaths.map((path) => ({\n type: 'q',\n key: path,\n config: {\n localeInfo,\n },\n data: getValue(layout, path.replace(/\\//g, '.')),\n }));\n if (this.colorService) {\n data.push(...this.colorService.getData());\n }\n\n this.chartInstance.update({\n data,\n settings,\n partialData: isPartialData,\n });\n\n const STATE_DATA_UPDATED = 2;\n this.picassoElement.setAttribute('data-state', STATE_DATA_UPDATED); // For integration test\n },\n\n destroy() {\n this._destroyed = true;\n this.off();\n this.chartInstance.destroy();\n },\n\n getViewState() {\n return {};\n },\n\n isLassoDisabled() {\n return true;\n },\n\n setSnapshotData(snapshotLayout) {\n if (!snapshotLayout.snapshotData) {\n snapshotLayout.snapshotData = {};\n }\n snapshotLayout.snapshotData.content = {\n // eslint-disable-line no-param-reassign\n chartData: {},\n size: {\n w: this.$element.width(),\n h: this.$element.height(),\n },\n };\n },\n\n getDisclaimerAttributes(layout) {\n return {\n data: layout,\n };\n },\n});\n\nexport default ChartView;\n","/**\n * Generate a 32 bit integer hash code from a string\n */\nexport default function hashFromString(str) {\n let hash = 0;\n\n if (!str || !str.length) {\n return hash;\n }\n\n for (let i = 0; i < str.length; i++) {\n const chr = str.charCodeAt(i);\n /* eslint-disable no-bitwise */\n hash = (hash << 5) - hash + chr;\n hash &= hash;\n /* eslint-enable no-bitwise */\n }\n return hash;\n}\n","import hashFromString from '../../../extra/hash-from-string';\n\nconst hash = {\n generateHash,\n updateHash,\n};\n\nexport default hash;\n\n/**\n * Implementation details\n */\n\nfunction generateHash(hashData) {\n return hashFromString(JSON.stringify(hashData));\n}\n\nfunction updateHash(properties, hashData) {\n if (!properties.qUndoExclude) {\n properties.qUndoExclude = {};\n }\n\n properties.qUndoExclude.hashCode = hash.generateHash(hashData);\n}\n","import { getValue } from 'qlik-chart-modules';\n\nconst hashBuilder = {\n getDefaultHashDataForHyperCube,\n};\n\nexport default hashBuilder;\n\n/**\n * Implementation details\n */\n\nfunction getDefaultHashDataForHyperCube(hyperCubeDef, hyperCube, app) {\n return getMeasureExpressions(hyperCubeDef, app).then((measureExpressions) => ({\n drillLevel: getDrillIndices(hyperCube),\n dimensionExpressions: getDimensionExpressions(hyperCube),\n measureExpressions,\n }));\n}\n\nfunction getMeasureExpressions(hyperCubeDef, app) {\n const dfds = [];\n\n if (!hyperCubeDef.qMeasures) {\n return Promise.resolve(dfds);\n }\n\n hyperCubeDef.qMeasures.forEach((measure) => {\n if (measure.qLibraryId) {\n dfds.push(getMeasureDataFromLibraryItem(measure.qLibraryId, app));\n } else {\n dfds.push(Promise.resolve());\n }\n });\n\n return Promise.all(dfds);\n}\n\nfunction getMeasureDataFromLibraryItem(libraryId, app) {\n return app.getMeasure(libraryId).then((item) => item.getProperties().then((props) => props.qMeasure.qDef));\n}\n\nfunction getDimensionExpressions(hyperCube) {\n return hyperCube.qDimensionInfo.map((dimensionInfo) => dimensionInfo.qGroupFieldDefs);\n}\n\nfunction getDrillIndices(hyperCube) {\n const dimensions = getDimensions(hyperCube);\n return dimensions.map((dim) => dim.qGroupPos);\n}\n\nfunction getDimensions(hyperCube) {\n return getValue(hyperCube, 'qDimensionInfo', []);\n}\n","/* eslint-disable no-restricted-syntax */\nimport originalExtend from 'extend';\n\nconst JSONPatch = {};\n\nconst extend = originalExtend.bind(null, true);\nfunction isObject(v) {\n return v != null && !Array.isArray(v) && typeof v === 'object';\n}\nconst isArray = Array.isArray;\n\nconst isUndef = function (v) {\n return typeof v === 'undefined';\n};\n\nconst isFunction = function (v) {\n return typeof v === 'function';\n};\n\n/**\n * Generate an exact duplicate (with no references) of a specific value.\n *\n * @private\n * @param {Object} The value to duplicate\n * @returns {Object} a unique, duplicated value\n */\nfunction generateValue(val) {\n if (val) {\n val = extend({}, { val }).val;\n }\n return val;\n}\n\n/**\n * An additional type checker used to determine if the property is of internal\n * use or not a type that can be translated into JSON (like functions).\n *\n * @private\n * @param {Object} obj The object which has the property to check\n * @param {String} The property name to check\n * @returns {Boolean} Whether the property is deemed special or not\n */\nfunction isSpecialProperty(obj, key) {\n return isFunction(obj[key]) || key.substring(0, 2) === '$$' || key.substring(0, 1) === '_';\n}\n\n/**\n * Finds the parent object from a JSON-Pointer (\"/foo/bar/baz\" = \"bar\" is \"baz\" parent),\n * also creates the object structure needed.\n *\n * @private\n * @param {Object} data The root object to traverse through\n * @param {String} The JSON-Pointer string to use when traversing\n * @returns {Object} The parent object\n */\nfunction getParent(data, str) {\n const seperator = '/';\n const parts = str.substring(1).split(seperator).slice(0, -1);\n let numPart;\n\n parts.forEach((part, i) => {\n if (i === parts.length) {\n return;\n }\n numPart = +part;\n data[numPart || part] = isUndef(data[numPart || part]) ? (!Number.isNaN(+numPart) ? [] : {}) : data[part];\n data = data[numPart || part];\n });\n\n return data;\n}\n\n/**\n * Cleans an object of all its properties, unless they're deemed special or\n * cannot be removed by configuration.\n *\n * @private\n * @param {Object} obj The object to clean\n */\nfunction emptyObject(obj) {\n Object.keys(obj).forEach((key) => {\n const config = Object.getOwnPropertyDescriptor(obj, key);\n\n if (config.configurable && !isSpecialProperty(obj, key)) {\n delete obj[key];\n }\n });\n}\n\n/**\n * Compare an object with another, could be object, array, number, string, bool.\n *\n * @param {Object} a The first object to compare\n * @param {Object} b The second object to compare\n * @returns {Boolean} Whether the objects are identical\n */\nfunction compare(a, b) {\n if (isObject(a) && isObject(b)) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n for (const key of Object.keys(a)) {\n if (!compare(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0, l = a.length; i < l; i++) {\n if (!compare(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return a === b;\n}\n\n/**\n * Generates patches by comparing two arrays.\n *\n * @private\n * @param {Array} oldA The old (original) array, which will be patched\n * @param {Array} newA The new array, which will be used to compare against\n * @returns {Array} An array of patches (if any)\n */\nfunction patchArray(original, newA, basePath) {\n let patches = [];\n const oldA = original.slice();\n let i;\n let l;\n let tmpIdx = -1;\n\n function findIndex(a, id, idx) {\n if (a[idx] && isUndef(a[idx].qInfo)) {\n return null;\n }\n if (a[idx] && a[idx].qInfo.qId === id) {\n // shortcut if identical\n return idx;\n }\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] && a[i].qInfo.qId === id) {\n return i;\n }\n }\n return -1;\n }\n\n if (compare(newA, oldA)) {\n // array is unchanged\n return patches;\n }\n\n if (newA[0] === null || (!isUndef(newA[0]) && isUndef(newA[0].qInfo))) {\n // we cannot create patches without unique identifiers, replace array...\n patches.push({\n op: 'replace',\n path: basePath,\n value: newA,\n });\n return patches;\n }\n\n for (i = oldA.length - 1; i >= 0; --i) {\n tmpIdx = findIndex(newA, oldA[i] && oldA[i].qInfo && oldA[i].qInfo.qId, i);\n if (tmpIdx === -1) {\n patches.push({\n op: 'remove',\n path: `${basePath}/${i}`,\n });\n oldA.splice(i, 1);\n } else {\n patches = patches.concat(JSONPatch.generate(oldA[i], newA[tmpIdx], `${basePath}/${i}`));\n }\n }\n\n for (i = 0, l = newA.length; i < l; ++i) {\n tmpIdx = findIndex(oldA, newA[i] && newA[i].qInfo && newA[i].qInfo.qId);\n if (tmpIdx === -1) {\n patches.push({\n op: 'add',\n path: `${basePath}/${i}`,\n value: newA[i],\n });\n oldA.splice(i, 0, newA[i]);\n } else if (tmpIdx !== i) {\n patches.push({\n op: 'move',\n path: `${basePath}/${i}`,\n from: `${basePath}/${tmpIdx}`,\n });\n oldA.splice(i, 0, oldA.splice(tmpIdx, 1)[0]);\n }\n }\n return patches;\n}\n\n/**\n * Generate an array of JSON-Patch:es following the JSON-Patch Specification Draft.\n *\n * See [specification draft](http://tools.ietf.org/html/draft-ietf-appsawg-json-patch-10)\n *\n * Does NOT currently generate patches for arrays (will replace them)\n *\n * @param {Object} original The object to patch to\n * @param {Object} newData The object to patch from\n * @param {String} [basePath] The base path to use when generating the paths for the patches (normally not used)\n * @returns {Array} An array of patches\n */\nJSONPatch.generate = function (original, newData, basePath) {\n basePath = basePath || '';\n let patches = [];\n\n Object.keys(newData).forEach((key) => {\n const val = generateValue(newData[key]);\n const oldVal = original[key];\n const tmpPath = `${basePath}/${key}`;\n\n if (compare(val, oldVal) || isSpecialProperty(newData, key)) {\n return;\n }\n if (isUndef(oldVal)) {\n // property does not previously exist\n patches.push({\n op: 'add',\n path: tmpPath,\n value: val,\n });\n } else if (isObject(val) && isObject(oldVal)) {\n // we need to generate sub-patches for this, since it already exist\n patches = patches.concat(JSONPatch.generate(oldVal, val, tmpPath));\n } else if (isArray(val) && isArray(oldVal)) {\n patches = patches.concat(patchArray(oldVal, val, tmpPath));\n } else {\n // it's a simple property (bool, string, number)\n patches.push({\n op: 'replace',\n path: `${basePath}/${key}`,\n value: val,\n });\n }\n });\n\n Object.keys(original).forEach((key) => {\n if (isUndef(newData[key]) && !isSpecialProperty(original, key)) {\n // this property does not exist anymore\n patches.push({\n op: 'remove',\n path: `${basePath}/${key}`,\n });\n }\n });\n\n return patches;\n};\n\n/**\n * Apply a list of patches to an object.\n *\n * @param {Object} original The object to patch\n * @param {Array} patches The list of patches to apply\n */\nJSONPatch.apply = function (original, patches) {\n patches.forEach((patch) => {\n const parent = getParent(original, patch.path);\n let key = patch.path.split('/').splice(-1)[0];\n const target = key && Number.isNaN(+key) ? parent[key] : parent[+key] || parent;\n const from = patch.from ? patch.from.split('/').splice(-1)[0] : null;\n\n if (patch.op === 'add' || patch.op === 'replace') {\n if (isArray(parent)) {\n // trust indexes from patches, so don't replace the index if it's an add\n if (key === '-') {\n key = parent.length;\n }\n parent.splice(+key, patch.op === 'add' ? 0 : 1, patch.value);\n } else if (isArray(target) && isArray(patch.value)) {\n const newValues = patch.value.slice();\n // keep array reference if possible...\n target.length = 0;\n target.push.apply(target, newValues);\n } else if (isObject(target) && isObject(patch.value)) {\n // keep object reference if possible...\n emptyObject(target);\n extend(target, patch.value);\n } else {\n // simple value\n parent[key] = patch.value;\n }\n } else if (patch.op === 'move') {\n const oldParent = getParent(original, patch.from);\n if (isArray(parent)) {\n parent.splice(+key, 0, oldParent.splice(+from, 1)[0]);\n } else {\n parent[key] = oldParent[from];\n delete oldParent[from];\n }\n } else if (patch.op === 'remove') {\n if (isArray(parent)) {\n parent.splice(+key, 1);\n } else {\n delete parent[key];\n }\n }\n });\n};\n\n/**\n * Deep clone an object.\n *\n * @param {Object} obj The object to clone\n * @returns {Object} A new object identical to the `obj`\n */\nJSONPatch.clone = function (obj) {\n return extend({}, obj);\n};\n\n/**\n * Creates a JSON-patch.\n *\n * @param {String} op The operation of the patch. Available values: \"add\", \"remove\", \"move\"\n * @param {Object} [val] The value to set the `path` to. If `op` is `move`, `val` is the \"from JSON-path\" path\n * @param {String} path The JSON-path for the property to change (e.g. \"/qHyperCubeDef/columnOrder\")\n * @returns {Object} A patch following the JSON-patch specification\n */\nJSONPatch.createPatch = function (op, val, path) {\n const patch = {\n op: op.toLowerCase(),\n path,\n };\n if (patch.op === 'move') {\n patch.from = val;\n } else if (typeof val !== 'undefined') {\n patch.value = val;\n }\n return patch;\n};\n\n/**\n * Apply the differences of two objects (keeping references if possible).\n * Identical to running `JSONPatch.apply(original, JSONPatch.generate(original, newData));`\n *\n * @param {Object} original The object to update/patch\n * @param {Object} newData the object to diff against\n *\n * @example\n * var obj1 = { foo: [1,2,3], bar: { baz: true, qux: 1 } };\n * var obj2 = { foo: [4,5,6], bar: { baz: false } };\n * JSONPatch.updateObject(obj1, obj2);\n * // => { foo: [4,5,6], bar: { baz: false } };\n */\nJSONPatch.updateObject = function (original, newData) {\n if (!Object.keys(original).length) {\n extend(original, newData);\n return;\n }\n JSONPatch.apply(original, JSONPatch.generate(original, newData));\n};\n\nexport default JSONPatch;\n","import extend from 'extend';\nimport JSONPatch from './json-patch';\n\nclass SoftPropertyHandler {\n constructor(model) {\n this._model = model;\n }\n\n setModel(model) {\n this._model = model;\n }\n\n saveSoftProperties(prevEffectiveProperties, effectiveProperties) {\n if (!this._model) {\n return Promise.resolve(false);\n }\n\n let patches = JSONPatch.generate(prevEffectiveProperties, effectiveProperties);\n extend(true, prevEffectiveProperties, effectiveProperties);\n\n if (patches && patches.length) {\n patches = patches.map((p) => ({\n qOp: p.op,\n qValue: JSON.stringify(p.value),\n qPath: p.path,\n }));\n\n return this._model.applyPatches(patches, true).then(() => true);\n }\n return Promise.resolve(false);\n }\n\n async mergeSoftPatches() {\n if (!this._model) {\n return;\n }\n\n const propertiesPromise = this._model.getProperties();\n const effectivePromise = this._model.getEffectiveProperties();\n\n const properties = await propertiesPromise;\n const effective = await effectivePromise;\n\n if (properties.qExtendsId) {\n return;\n }\n const patches = JSONPatch.generate(properties, effective);\n JSONPatch.apply(properties, patches);\n\n const self = this;\n self._model.setProperties(properties).then(() => {\n self._model.clearSoftPatches();\n });\n }\n}\n\nexport default SoftPropertyHandler;\n","export default {\n canModifyHardProperties,\n};\n\nfunction canModifyHardProperties(layout) {\n if (layout.qHasSoftPatches || layout.qExtendsId) {\n return false;\n }\n if (layout.permissions) {\n return layout.permissions.update;\n }\n return layout.qMeta.privileges.indexOf('update') !== -1;\n}\n","import SoftPropertyHandler from '../../../extra/soft-property-handler';\nimport hardPropertiesChecker from '../../../extra/hard-properties-checker';\n\nexport default {\n saveDerivedProperties,\n};\n\n/**\n * Implementation details\n */\n\nfunction saveDerivedProperties(model, layout, properties, prevProperties) {\n // Can't set new properties on a master item (SUI-1363)\n\n if (hardPropertiesChecker.canModifyHardProperties(layout)) {\n return model.setProperties(properties);\n }\n\n const softPropertyHandler = new SoftPropertyHandler(model);\n return softPropertyHandler.saveSoftProperties(prevProperties, properties);\n}\n","export default {\n validate,\n};\n\n/**\n * Implementation details\n */\n\nfunction validate(settings) {\n if (\n !settings ||\n !settings.layout ||\n !settings.properties ||\n !settings.model ||\n !settings.hashData ||\n !settings.generateDerivedProperties\n ) {\n throw Error('Derived-properties: Missing input');\n }\n}\n","import extend from 'extend';\nimport Hash from './hash/hash';\nimport HashBuilder from './hash/hash-builder';\nimport Save from './save/save';\nimport InputValidator from './input-validator/input-validator';\n\nfunction DerivedProperties() {\n this._generationInProgress = false;\n}\n\nDerivedProperties.prototype.isDerivedUpToDate = isDerivedUpToDate;\nDerivedProperties.prototype.updateDerivedProperties = updateDerivedProperties;\nDerivedProperties.prototype.addDefaultHyperCubeHash = addDefaultHyperCubeHash;\n\nexport default DerivedProperties;\n\nfunction isDerivedUpToDate(settings) {\n InputValidator.validate(settings);\n\n const properties = settings.properties;\n const hash = Hash.generateHash(settings.hashData);\n\n if (!properties.qUndoExclude || properties.qUndoExclude.hashCode !== hash) {\n return false;\n }\n\n return true;\n}\n\n// Returns a boolean flag if properties actually are being updated or not\nfunction updateDerivedProperties(settings) {\n InputValidator.validate(settings);\n\n if (this._generationInProgress) {\n return Promise.resolve(true);\n }\n\n if (isDerivedUpToDate(settings)) {\n const layoutIsUpdated =\n settings.layout.qUndoExclude &&\n settings.layout.qUndoExclude.hashCode === settings.properties.qUndoExclude.hashCode;\n return Promise.resolve(!layoutIsUpdated);\n }\n\n const self = this;\n const model = settings.model;\n const layout = settings.layout;\n const properties = extend(true, {}, settings.properties);\n const prevProperties = extend(true, {}, properties);\n\n this._generationInProgress = true;\n\n Hash.updateHash(properties, settings.hashData);\n\n return settings.generateDerivedProperties(layout, properties).then(() =>\n Save.saveDerivedProperties(model, layout, properties, prevProperties).then(() => {\n self._generationInProgress = false;\n\n return Promise.resolve(true);\n })\n );\n}\n\nfunction addDefaultHyperCubeHash(hyperCubeDef, hyperCube, app, settings) {\n return HashBuilder.getDefaultHashDataForHyperCube(hyperCubeDef, hyperCube, app).then((defaultSettings) =>\n extend(true, settings, defaultSettings)\n );\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/* eslint no-nested-ternary: 0 */\n\nimport extend from 'extend';\n\nexport function getFieldAccessor(field, page, deps) {\n if (!field) {\n return -1;\n }\n const cache = deps.cache;\n const origin = field.origin ? field.origin() : null;\n if (origin) {\n field = origin;\n }\n let fieldIdx = cache.fields.indexOf(field);\n let attrIdx = -1;\n let attrDimIdx = -1;\n if (fieldIdx === -1) {\n for (let i = 0; i < cache.wrappedFields.length; i++) {\n attrDimIdx = cache.wrappedFields[i].attrDims.map((v) => v.instance).indexOf(field);\n attrIdx = cache.wrappedFields[i].attrExps.map((v) => v.instance).indexOf(field);\n if (attrDimIdx !== -1 || attrIdx !== -1) {\n fieldIdx = i;\n break;\n }\n }\n }\n\n fieldIdx -= page.qArea.qLeft;\n if (fieldIdx < 0 || fieldIdx >= page.qArea.qWidth) {\n // throw new Error('Field out of range');\n return -1;\n }\n\n if (attrDimIdx >= 0) {\n return (row) => row[fieldIdx].qAttrDims.qValues[attrDimIdx];\n }\n if (attrIdx >= 0) {\n return (row) => row[fieldIdx].qAttrExps.qValues[attrIdx];\n }\n\n return (row) => row[fieldIdx];\n}\n\n// TODO - handle 'other' value\n// const specialTextValues = {\n// '-3': (meta) => {\n// if ('othersLabel' in meta) {\n// return meta.othersLabel;\n// }\n// return '';\n// }\n// };\n\nfunction datumExtract(propCfg, cell, { key }) {\n const datum = {\n value:\n typeof propCfg.value === 'function'\n ? propCfg.value(cell)\n : typeof propCfg.value !== 'undefined'\n ? propCfg.value\n : cell, // eslint-disable-line no-nested-ternary\n };\n\n datum.label =\n typeof propCfg.label === 'function'\n ? propCfg.label(cell)\n : typeof propCfg.label !== 'undefined'\n ? String(propCfg.label)\n : String(datum.value); // eslint-disable-line no-nested-ternary\n\n if (propCfg.field) {\n datum.source = {\n key,\n field: propCfg.field.key(),\n };\n }\n\n return datum;\n}\n\nfunction cellToValue({ cache, f, mainCell, p, prop, page, rowIdx, row, sourceKey, target, targetProp }) {\n let propCell = mainCell;\n if (p.field && p.field !== f) {\n const propCellFn = getFieldAccessor(p.field, page, { cache });\n if (propCellFn === -1) {\n return;\n }\n propCell = extend({ qRow: rowIdx }, propCellFn(row));\n }\n target[targetProp] = datumExtract(p, propCell, { key: sourceKey }, prop);\n}\n\nexport default function extract(config, dataset, cache, util) {\n const cfgs = Array.isArray(config) ? config : [config];\n let dataItems = [];\n for (let i = 0; i < cfgs.length; i++) {\n if (typeof cfgs[i].field !== 'undefined') {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const f = typeof cfgs[i].field === 'object' ? cfgs[i].field : dataset.field(cfgs[i].field);\n const { props, main } = util.normalizeConfig(cfgs[i], dataset);\n const propsArr = Object.keys(props);\n\n const track = !!cfgs[i].trackBy;\n const trackType = typeof cfgs[i].trackBy;\n const tracker = {};\n const trackedItems = [];\n const items = [];\n\n for (let j = 0; j < cube.qDataPages.length; j++) {\n const fn = getFieldAccessor(f, cube.qDataPages[j], { cache });\n if (fn === -1) {\n continue;\n }\n for (let k = 0; k < cube.qDataPages[j].qMatrix.length; k++) {\n const rowIdx = cube.qDataPages[j].qArea.qTop + k;\n const mainCell = extend({ qRow: rowIdx }, fn(cube.qDataPages[j].qMatrix[k]));\n const ret = datumExtract(main, mainCell, { key: sourceKey });\n const exclude = main.filter && !main.filter(mainCell);\n if (exclude) {\n continue;\n }\n\n for (let l = 0; l < propsArr.length; l++) {\n const p = props[propsArr[l]];\n let arr = p.fields || [p];\n\n if (p.fields) {\n ret[propsArr[l]] = [];\n }\n\n // loop through all props that need to be mapped and\n // assign 'value' and 'source' to each property\n for (let m = 0; m < arr.length; m++) {\n cellToValue({\n cache,\n f,\n mainCell,\n p: arr[m],\n prop: propsArr[l],\n props,\n page: cube.qDataPages[j],\n rowIdx,\n row: cube.qDataPages[j].qMatrix[k],\n sourceKey,\n target: p.fields ? ret[propsArr[l]] : ret,\n targetProp: p.fields ? m : propsArr[l],\n });\n }\n\n if (p.fields) {\n const fieldValues = ret[propsArr[l]].map((v) => v.value);\n const fieldLabels = ret[propsArr[l]].map((v) => v.label);\n ret[propsArr[l]] = {\n value:\n typeof p.value === 'function'\n ? p.value(fieldValues)\n : typeof p.value !== 'undefined'\n ? p.value\n : fieldValues,\n label:\n typeof p.label === 'function'\n ? p.label(fieldLabels)\n : typeof p.label !== 'undefined'\n ? String(p.label)\n : String(ret[propsArr[l]].value),\n };\n }\n }\n\n // collect items based on the trackBy value\n // items with the same trackBy value are placed in an array and reduced later\n if (track) {\n util.track({\n cfg: cfgs[i],\n itemData: mainCell,\n obj: ret,\n target: trackedItems,\n tracker,\n trackType,\n });\n }\n\n items.push(ret);\n }\n }\n\n // reduce if items have been grouped\n const tmp = track\n ? util.collect(trackedItems, {\n main,\n propsArr,\n props,\n })\n : items;\n dataItems = [...dataItems, ...tmp];\n }\n }\n return dataItems;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","/**\n * Resolves the value at the given JSON path\n * @private\n * @param {String} path [description]\n * @param {Object} obj [description]\n * @return {Object} [description]\n *\n * @example\n * let path = \"/path/to/paradise\";\n * let obj = {\n * path: {\n * to: { paradise: \"heaven\"},\n * from: {...}\n * }\n * };\n * resolve( path, obj ); // \"heaven\"\n */\nexport default function resolve(path, obj) {\n if (path.charAt(0) === '/') {\n path = path.substring(1);\n }\n const arr = path.split('/');\n let subpath;\n let container = obj;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === '*' && Array.isArray(container)) {\n const carr = [];\n subpath = arr.slice(i + 1).join('/');\n for (let c = 0; c < container.length; c++) {\n let v = resolve(subpath, container[c]);\n // v.forEach(_ => _._parent = container[c]);\n if (Array.isArray(v)) {\n carr.push(...v);\n } else {\n carr.push(v);\n }\n }\n return carr;\n // return container.map(v => resolve(arr.slice(i + 1).join('/'), v));\n }\n if (!arr[i] && Array.isArray(container)) {\n const carr = new Array(container.length);\n subpath = arr.slice(i + 1).join('/');\n for (let c = 0; c < container.length; c++) {\n carr[c] = resolve(subpath, container[c]);\n }\n return carr;\n // return container.map(v => resolve(arr.slice(i + 1).join('/'), v));\n }\n if (arr[i] in container) {\n container = container[arr[i]];\n }\n }\n\n return container;\n}\n","function flattenTree(children, steps, arrIndexAtTargetDepth) {\n const arr = [];\n if (!children || !children.length) {\n return arr;\n }\n if (steps <= 0) {\n const nodes = arrIndexAtTargetDepth >= 0 ? [children[arrIndexAtTargetDepth]] : children;\n arr.push(...nodes);\n } else {\n for (let i = 0; i < children.length; i++) {\n if (children[i].children && children[i].children.length) {\n arr.push(...flattenTree(children[i].children, steps - 1, arrIndexAtTargetDepth));\n }\n }\n }\n return arr;\n}\n\nexport function treeAccessor(sourceDepth, targetDepth, arrIndexAtTargetDepth) {\n if (sourceDepth === targetDepth) {\n return (d) => d;\n }\n if (sourceDepth > targetDepth) {\n // traverse upwards\n const steps = Math.max(0, Math.min(100, sourceDepth - targetDepth));\n return (node) => {\n let n = node;\n for (let i = 0; i < steps; ++i) {\n n = n.parent;\n }\n return n;\n };\n }\n if (targetDepth > sourceDepth) {\n // flatten descendants\n const steps = Math.max(0, Math.min(100, targetDepth - sourceDepth));\n return (node) => flattenTree(node.children, steps - 1, arrIndexAtTargetDepth);\n }\n return false;\n}\n\nexport function findField(query, { cache }) {\n if (typeof query === 'number') {\n return cache.fields[query];\n }\n\n const allFields = cache.allFields;\n if (typeof query === 'function') {\n for (let i = 0; i < allFields.length; i++) {\n if (query(allFields[i])) {\n return allFields[i];\n }\n }\n return false;\n }\n if (typeof query === 'string') {\n for (let i = 0; i < allFields.length; i++) {\n if (allFields[i].key() === query || allFields[i].title() === query) {\n return allFields[i];\n }\n }\n } else if (query && allFields.indexOf(query) !== -1) {\n // assume 'query' is a field instance\n return query;\n }\n\n throw Error(`Field not found: ${query}`);\n}\n","/* eslint no-nested-ternary: 0 */\n\nimport { hierarchy, stratify } from 'd3-hierarchy';\n\nimport picker from '../json-path-resolver';\n\nimport { treeAccessor } from './util';\n\nconst DIM_RX = /^qDimensionInfo(?:\\/(\\d+))?/;\nconst M_RX = /^\\/?qMeasureInfo\\/(\\d+)/;\nconst ATTR_EXPR_RX = /\\/qAttrExprInfo\\/(\\d+)/;\nconst ATTR_DIM_RX = /\\/qAttrDimInfo\\/(\\d+)/;\n\nfunction getColumnOrder(dataset) {\n const qColumnOrder = dataset.raw().qColumnOrder;\n const fields = dataset.fields();\n\n return qColumnOrder && qColumnOrder.length === fields.length ? qColumnOrder : fields.map((f, i) => i);\n}\n\nfunction getDimensionColumnOrder(cube) {\n const order =\n cube.qColumnOrder && cube.qColumnOrder.length ? cube.qColumnOrder : cube.qDimensionInfo.map((d, ii) => ii);\n\n return order.filter((ii) => ii < cube.qDimensionInfo.length);\n}\n\nexport function getFieldDepth(field, { cube }) {\n if (!field) {\n return -1;\n }\n\n let key = field.origin && field.origin() ? field.origin().key() : field.key();\n let isFieldDimension = false;\n let fieldIdx = -1; // cache.fields.indexOf(field);\n let attrIdx = -1;\n let attrDimIdx = -1;\n let fieldDepth = -1;\n let pseudoMeasureIndex = -1;\n let measureIdx = -1;\n let remainder = key;\n\n const treeOrder = cube.qEffectiveInterColumnSortOrder;\n const columnOrder = getDimensionColumnOrder(cube);\n\n if (DIM_RX.test(remainder)) {\n isFieldDimension = true;\n fieldIdx = +DIM_RX.exec(remainder)[1];\n remainder = key.replace(DIM_RX, '');\n }\n\n if (M_RX.test(remainder)) {\n if (cube.qMode === 'K') {\n pseudoMeasureIndex = +M_RX.exec(remainder)[1];\n } else if (treeOrder && treeOrder.indexOf(-1) !== -1) {\n pseudoMeasureIndex = +M_RX.exec(remainder)[1];\n measureIdx = 0;\n } else {\n measureIdx = +M_RX.exec(remainder)[1];\n }\n remainder = remainder.replace(M_RX, '');\n }\n\n if (remainder) {\n if (ATTR_DIM_RX.exec(remainder)) {\n attrDimIdx = +ATTR_DIM_RX.exec(remainder)[1];\n } else if (ATTR_EXPR_RX.exec(remainder)) {\n attrIdx = +ATTR_EXPR_RX.exec(remainder)[1];\n }\n }\n\n if (isFieldDimension) {\n if (cube.qMode === 'S') {\n fieldDepth = columnOrder[fieldIdx];\n } else {\n fieldDepth = treeOrder ? treeOrder.indexOf(fieldIdx) : fieldIdx;\n }\n } else if (treeOrder && treeOrder.indexOf(-1) !== -1) {\n // if pseudo dimension exists in sort order\n fieldDepth = treeOrder.indexOf(-1); // depth of pesudodimension\n } else {\n // assume measure is at the bottom of the tree\n fieldDepth = cube.qDimensionInfo.length - (cube.qMode === 'K' ? 0 : 1);\n }\n\n return {\n fieldDepth: fieldDepth + 1, // +1 due to root node\n pseudoMeasureIndex,\n measureIdx,\n attrDimIdx,\n attrIdx,\n };\n}\n\nfunction getFieldAccessor(sourceDepthObject, targetDepthObject) {\n let nodeFn = treeAccessor(\n sourceDepthObject.fieldDepth,\n targetDepthObject.fieldDepth,\n targetDepthObject.pseudoMeasureIndex\n );\n let valueFn;\n\n if (targetDepthObject.measureIdx >= 0) {\n valueFn = (node) => node.data.qValues[targetDepthObject.measureIdx];\n } else {\n valueFn = (node) => node.data;\n }\n let attrFn;\n\n if (targetDepthObject.attrDimIdx >= 0) {\n attrFn = (data) => data?.qAttrDims?.qValues[targetDepthObject.attrDimIdx];\n } else if (targetDepthObject.attrIdx >= 0) {\n attrFn = (data) => data?.qAttrExps?.qValues[targetDepthObject.attrIdx];\n }\n\n return {\n nodeFn,\n attrFn,\n valueFn,\n };\n}\n\nfunction datumExtract(propCfg, cell, { key }) {\n const datum = {\n value:\n typeof propCfg.value === 'function'\n ? propCfg.value(cell)\n : typeof propCfg.value !== 'undefined'\n ? propCfg.value\n : cell, // eslint-disable-line no-nested-ternary\n };\n\n datum.label =\n typeof propCfg.label === 'function'\n ? propCfg.label(cell)\n : typeof propCfg.label !== 'undefined'\n ? String(propCfg.label)\n : String(datum.value); // eslint-disable-line no-nested-ternary\n\n if (propCfg.field) {\n datum.source = {\n key,\n field: propCfg.field.key(),\n };\n }\n\n return datum;\n}\n\nfunction doIt({ propsArr, props, item, itemData, ret, sourceKey }) {\n for (let i = 0; i < propsArr.length; i++) {\n const pCfg = props[propsArr[i]];\n const arr = pCfg.fields || [pCfg];\n let coll;\n let collStr;\n if (pCfg.fields) {\n coll = [];\n collStr = [];\n }\n\n for (let j = 0; j < arr.length; j++) {\n const p = arr[j];\n let fn;\n let str;\n let value;\n let nodes;\n let cells;\n let label;\n if (p.type === 'primitive') {\n value = p.value;\n label = String(p.value);\n } else {\n if (typeof p.value === 'function') {\n fn = (v) => p.value(v, item);\n }\n if (typeof p.label === 'function') {\n str = (v) => p.label(v, item);\n }\n if (p.accessor) {\n nodes = p.accessor(item);\n if (Array.isArray(nodes)) {\n // propably descendants\n cells = nodes.map(p.valueAccessor);\n if (p.attrAccessor) {\n cells = cells.map(p.attrAccessor);\n }\n if (fn) {\n value = cells.map(fn);\n fn = null;\n }\n if (str) {\n label = cells.map(str);\n str = null;\n }\n value = p.reduce ? p.reduce(value) : value;\n label = p.reduceLabel ? p.reduceLabel(label, value) : String(value);\n } else {\n value = p.attrAccessor ? p.attrAccessor(p.valueAccessor(nodes)) : p.valueAccessor(nodes);\n label = value;\n }\n } else {\n value = itemData;\n label = itemData;\n }\n }\n if (pCfg.fields) {\n const v = fn ? fn(value) : value;\n coll.push(v);\n collStr.push(str && label != null ? str(label) : label != null ? label : String(v));\n } else {\n const v = fn ? fn(value) : value;\n ret[propsArr[i]] = {\n value: v,\n label: str ? str(label) : label != null ? label : String(v),\n };\n if (p.field) {\n ret[propsArr[i]].source = { field: p.field.key(), key: sourceKey };\n }\n }\n }\n if (coll) {\n ret[propsArr[i]] = {\n value: typeof pCfg.value === 'function' ? pCfg.value(coll, item) : coll,\n label: typeof pCfg.label === 'function' ? pCfg.label(collStr, item) : collStr,\n };\n }\n }\n}\n\nconst getHierarchy = (cube, cache, config) => {\n const rootPath = cube.qMode === 'K' ? '/qStackedDataPages/*/qData' : '/qTreeDataPages/*';\n const childNodes = cube.qMode === 'K' ? 'qSubNodes' : 'qNodes';\n const root = picker(rootPath, cube);\n if (!root || !root[0]) {\n return null;\n }\n cache.tree = hierarchy(root[0], config.children || ((node) => node[childNodes]));\n return cache.tree;\n};\n\nfunction getHierarchyForSMode(dataset) {\n const matrix = dataset.raw().qDataPages.length ? dataset.raw().qDataPages[0].qMatrix : [];\n const order = getColumnOrder(dataset);\n const fields = dataset.fields();\n const dimensions = dataset\n .fields()\n .filter((f) => f.type() === 'dimension')\n .map((f) => order.indexOf(fields.indexOf(f)));\n const measures = dataset\n .fields()\n .filter((f) => f.type() === 'measure')\n .map((f) => order.indexOf(fields.indexOf(f)));\n\n const root = {\n __id: '__root',\n qValues: [],\n };\n\n const keys = {\n __root: root,\n };\n\n for (let r = 0; r < matrix.length; r++) {\n const row = matrix[r];\n let id = '__root';\n // let parent = root;\n let isNew = false;\n for (let c = 0; c < dimensions.length; c++) {\n const cell = row[dimensions[c]];\n const key = `${id}__${cell.qElemNumber ?? cell.qElemNo}`;\n if (!keys[key]) {\n keys[key] = {\n __id: key,\n __parent: id,\n qValues: [],\n ...cell,\n };\n isNew = true;\n }\n id = key;\n }\n if (isNew) {\n for (let c = 0; c < measures.length; c++) {\n const cell = row[measures[c]];\n keys[id].qValues.push(cell);\n }\n }\n }\n\n const nodes = Object.keys(keys).map((key) => keys[key]);\n\n const h = stratify()\n .id((d) => d.__id)\n .parentId((d) => d.__parent)(nodes);\n\n return h;\n}\n\nconst attachPropsAccessors = ({ propsArr, props, cube, cache, itemDepthObject, f }) => {\n for (let i = 0; i < propsArr.length; i++) {\n const pCfg = props[propsArr[i]];\n const arr = pCfg.fields ? pCfg.fields : [pCfg];\n for (let j = 0; j < arr.length; j++) {\n const p = arr[j];\n if (p.field !== f) {\n const depthObject = getFieldDepth(p.field, { cube, cache });\n const accessors = getFieldAccessor(itemDepthObject, depthObject);\n p.accessor = accessors.nodeFn; // nodes accessor\n p.valueAccessor = accessors.valueFn; // cell accessor\n p.attrAccessor = accessors.attrFn; // attr cell accessor\n }\n }\n }\n};\n\nexport function augment(config = {}, dataset, cache, util) {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const h = cube.qMode === 'S' ? getHierarchyForSMode(dataset) : getHierarchy(cube, cache, config);\n if (!h) {\n return null;\n }\n\n const height = h.height;\n const propDefs = [];\n for (let i = 0; i <= height; i++) {\n let f = null;\n if (i > 0) {\n if (cube.qMode === 'S') {\n const order = getDimensionColumnOrder(cube);\n let idx = order[i - 1];\n f = cache.fields[idx];\n } else {\n let idx = cube.qEffectiveInterColumnSortOrder[i - 1];\n // if (idx === -1) { // pseudo\n // let childIdx = node.parent.children.indexOf(node);\n // idx = cube.qDimensionInfo.length + childIdx; // measure field\n // }\n if (i > cube.qEffectiveInterColumnSortOrder.length) {\n idx = cube.qDimensionInfo.length;\n }\n\n f = cache.fields[idx];\n }\n }\n\n const { props, main } = util.normalizeConfig({ ...config, field: f ? f.key() : undefined }, dataset);\n const propsArr = Object.keys(props);\n propDefs[i] = { propsArr, props, main };\n\n const itemDepthObject = f ? getFieldDepth(f, { cube, cache }) : { fieldDepth: 0 };\n\n attachPropsAccessors({\n propsArr,\n props,\n cube,\n cache,\n itemDepthObject,\n f,\n });\n }\n\n const replica = h.copy();\n const replicaDescendants = replica.descendants();\n const descendants = h.descendants();\n\n for (let i = 0; i < descendants.length; i++) {\n const propsArr = propDefs[descendants[i].depth].propsArr;\n const props = propDefs[descendants[i].depth].props;\n const main = propDefs[descendants[i].depth].main;\n\n const item = replicaDescendants[i];\n const itemData = item.data; // main.valueAccessor(currentOriginal);\n\n const ret = datumExtract(main, itemData, { key: sourceKey });\n doIt({\n propsArr,\n props,\n item,\n itemData,\n ret,\n sourceKey,\n isTree: true,\n });\n descendants[i].data = ret;\n }\n return h;\n}\n\nexport function extract(config, dataset, cache, util) {\n const cfgs = Array.isArray(config) ? config : [config];\n let dataItems = [];\n for (let g = 0; g < cfgs.length; g++) {\n if (typeof cfgs[g].field !== 'undefined') {\n const cube = dataset.raw();\n const sourceKey = dataset.key();\n const h = getHierarchy(cube, cache, config);\n if (!h) {\n continue;\n }\n\n const f = typeof cfgs[g].field === 'object' ? cfgs[g].field : dataset.field(cfgs[g].field);\n const { props, main } = util.normalizeConfig(cfgs[g], dataset);\n const propsArr = Object.keys(props);\n\n const itemDepthObject = getFieldDepth(f, { cube, cache });\n const { nodeFn, attrFn, valueFn } = getFieldAccessor({ fieldDepth: 0 }, itemDepthObject);\n\n attachPropsAccessors({\n propsArr,\n props,\n cube,\n cache,\n itemDepthObject,\n f,\n });\n\n const track = !!cfgs[g].trackBy;\n const trackType = typeof cfgs[g].trackBy;\n const tracker = {};\n const trackedItems = [];\n\n const items = nodeFn(cache.tree);\n const mapped = [];\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const itemData = attrFn ? attrFn(valueFn(item)) : valueFn(item);\n const exclude = main.filter && !main.filter(itemData);\n if (exclude) {\n continue;\n }\n const ret = datumExtract(main, itemData, { key: sourceKey });\n doIt({\n propsArr,\n props,\n item,\n itemData,\n ret,\n sourceKey,\n });\n // collect items based on the trackBy value\n // items with the same trackBy value are placed in an array and reduced later\n if (track) {\n util.track({\n cfg: cfgs[g],\n itemData,\n obj: ret,\n target: trackedItems,\n tracker,\n trackType,\n });\n }\n mapped.push(ret);\n }\n // reduce if items have been grouped\n const tmp = track\n ? util.collect(trackedItems, {\n main,\n propsArr,\n props,\n })\n : mapped;\n dataItems = [...dataItems, ...tmp];\n }\n }\n return dataItems;\n}\n","/*! javascript-number-formatter - v1.1.11 - http://mottie.github.com/javascript-number-formatter/ * © ecava */\n!function(a,b){\"function\"==typeof define&&define.amd?define([],b):\"object\"==typeof module?module.exports=b():a.format=b()}(this,function(){return function(a,b){\"use strict\";if(!a||isNaN(+b))return b;var c,d,e,f,g,h,i,j,k,l,m=a.length,n=a.search(/[0-9\\-\\+#]/),o=n>0?a.substring(0,n):\"\",p=a.split(\"\").reverse().join(\"\"),q=p.search(/[0-9\\-\\+#]/),r=m-q,s=a.substring(r,r+1),t=r+(\".\"===s||\",\"===s?1:0),u=q>0?a.substring(t,m):\"\";if(a=a.substring(n,t),b=\"-\"===a.charAt(0)?-b:+b,c=b<0?b=-b:0,d=a.match(/[^\\d\\-\\+#]/g),e=d&&d[d.length-1]||\".\",f=d&&d[1]&&d[0]||\",\",a=a.split(e),b=b.toFixed(a[1]&&a[1].length),b=+b+\"\",h=a[1]&&a[1].lastIndexOf(\"0\"),j=b.split(\".\"),(!j[1]||j[1]&&j[1].length<=h)&&(b=(+b).toFixed(h+1)),k=a[0].split(f),a[0]=k.join(\"\"),g=a[0]&&a[0].indexOf(\"0\"),g>-1)for(;j[0].length<a[0].length-g;)j[0]=\"0\"+j[0];else 0===+j[0]&&(j[0]=\"\");if(b=b.split(\".\"),b[0]=j[0],i=k[1]&&k[k.length-1].length){for(l=b[0],p=\"\",r=l.length%i,m=l.length,t=0;t<m;t++)p+=l.charAt(t),!((t-r+1)%i)&&t<m-i&&(p+=f);b[0]=p}return b[1]=a[1]&&b[1]?e+b[1]:\"\",d=b.join(\"\"),\"0\"!==d&&\"\"!==d||(c=!1),o+((c?\"-\":\"\")+d)+u}});","import formatter from 'number-format.js';\n\nfunction escapeRegExp(str) {\n return str.replace(/[-[\\]/{}()*+?.\\\\^$|]/g, '\\\\$&');\n}\n\nconst SIprefixes = {\n 3: 'k',\n 6: 'M',\n 9: 'G',\n 12: 'T',\n 15: 'P',\n 18: 'E',\n 21: 'Z',\n 24: 'Y',\n '-3': 'm',\n '-6': 'μ',\n '-9': 'n',\n '-12': 'p',\n '-15': 'f',\n '-18': 'a',\n '-21': 'z',\n '-24': 'y',\n },\n percentage = /%$/,\n // scientific = /e[\\+\\-][0-9]+/,\n radix = /^\\(r(0[2-9]|[12]\\d|3[0-6])\\)/i,\n oct = /^\\(oct\\)/i,\n dec = /^\\(dec\\)/i,\n hex = /^\\(hex\\)/i,\n bin = /^\\(bin\\)/i,\n rom = /^\\(rom\\)/i,\n functional = /^(\\(rom\\)|\\(bin\\)|\\(hex\\)|\\(dec\\)|\\(oct\\)|\\(r(0[2-9]|[12]\\d|3[0-6])\\))/i,\n prec = /#|0/g;\n\nfunction formatRadix(value, fradix, pattern, decimal) {\n value = value.toString(fradix);\n if (pattern[1] === pattern[1].toUpperCase()) {\n value = value.toUpperCase();\n }\n if (value.length - value.indexOf('.') > 10) {\n // limit to 10 decimal places\n value = value.slice(0, value.indexOf('.') + 11);\n }\n\n return value.replace('.', decimal || '.');\n}\n\n// value must be an integer\n// value must not be in scientific notation\nfunction formatRoman(value, pattern) {\n let i,\n s = '',\n v = Number(String(value).slice(-3)),\n nThousands = (value - v) / 1000,\n decimal = [0, 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900].reverse(),\n numeral = ['0', 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM'].reverse();\n\n while (v > 0) {\n for (i = 0; i < decimal.length; i++) {\n if (decimal[i] <= v) {\n s += numeral[i];\n v -= decimal[i];\n break;\n }\n }\n }\n\n for (i = 0; i < nThousands; i++) {\n s = `M${s}`;\n }\n\n if (pattern[1] !== pattern[1].toUpperCase()) {\n s = s.toLowerCase();\n }\n return s;\n}\n\nfunction formatFunctional(value, pattern, d) {\n let temp;\n if (radix.test(pattern)) {\n value = formatRadix(value, Number(/\\d{2}/.exec(pattern)[0]), pattern, d);\n } else if (oct.test(pattern)) {\n value = formatRadix(value, 8, pattern, d);\n } else if (dec.test(pattern)) {\n value = formatRadix(value, 10, pattern, d);\n } else if (hex.test(pattern)) {\n value = formatRadix(value, 16, pattern, d);\n } else if (bin.test(pattern)) {\n value = formatRadix(value, 2, pattern, d);\n } else if (rom.test(pattern)) {\n temp = '';\n if (value < 0) {\n temp = '-';\n value = -value;\n }\n value = Math.floor(value);\n if (value === 0) {\n value = '0';\n } else if (value <= 500000) {\n // limit in engine\n value = formatRoman(value, pattern);\n value = temp + value;\n } else {\n value = pattern + temp + value.toExponential(0); // to return same result as engine\n }\n }\n\n return value;\n}\n\nfunction escape(value, flags, justStr) {\n const str = escapeRegExp(value);\n if (justStr) {\n return str;\n }\n return new RegExp(str || '', flags);\n}\n\nfunction createRegExp(thousand, decimal) {\n if (decimal) {\n decimal = escapeRegExp(decimal);\n }\n if (thousand) {\n thousand = escapeRegExp(thousand);\n }\n return new RegExp(`(?:[#0]+${thousand})?[#0]+(?:${decimal}[#0]+)?`);\n}\n\nfunction getAbbreviations(localeInfo, listSeparator) {\n if (!localeInfo || !localeInfo.qNumericalAbbreviation) {\n return SIprefixes;\n }\n\n const abbreviations = {};\n let abbrs = localeInfo.qNumericalAbbreviation.split(listSeparator);\n\n abbrs.forEach((abbreviation) => {\n let abbreviationTuple = abbreviation.split(':');\n if (abbreviationTuple.length === 2) {\n abbreviations[abbreviationTuple[0]] = abbreviationTuple[1];\n }\n });\n\n return abbreviations;\n}\n\nfunction preparePattern(o, t, d, abbreviate) {\n let parts,\n lastPart,\n pattern = o.pattern,\n numericPattern,\n prefix,\n postfix,\n groupTemp,\n decTemp,\n temp,\n regex;\n\n if (abbreviate) {\n o.abbreviate = true;\n }\n\n // extract the numeric part from the pattern\n regex = createRegExp(t, d);\n numericPattern = pattern.match(regex);\n numericPattern = numericPattern ? numericPattern[0] : '';\n prefix = numericPattern ? pattern.substr(0, pattern.indexOf(numericPattern)) : pattern;\n postfix = numericPattern ? pattern.substring(pattern.indexOf(numericPattern) + numericPattern.length) : '';\n\n if (!numericPattern) {\n numericPattern = pattern ? '#' : '##########';\n }\n\n if (t && t === d) {\n // ignore grouping if grouping separator is same as decimal separator\n // extract decimal part\n parts = numericPattern.split(d);\n lastPart = parts.pop();\n numericPattern = parts.join('') + d + lastPart;\n t = '';\n }\n\n // formatting library does not support multiple characters as separator (nor +-).\n // do a temporary replacement\n groupTemp = t;\n t = /,/.test(d) ? '¤' : ',';\n if (groupTemp) {\n numericPattern = numericPattern.replace(escape(groupTemp, 'g'), t);\n }\n\n decTemp = d;\n d = '.';\n if (decTemp) {\n numericPattern = numericPattern.replace(escape(decTemp, 'g'), d);\n }\n\n temp = numericPattern.match(/#/g);\n temp = temp ? temp.length : 0;\n\n const splitPattern = pattern.split(decTemp);\n let matchPrecisionResult;\n if (splitPattern[1]) {\n matchPrecisionResult = splitPattern[1].match(prec);\n }\n\n o.prefix = prefix || '';\n o.postfix = postfix || '';\n o.pattern = pattern;\n o.maxPrecision = matchPrecisionResult ? matchPrecisionResult.length : 2;\n o.percentage = percentage.test(pattern);\n o.numericPattern = numericPattern || '';\n o.numericRegex = new RegExp(`${escape(t, null, true)}|${escape(d, null, true)}`, 'g');\n o.groupTemp = groupTemp;\n o.decTemp = decTemp;\n o.t = t;\n o.d = d;\n o.temp = temp;\n}\n\nclass NumberFormatter {\n /**\n * @name NumberFormatter\n * @constructs\n * @param {Object} localeInfo\n * @param {String} pattern\n * @param {String} [thousand]\n * @param {String} [decimal]\n * @param {String} [type]\n */\n constructor(localeInfo, pattern, thousand, decimal, type) {\n this.localeInfo = localeInfo;\n this.pattern = pattern;\n this.thousandDelimiter = thousand || ',';\n this.decimalDelimiter = decimal || '.';\n this.type = type || 'numeric';\n\n // FIXME qListSep?\n // this.patternSeparator = this.localeInfo && this.localeInfo.qListSep ? this.localeInfo.qListSep : ';';\n this.patternSeparator = ';';\n\n this.abbreviations = getAbbreviations(localeInfo, this.patternSeparator);\n\n this.prepare();\n }\n\n clone() {\n const n = new NumberFormatter(\n this.localeInfo,\n this.pattern,\n this.thousandDelimiter,\n this.decimalDelimiter,\n this.type\n );\n n.subtype = this.subtype;\n return n;\n }\n\n /**\n * Formats a number according to a specific pattern.\n * Use # for optional numbers and 0 for padding.\n * @param {Number} value Number to format.\n * @param {String} [pattern] The pattern to apply.\n * @param {String} [t] Grouping separator.\n * @param {String} [d] Decimal delimiter.\n * @example\n * format(10, \"0\") // 10;\n * format(10, \"#\") // 10;\n * format(10, \"##.#\") // 10;\n * format(10, \"##.0\") // 10.0;\n * format(10, \"000\") // 010;\n * format(10.123, \"0.0\") // 10.1;\n * format(10.123, \"0.00##\") // 10.123; // at least 2 decimals, never more than 4\n * format(123456789, \"#,###\") // 123,456,789;\n * format(123456789, \"####-####\", \"-\") // 1-2345-6789;\n *\n * format(0.257, \"0.0%\") // 25.7%; // will multiply by 100\n * format(9876, \"$#,###\") // $9,876;\n * format(-9876, \"$#,###;$(#,###)\") // $(9,876); // use ; for alternative formatting for negative values\n * format(10, \"(r16)\") // a; // radix 16\n * format(15, \"(hex)\") // f; // same as (r16)\n * format(15, \"(HEX)\") // F;\n * format(10, \"(bin)\") // 1010; // same as (r02)\n * format(10, \"(oct)\") // 12; // same as (r08)\n */\n format(value, pattern, t, d) {\n this.prepare(pattern, t, d);\n return this.formatValue(value);\n }\n\n prepare(pattern, t, d) {\n let prep;\n\n if (typeof pattern === 'undefined') {\n pattern = this.pattern;\n }\n if (typeof t === 'undefined') {\n t = this.thousandDelimiter;\n }\n if (typeof d === 'undefined') {\n d = this.decimalDelimiter;\n }\n\n if (!pattern) {\n this._prepared = { pattern: false };\n return;\n }\n\n this._prepared = {\n positive: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n negative: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n zero: {\n d,\n t,\n abbreviate: false,\n isFunctional: false,\n prefix: '',\n postfix: '',\n },\n };\n prep = this._prepared;\n\n pattern = pattern.split(this.patternSeparator);\n prep.positive.pattern = pattern[0];\n prep.negative.pattern = pattern[1];\n prep.zero.pattern = pattern[2];\n if (functional.test(pattern[0])) {\n prep.positive.isFunctional = true;\n }\n if (!pattern[1]) {\n prep.negative = false;\n } else if (functional.test(pattern[1])) {\n prep.negative.isFunctional = true;\n }\n if (!pattern[2]) {\n prep.zero = false;\n } else if (functional.test(pattern[2])) {\n prep.zero.isFunctional = true;\n }\n\n const abbreviate = this.type === 'U';\n if (!prep.positive.isFunctional) {\n preparePattern(prep.positive, t, d, abbreviate);\n }\n if (prep.negative && !prep.negative.isFunctional) {\n preparePattern(prep.negative, t, d, abbreviate);\n }\n if (prep.zero && !prep.zero.isFunctional) {\n preparePattern(prep.zero, t, d, abbreviate);\n }\n }\n\n formatValue(value) {\n let prep = this._prepared,\n temp,\n exponent,\n abbr = '',\n absValue,\n num,\n sciValue = '',\n d,\n t,\n i,\n numericPattern,\n decimalPartPattern,\n original = value;\n\n if (isNaN(value)) {\n return `${original}`;\n }\n\n value = +value;\n\n if (prep.pattern === false) {\n return value.toString();\n }\n\n if (value === 0 && prep.zero) {\n prep = prep.zero;\n return prep.pattern;\n }\n if (value < 0 && prep.negative) {\n prep = prep.negative;\n value = -value;\n } else {\n prep = prep.positive;\n }\n d = prep.d;\n t = prep.t;\n\n if (prep.isFunctional) {\n value = formatFunctional(value, prep.pattern, d);\n } else {\n if (prep.percentage) {\n value *= 100;\n }\n\n if (prep.abbreviate) {\n const abbrArray = Object.keys(this.abbreviations)\n .map((key) => parseInt(key, 10))\n .sort((a, b) => a - b);\n let lowerAbbreviation;\n let upperAbbreviation = abbrArray[0];\n i = 0;\n exponent = Number(Number(value).toExponential().split('e')[1]);\n\n while (upperAbbreviation <= exponent && i < abbrArray.length) {\n i++;\n upperAbbreviation = abbrArray[i];\n }\n\n if (i > 0) {\n lowerAbbreviation = abbrArray[i - 1];\n }\n\n let suggestedAbbrExponent;\n\n // value and lower abbreviation is for values above 10, use the lower (move to the left <==)\n if (lowerAbbreviation && exponent > 0 && lowerAbbreviation > 0) {\n suggestedAbbrExponent = lowerAbbreviation;\n // value and lower abbreviation is for values below 0.1 (move to the right ==>)\n } else if ((exponent < 0 && lowerAbbreviation < 0) || !lowerAbbreviation) {\n // upper abbreviation is also for values below 0.1 and precision allows for using the upper abbreviation(move to the right ==>)\n if (upperAbbreviation < 0 && upperAbbreviation - exponent <= prep.maxPrecision) {\n suggestedAbbrExponent = upperAbbreviation;\n // lower abbrevaition is smaller than exponent and we can't get away with not abbreviating\n } else if (lowerAbbreviation <= exponent && !(upperAbbreviation > 0 && -exponent <= prep.maxPrecision)) {\n // (move to left <==)\n suggestedAbbrExponent = lowerAbbreviation;\n }\n }\n if (suggestedAbbrExponent) {\n abbr = this.abbreviations[suggestedAbbrExponent];\n value /= 10 ** suggestedAbbrExponent;\n }\n }\n\n absValue = Math.abs(value);\n temp = prep.temp;\n numericPattern = prep.numericPattern;\n decimalPartPattern = numericPattern.split(d)[1];\n\n if (this.type === 'I') {\n value = Math.round(value);\n }\n num = value;\n\n if (!decimalPartPattern && numericPattern.slice(-1)[0] === '#') {\n if (absValue >= 10 ** temp || absValue < 1 || absValue < 1e-4) {\n if (value === 0) {\n value = '0';\n } else if (absValue < 1e-4 || absValue >= 1e20) {\n // engine always formats values < 1e-4 in scientific form, values >= 1e20 can only be represented in scientific form\n value = num.toExponential(Math.max(1, Math.min(14, temp)) - 1);\n value = value.replace(/\\.?0+(?=e)/, '');\n sciValue = '';\n } else {\n value = value.toPrecision(Math.max(1, Math.min(14, temp)));\n if (value.indexOf('.') >= 0) {\n value = value.replace(value.indexOf('e') < 0 ? /0+$/ : /\\.?0+(?=e)/, '');\n value = value.replace('.', d);\n }\n }\n } else {\n numericPattern += d;\n temp = Math.max(0, Math.min(20, temp - Math.ceil(Math.log(absValue) / Math.log(10))));\n for (i = 0; i < temp; i++) {\n numericPattern += '#';\n }\n\n value = formatter(numericPattern, value);\n }\n } else if (absValue >= 1e15 || (absValue > 0 && absValue <= 1e-14)) {\n value = absValue ? absValue.toExponential(15).replace(/\\.?0+(?=e)/, '') : '0';\n } else {\n const wholePart = Number(\n value.toFixed(Math.min(20, decimalPartPattern ? decimalPartPattern.length : 0)).split('.')[0]\n );\n let wholePartPattern = numericPattern.split(d)[0];\n wholePartPattern += d;\n\n value = formatter(wholePartPattern, wholePart) || '0';\n\n if (decimalPartPattern) {\n const nDecimals = Math.max(0, Math.min(14, decimalPartPattern.length)); // the length of e.g. 0000#####\n const nZeroes = decimalPartPattern.replace(/#+$/, '').length;\n let decimalPart = (this.type === 'I' ? 0 : absValue % 1).toFixed(nDecimals).slice(2).replace(/0+$/, ''); // remove trailing zeroes\n\n for (i = decimalPart.length; i < nZeroes; i++) {\n decimalPart += '0';\n }\n\n if (decimalPart) {\n value += d + decimalPart;\n }\n } else if (wholePart === 0) {\n // to avoid \"-\" being prefixed to value\n num = 0;\n }\n }\n\n value = value.replace(prep.numericRegex, (m) => {\n if (m === t) {\n return prep.groupTemp;\n }\n if (m === d) {\n return prep.decTemp;\n }\n return '';\n });\n if (num < 0 && !/^-/.test(value)) {\n value = `-${value}`;\n }\n }\n\n return prep.prefix + value + sciValue + abbr + prep.postfix;\n }\n\n static getStaticFormatter() {\n return {\n prepare() {},\n formatValue(v) {\n return `${v}`;\n },\n };\n }\n}\n\nexport default function numberFormatFactory(...args) {\n return new NumberFormatter(...args);\n}\n","export default function memoize(func, opts = {}) {\n const { size = 5000, multipleArguments = false, toKey = (arg) => arg } = opts;\n let cache = Object.create(null);\n let index = Object.create(null);\n let counter = 0;\n let fifo = 0; // First-In-First-Out index\n let cacher;\n let k;\n\n if (multipleArguments) {\n cacher = (...args) => {\n k = toKey(...args);\n if (cacher.has(k)) {\n return cacher.get(k);\n }\n return cacher.set(k, func(...args));\n };\n } else {\n cacher = (arg) => {\n k = toKey(arg);\n if (cacher.has(k)) {\n return cacher.get(k);\n }\n return cacher.set(k, func(arg));\n };\n }\n\n cacher.set = (key, val) => {\n if (counter >= size) {\n delete cache[index[fifo]];\n delete index[fifo];\n counter--;\n fifo++;\n }\n cache[key] = val;\n index[counter] = key;\n counter++;\n return val;\n };\n\n cacher.get = (key) => cache[key];\n\n cacher.has = (key) => key in cache;\n\n cacher.clear = () => {\n cache = Object.create(null);\n index = Object.create(null);\n counter = 0;\n fifo = 0;\n };\n\n cacher.size = () => counter;\n\n return cacher;\n}\n","import numberFormatFactory from './parts/qs-number-formatter';\nimport memoize from './memoize';\n\nexport default function formatter(pattern, thousand, decimal, qType, localeInfo) {\n const qformat = numberFormatFactory(localeInfo, pattern, thousand, decimal, qType);\n const memoized = memoize(qformat.formatValue.bind(qformat), {\n // Handle NaN and cases where toString yields different result than +operator. Ex. a Date.\n toKey: (value) => (isNaN(value) ? value : +value),\n });\n\n /**\n * Format a value according to the specified pattern created at construct\n *\n * @param {Number} value The number to be formatted\n * @return {String} [description]\n */\n function format(value) {\n return memoized(value);\n }\n\n /**\n * Format a value according to a specific pattern\n * that is not the one specified in the constructor\n *\n * @param {String} p Pattern\n * @param {Number} v Value\n * @param {String} t Thousand\n * @param {String} d Decimal\n * @return {String} Formatted value\n */\n format.format = function formatFn(p, v, t, d) {\n memoized.clear();\n return qformat.format(v, p, t, d);\n };\n\n /**\n * Change the pattern on existing formatter\n *\n * @param {String} p Pattern (optional)\n * @return {String} Returns the pattern\n */\n format.pattern = function patternFn(p) {\n if (p) {\n memoized.clear();\n qformat.pattern = p;\n qformat.prepare();\n }\n return qformat.pattern;\n };\n\n /**\n * Set the locale for the formatter\n *\n * @param {Object} args Locale object for formatting\n * @return {Undefined} Returns nothing\n */\n /* format.locale = function( ...args ) {\n locale = formatLocale( ...args );\n d3format = locale.format( pattern );\n\n return this;\n }; */\n\n return format;\n}\n","/* eslint import/prefer-default-export: 0 */\n\nexport const TYPES = {\n AUTO: 'U',\n INTEGER: 'I',\n NUMBER: 'R',\n FIXED_TO: 'F',\n MONEY: 'M',\n DATE: 'D',\n TIME: 'T',\n DATE_TIME: 'TS',\n INTERVAL: 'IV',\n};\n","import { TYPES } from '../constants';\n\nconst DAYS = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\nconst DAYS_ABBR = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\nconst MONTHS_ABBR = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nconst SECONDS_PER_DAY = 86400;\n\nfunction pad(s, n) {\n for (let i = s.length; i < n; i++) {\n s = `0${s}`;\n }\n return s;\n}\n\nfunction parseDate(d, twelveFormat) {\n let h = d.getUTCHours();\n let day = d.getUTCDay() - 1;\n if (twelveFormat) {\n h %= 12;\n if (!h) {\n // h == 0 -> 12\n h = 12;\n }\n }\n\n if (day < 0) {\n day = 6;\n }\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth(),\n day,\n date: d.getUTCDate(),\n h,\n m: d.getUTCMinutes(),\n s: d.getUTCSeconds(),\n f: d.getUTCMilliseconds(),\n t: d.getUTCHours() >= 12 ? 'pm' : 'am',\n };\n}\n\nfunction getRemainder(value) {\n let s = value.toString().split('.');\n if (s[1]) {\n s = Number(`0.${s[1]}`);\n } else {\n return 0;\n }\n return s;\n}\n\nfunction parseIntervalDays(days) {\n const d = days;\n const h = 24 * getRemainder(d);\n const m = 60 * getRemainder(h);\n const s = 60 * getRemainder(m);\n const ms = 1000 * getRemainder(s);\n\n return {\n d: Math.floor(d),\n h: Math.floor(h),\n m: Math.floor(m),\n s: Math.floor(s),\n f: Math.round(ms),\n };\n}\n\nfunction parseInterval(days, pattern) {\n let units = parseIntervalDays(days),\n d = units.d,\n h = units.h,\n m = units.m,\n s = units.s,\n f = units.f,\n w = 0,\n date;\n\n if (/w+|t+/gi.test(pattern)) {\n date = new Date(\n Date.UTC(1899, 11, 30 + Math.floor(days), 0, 0, Math.round(SECONDS_PER_DAY * (days - Math.floor(days))))\n );\n if (isNaN(date.getTime())) {\n date = null;\n }\n }\n\n if (!/D+/gi.test(pattern)) {\n h += d * 24;\n }\n if (!/h+/gi.test(pattern)) {\n m += h * 60;\n }\n if (!/m+/gi.test(pattern)) {\n s += m * 60;\n }\n if (/w+/gi.test(pattern)) {\n w = date ? date.getDay() - 1 : 0;\n if (w < 0) {\n w = 6;\n }\n }\n\n let someT = '';\n if (date) {\n someT = date.getUTCHours() >= 12 ? 'pm' : 'am';\n }\n\n return {\n year: 0,\n month: 0,\n day: w,\n date: d,\n h,\n m,\n s,\n f,\n t: someT,\n };\n}\n\nfunction getMasks(inst, d) {\n return {\n 'Y+|y+': {\n Y: `${Number(`${d.year}`.slice(-2))}`,\n YY: pad(`${d.year}`.slice(-2), 2),\n YYY: pad(`${d.year}`.slice(-3), 3),\n def(m) {\n // default\n return pad(`${d.year}`, m.length);\n },\n },\n 'M+': {\n M: d.month + 1,\n MM: pad(`${d.month + 1}`, 2),\n MMM: inst.locale_months_abbr[d.month],\n def: inst.locale_months[d.month],\n },\n 'W+|w+': {\n W: d.day,\n WW: pad(`${d.day}`, 2),\n WWW: inst.locale_days_abbr[d.day],\n def: inst.locale_days[d.day],\n },\n 'D+|d+': {\n D: d.date,\n def(m) {\n return pad(`${d.date}`, m.length);\n },\n },\n 'h+|H+': {\n h: d.h,\n def(m) {\n return pad(`${d.h}`, m.length);\n },\n },\n 'm+': {\n m: d.m,\n def(m) {\n return pad(`${d.m}`, m.length);\n },\n },\n 's+|S+': {\n s: d.s,\n def(m) {\n return pad(`${d.s}`, m.length);\n },\n },\n 'f+|F+': {\n def(m) {\n let f = `${d.f}`,\n n = m.length - f.length;\n if (n > 0) {\n for (let i = 0; i < n; i++) {\n f += '0';\n }\n } else if (n < 0) {\n f = f.slice(0, m.length);\n }\n return f;\n },\n },\n 't{1,2}|T{1,2}': {\n def(m) {\n let t = d.t;\n if (m[0].toUpperCase() === m[0]) {\n t = t.toUpperCase();\n }\n t = t.slice(0, m.length);\n return t;\n },\n },\n };\n}\n\nclass DateFormatter {\n /**\n * @name DateFormatter\n * @constructs\n * @param {Object} localeInfo\n * @param {String} pattern\n */\n constructor(localeInfo, pattern, qtype) {\n const info = localeInfo || {};\n\n if (!info.qCalendarStrings) {\n info.qCalendarStrings = {\n qLongDayNames: DAYS,\n qDayNames: DAYS_ABBR,\n qLongMonthNames: MONTHS,\n qMonthNames: MONTHS_ABBR,\n };\n }\n\n this.localeInfo = info;\n this.locale_days = info.qCalendarStrings.qLongDayNames.slice();\n this.locale_days_abbr = info.qCalendarStrings.qDayNames.slice();\n this.locale_months = info.qCalendarStrings.qLongMonthNames.slice();\n this.locale_months_abbr = info.qCalendarStrings.qMonthNames.slice();\n\n if (!pattern) {\n const patternMap = {\n [TYPES.TIME]: info.qTimeFmt || 'hh:mm:ss',\n [TYPES.DATE]: info.qDateFmt || 'YYYY-MM-DD',\n [TYPES.DATE_TIME]: info.qTimestampFmt || 'YYYY-MM-DD hh:mm:ss',\n };\n\n pattern = patternMap[qtype];\n }\n\n this.pattern = pattern;\n }\n\n clone() {\n const n = new DateFormatter(this.localeInfo, this.pattern);\n n.subtype = this.subtype;\n return n;\n }\n\n /**\n * Formats a date according to given pattern\n * @param {Date} date The date to format.\n * @param {String} pattern The desired format of the date\n * var d = new Date(2013, 8, 15, 13, 55, 40, 987);\n * var n = new DateFormatter();\n * @example\n * m.format( d, 'YYYY-MM-DD hh:mm:ss.ffff') // 2013-08-15 13:55:40.9870\n * m.format( d, 'h:m:s tt') // 1:55:40 pm\n * m.format( d, 'h:m:s TT') // 1:55:40 PM\n * m.format( d, 'M/D/YYYY') // 8/15/2013\n * m.format( d, 'WWWW DD MMM') // Thursday 15 Aug\n * m.format( d, 'WWW DD MMMM @ hh:mm:ss') // Thu 15 August @ 13:55:40\n */\n format(date, pattern) {\n // Fallback pattern is set in constructor\n if (!pattern) {\n pattern = this.pattern ? this.pattern : 'YYYY-MM-DD hh:mm:ss';\n }\n\n pattern = pattern.replace(/\\[.+]|\\[|]/g, '');\n const hasTwelveFlag = /t+/gi.test(pattern);\n let parsedDate;\n\n if (date instanceof Date) {\n parsedDate = parseDate(date, hasTwelveFlag);\n } else {\n if (date < 0) {\n // parseInterval don't support for negative values\n date = -date;\n pattern = `-${pattern}`;\n }\n parsedDate = parseInterval(date, pattern);\n }\n // remove [] and everything inside it\n\n const masks = getMasks(this, parsedDate);\n\n const masksArr = [];\n for (const mask in masks) {\n if (Object.prototype.hasOwnProperty.call(masks, mask)) {\n masksArr.push(mask);\n }\n }\n const dateTimeRegex = new RegExp(masksArr.join('|'), 'g');\n\n const result = pattern.replace(dateTimeRegex, (m) => {\n let r;\n let mask;\n for (mask in masks) {\n if (Object.prototype.hasOwnProperty.call(masks, mask)) {\n r = new RegExp(mask);\n if (r.test(m)) {\n break;\n }\n }\n }\n if (!r) {\n return '';\n }\n let value;\n for (const submask in masks[mask]) {\n if (submask === m || submask.toLowerCase() === m) {\n value = masks[mask][submask];\n if (typeof value === 'undefined') {\n value = masks[mask][submask.toLowerCase()];\n }\n break;\n }\n }\n if (typeof value === 'undefined') {\n value = masks[mask].def;\n }\n\n if (typeof value === 'function') {\n value = value(m);\n }\n return value;\n });\n return result;\n }\n}\n\nexport default function dateFormatFactory(...args) {\n return new DateFormatter(...args);\n}\n","import dateFormatFactory from './parts/qs-date-formatter';\nimport { TYPES } from './constants';\nimport memoize from './memoize';\n\nconst MS_PER_DAY = 86400000;\n\nexport function QlikTimeToDate(value) {\n return new Date(\n Date.UTC(1899, 11, 30 + Math.floor(value), 0, 0, 0, Math.round(MS_PER_DAY * (value - Math.floor(value))))\n );\n}\n\nexport default function formatter(pattern, qtype = 'TS', localeInfo = null) {\n let qformat = dateFormatFactory(localeInfo, pattern, qtype);\n let memoized = memoize(qformat.format.bind(qformat), {\n toKey: (date) => (typeof date === 'object' && typeof date.getTime === 'function' ? date.getTime() : date),\n });\n\n /**\n * Prepare a value according to the specified qtype\n *\n * @param {Number} value The value to be formatted\n * @return {Number} The converted value (if applied)\n */\n function prepare(value) {\n if (qtype !== TYPES.INTERVAL) {\n return QlikTimeToDate(value);\n }\n return value;\n }\n\n /**\n * Format a value according to the specified pattern created at construct\n *\n * @param {Date} value The number to be formatted\n * @return {String} [description]\n */\n function format(value) {\n value = prepare(value);\n return memoized(value);\n }\n\n /**\n * Format a value according to a specific pattern\n * that is not the one specified in the constructor\n *\n * @param {String} p Pattern\n * @param {Date} v Value\n * @return {String} Formatted value\n */\n format.format = function formatFn(p, v) {\n memoized.clear();\n v = prepare(v);\n return qformat.format(v, p);\n };\n\n /**\n * Set the locale for the formatter\n *\n * @param {Object} args Locale object for formatting\n * @return {Undefined} Returns nothing\n */\n format.locale = function locale(li) {\n qformat = dateFormatFactory(li, pattern, qtype);\n memoized = memoize(qformat.format.bind(qformat), {\n toKey: (date) => (typeof date === 'object' ? date.getTime() : date),\n });\n return this;\n };\n\n /**\n * Get or set the QType\n *\n * @param {String} nqt New qType (optional)\n * @return {String} Current qtype\n */\n format.qtype = function qtypeFn(nqt) {\n if (nqt !== undefined) {\n qtype = nqt;\n memoized.clear();\n }\n return qtype;\n };\n\n return format;\n}\n","import numberFormat from './numberFormat';\nimport timeFormat from './timeFormat';\n\nexport { numberFormat, timeFormat };\n\nexport function createFromMetaInfo(meta, localeInfo) {\n if (meta && meta.qNumFormat && ['D', 'T', 'TS', 'IV'].indexOf(meta.qNumFormat.qType) !== -1) {\n return timeFormat(meta.qNumFormat.qFmt, meta.qNumFormat.qType, localeInfo);\n }\n let pattern = '#';\n let thousand = localeInfo && typeof localeInfo.qThousandSep !== 'undefined' ? localeInfo.qThousandSep : ',';\n let decimal = localeInfo && typeof localeInfo.qDecimalSep !== 'undefined' ? localeInfo.qDecimalSep : '.';\n let type = 'U';\n let isAuto = meta && !!meta.qIsAutoFormat;\n if (meta && meta.qNumFormat) {\n pattern = meta.qNumFormat.qFmt || pattern;\n thousand = meta.qNumFormat.qThou || thousand;\n decimal = meta.qNumFormat.qDec || decimal;\n type = meta.qNumFormat.qType || type;\n isAuto = isAuto && ['M'].indexOf(meta.qNumFormat.qType) === -1;\n } else {\n isAuto = true;\n }\n\n if (isAuto || type === 'U') {\n pattern = `#${decimal}##`;\n type = 'U';\n }\n\n return numberFormat(pattern, thousand, decimal, type, localeInfo);\n}\n","import { createFromMetaInfo } from '../formatter';\n\nexport default function qField({ meta, id, key, localeInfo, fieldExtractor, value, type, sourceField } = {}) {\n let values;\n\n const valueFn = value || (type === 'dimension' ? (d) => d.qElemNo : (d) => d.qValue);\n const labelFn = (d) => d.qText || '';\n const reduce = type === 'dimension' ? 'first' : 'avg';\n const formatter = createFromMetaInfo(meta, localeInfo);\n const reduceLabel = type === 'dimension' ? 'first' : (labels, v) => formatter(v);\n\n const f = {\n id: () => id,\n key: () => key,\n raw: () => meta,\n title: () => meta.qFallbackTitle || meta.label,\n type: () => type,\n origin: () => sourceField,\n items: () => {\n if (!values) {\n values = fieldExtractor(f);\n }\n return values;\n },\n min: () => meta.qMin,\n max: () => meta.qMax,\n value: valueFn,\n label: labelFn,\n reduce,\n reduceLabel,\n formatter: () => formatter,\n tags: () => meta.qTags,\n };\n\n return f;\n}\n","// import augmentH from './augment-hierarchy';\nimport extend from 'extend';\nimport SExtractor from './extractor-s';\nimport { extract as TExtractor, augment as augmentTree } from './extractor-t';\nimport { findField } from './util';\nimport field from './field';\n\nfunction createFields(path, obj, prefix, parentKey, opts) {\n return (obj[path] || []).map((meta, i) => {\n const fieldKey = `${parentKey ? `${parentKey}/` : ''}${path}/${i}`;\n const f = {\n instance: field(\n extend(\n {\n id: `${prefix ? `${prefix}/` : ''}${fieldKey}`,\n key: fieldKey,\n meta,\n },\n opts\n )\n ),\n };\n f.attrDims = createFields(\n 'qAttrDimInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qElemNo, type: 'dimension' })\n );\n f.attrExps = createFields(\n 'qAttrExprInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qNum, type: 'measure' })\n );\n f.measures = createFields(\n 'qMeasureInfo',\n meta,\n prefix,\n fieldKey,\n extend({}, opts, { value: (v) => v.qValue, type: 'measure' })\n );\n return f;\n });\n}\n\nexport default function q({ key, data, config = {} } = {}) {\n const cache = {\n fields: [],\n wrappedFields: [],\n allFields: [],\n virtualFields: [],\n };\n\n const cube = data;\n if (!cube) {\n throw new Error('Missing \"data\" input');\n }\n\n if (!cube.qDimensionInfo) {\n throw new Error('The \"data\" input is not recognized as a hypercube');\n }\n\n const deps = q.util;\n\n const opts = {\n cache,\n cube,\n localeInfo: config.localeInfo,\n fieldExtractor: null,\n pages: null,\n hierarchy: () => null,\n virtualFields: config.virtualFields,\n };\n\n const dataset = {\n key: () => key,\n raw: () => cube,\n field: (query) => findField(query, opts),\n fields: () => cache.fields.slice(),\n extract: (extractionConfig) => opts.extractor(extractionConfig, dataset, cache, deps),\n hierarchy: (hierarchyConfig) => opts.hierarchy(hierarchyConfig, dataset, cache, deps),\n _cache: () => cache,\n };\n\n if (cube.qMode === 'K' || cube.qMode === 'T' || (!cube.qMode && cube.qNodesOnDim)) {\n opts.extractor = TExtractor;\n opts.hierarchy = augmentTree;\n opts.pages = cube.qMode === 'K' ? cube.qStackedDataPages : cube.qTreeDataPages;\n } else if (cube.qMode === 'S') {\n opts.extractor = SExtractor;\n opts.pages = cube.qDataPages;\n opts.hierarchy = augmentTree;\n } else {\n opts.extractor = () => []; // TODO - throw unsupported error?\n }\n\n opts.fieldExtractor = (f) => opts.extractor({ field: f }, dataset, cache, deps);\n\n const dimAcc = cube.qMode === 'S' ? (d) => d.qElemNumber : undefined;\n const measAcc = cube.qMode === 'S' ? (d) => d.qNum : undefined;\n\n cache.wrappedFields.push(\n ...createFields('qDimensionInfo', cube, key, '', extend({}, opts, { value: dimAcc, type: 'dimension' }))\n );\n cache.wrappedFields.push(\n ...createFields('qMeasureInfo', cube, key, '', extend({}, opts, { value: measAcc, type: 'measure' }))\n );\n\n cache.fields = cache.wrappedFields.map((f) => f.instance);\n\n const traverse = (arr) => {\n arr.forEach((f) => {\n cache.allFields.push(f.instance);\n traverse(f.measures);\n traverse(f.attrDims);\n traverse(f.attrExps);\n });\n };\n\n traverse(cache.wrappedFields);\n\n (config.virtualFields || []).forEach((v) => {\n // key: 'temporal',\n // from: 'qDimensionInfo/0',\n // override: {\n // value: v => v.qNum,\n // },\n const sourceField = dataset.field(v.from);\n const f = field({\n meta: sourceField.raw(),\n id: `${key}/${v.key}`,\n sourceField,\n fieldExtractor: (ff) => opts.extractor({ field: ff }, dataset, cache, deps),\n key: v.key,\n type: sourceField.type(),\n localeInfo: opts.localeInfo,\n value: sourceField.value,\n ...(v.override || {}),\n });\n cache.virtualFields.push(f);\n });\n\n cache.allFields.push(...cache.virtualFields);\n\n return dataset;\n}\n","import resolve from '../json-path-resolver';\n\nconst LAYOUT_TO_PROP = [\n ['qHyperCube', 'qHyperCubeDef'],\n ['qTreeData', 'qTreeDataDef'],\n ['qDimensionInfo', 'qDimensions'],\n ['qMeasureInfo', 'qMeasures'],\n ['qAttrDimInfo', 'qAttributeDimensions'],\n ['qAttrExprInfo', 'qAttributeExpressions'],\n];\n\nconst DIM_RX = /\\/qDimensionInfo(?:\\/(\\d+))?/;\nconst M_RX = /\\/qMeasureInfo\\/(\\d+)/;\nconst ATTR_DIM_RX = /\\/qAttrDimInfo\\/(\\d+)(?:\\/(\\d+))?/;\nconst ATTR_EXPR_RX = /\\/qAttrExprInfo\\/(\\d+)/;\nconst HC_RX = /\\/?qHyperCube/;\nconst TD_RX = /\\/?qTreeData/;\n\nconst SHORTEN_HC = (path) => `${path.substr(0, path.indexOf('/qHyperCubeDef') + 14)}`; // 14 = length of '/qHyperCubeDef'\nconst SHORTEN_TD = (path) => `${path.substr(0, path.indexOf('/qTreeDataDef') + 13)}`; // 13 = length of '/qTreeDataDef'\n\nexport function extractFieldFromId(id, layout) {\n let path = id;\n let dimensionIdx = -1;\n let measureIdx = -1;\n let pathToCube = '';\n let shortenizer = (p) => p;\n if (HC_RX.test(id)) {\n pathToCube = `${path.substr(0, path.indexOf('qHyperCube') + 10)}`; // 10 = length of 'qHyperCube'\n shortenizer = SHORTEN_HC;\n } else if (TD_RX.test(id)) {\n pathToCube = `${path.substr(0, path.indexOf('qTreeData') + 9)}`; // 9 = length of 'qTreeData'\n shortenizer = SHORTEN_TD;\n }\n\n let shortenPath = true;\n\n if (DIM_RX.test(id)) {\n dimensionIdx = +DIM_RX.exec(id)[1];\n }\n\n if (M_RX.test(id)) {\n measureIdx = +M_RX.exec(id)[1];\n }\n\n if (ATTR_DIM_RX.test(id)) {\n measureIdx = -1;\n dimensionIdx = 0;\n const attrCol = +ATTR_DIM_RX.exec(path)[2];\n if (!isNaN(attrCol)) {\n dimensionIdx = attrCol;\n path = path.replace(/\\/\\d+$/, '');\n }\n shortenPath = false;\n }\n\n if (ATTR_EXPR_RX.test(id)) {\n // depends on number of measures + number of attr expressions\n // in dimensions and measures before this one\n const offset = measureIdx;\n if (layout) {\n measureIdx = 0;\n const hc = resolve(pathToCube, layout);\n\n // offset by number of measures\n measureIdx += (hc.qMeasureInfo || []).length;\n\n // offset by total number of attr expr in dimensions\n // (assuming attr expr in dimensions are ordered first)\n if (dimensionIdx > -1) {\n measureIdx = hc.qDimensionInfo\n .slice(0, dimensionIdx)\n .reduce((v, dim) => v + dim.qAttrExprInfo.length, measureIdx);\n dimensionIdx = -1;\n } else {\n measureIdx = hc.qDimensionInfo.reduce((v, dim) => v + dim.qAttrExprInfo.length, measureIdx);\n // offset by total number of attr expr in measures before 'index'\n measureIdx = hc.qMeasureInfo.slice(0, offset).reduce((v, meas) => v + meas.qAttrExprInfo.length, measureIdx);\n }\n\n // offset by the actual column value for the attribute expression itself\n measureIdx += +ATTR_EXPR_RX.exec(path)[1];\n } else if (dimensionIdx > -1) {\n dimensionIdx = -1;\n measureIdx = +ATTR_EXPR_RX.exec(path)[1];\n } else {\n measureIdx += +ATTR_EXPR_RX.exec(path)[1] + 1;\n }\n }\n\n LAYOUT_TO_PROP.forEach(([v, prop]) => {\n path = path.replace(v, prop);\n });\n\n if (shortenPath) {\n path = shortenizer(path);\n }\n\n if (path && path[0] !== '/') {\n path = `/${path}`;\n }\n\n return {\n measureIdx,\n dimensionIdx,\n path,\n };\n}\n\n/**\n * Helper method to generate suitable QIX selection methods and parameters based on a brush instance.\n * @alias brush\n * @memberof picasso.q\n * @param {Brush} brush A brush instance\n * @param {object} [opts]\n * @param {boolean} [opts.byCells=false] Whether to prefer selection by row index.\n * @param {string} [opts.primarySource] Field source to extract row indices from. If not specified, indices from first source are used.\n * @param {boolean} [opts.orMode=true] If false, combine measure range selections.\n * @param {object} [layout] QIX data layout. Needed only when brushing on attribute expressions, to be able to calculate the measure index.\n * @return {object[]} An array of relevant selections\n */\nexport default function qBrush(brush, opts = {}, layout) {\n const byCells = opts.byCells;\n const primarySource = opts.primarySource;\n const selections = [];\n const methods = {};\n const isActive = brush.isActive();\n let hasValues = false;\n brush.brushes().forEach((b) => {\n const info = extractFieldFromId(b.id, layout);\n if (b.type === 'range' && info.measureIdx > -1 && info.dimensionIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.multiRangeSelectTreeDataValues) {\n methods.multiRangeSelectTreeDataValues = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.multiRangeSelectTreeDataValues.ranges.push({\n qMeasureIx: info.measureIdx,\n qDimensionIx: info.dimensionIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: true,\n },\n })\n );\n }\n } else {\n if (b.type === 'range' && info.measureIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.rangeSelectHyperCubeValues) {\n methods.rangeSelectHyperCubeValues = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.rangeSelectHyperCubeValues.ranges.push({\n qMeasureIx: info.measureIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: true,\n },\n })\n );\n }\n }\n if (b.type === 'range' && info.dimensionIdx > -1) {\n const ranges = b.brush.ranges();\n if (ranges.length) {\n hasValues = true;\n if (!methods.selectHyperCubeContinuousRange) {\n methods.selectHyperCubeContinuousRange = {\n path: info.path,\n ranges: [],\n };\n }\n ranges.forEach((range) =>\n methods.selectHyperCubeContinuousRange.ranges.push({\n qDimIx: info.dimensionIdx,\n qRange: {\n qMin: range.min,\n qMax: range.max,\n qMinInclEq: true,\n qMaxInclEq: false,\n },\n })\n );\n }\n }\n\n if (b.type === 'value' && info.dimensionIdx > -1) {\n if (byCells) {\n if (\n layout &&\n layout.qHyperCube &&\n (layout.qHyperCube.qMode === 'P' || layout.qHyperCube.qMode === 'T' || layout.qHyperCube.qMode === 'K')\n ) {\n const hyperCube = layout.qHyperCube;\n const noOfLeftDims = hyperCube.qNoOfLeftDims;\n const dimInterColSortIdx = hyperCube.qEffectiveInterColumnSortOrder.indexOf(info.dimensionIdx);\n\n if (!methods.selectPivotCells) {\n methods.selectPivotCells = {\n path: info.path,\n cells: [],\n };\n }\n\n if (b.id === primarySource || !primarySource) {\n const validValues = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n\n if ((noOfLeftDims === 0 || dimInterColSortIdx >= noOfLeftDims) && noOfLeftDims > -1) {\n validValues.forEach((val) => {\n methods.selectPivotCells.cells.push({\n qType: 'T',\n qCol: val,\n qRow: dimInterColSortIdx - noOfLeftDims,\n });\n });\n } else {\n validValues.forEach((val) => {\n methods.selectPivotCells.cells.push({\n qType: 'L',\n qCol: info.dimensionIdx,\n qRow: val,\n });\n });\n }\n hasValues = !!methods.selectPivotCells.cells.length;\n }\n } else {\n if (!methods.selectHyperCubeCells) {\n methods.selectHyperCubeCells = {\n path: info.path,\n cols: [],\n };\n }\n\n methods.selectHyperCubeCells.cols.push(info.dimensionIdx);\n if (b.id === primarySource || (!primarySource && !methods.selectHyperCubeCells.values)) {\n methods.selectHyperCubeCells.values = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n hasValues = !!methods.selectHyperCubeCells.values.length;\n }\n }\n } else {\n const values = b.brush\n .values()\n .map((s) => +s)\n .filter((v) => !isNaN(v));\n hasValues = !!values.length;\n selections.push({\n params: [info.path, info.dimensionIdx, values, false],\n method: 'selectHyperCubeValues',\n });\n }\n }\n }\n });\n\n if (!hasValues && isActive) {\n return [\n {\n method: 'resetMadeSelections',\n params: [],\n },\n ];\n }\n\n if (methods.rangeSelectHyperCubeValues) {\n selections.push({\n method: 'rangeSelectHyperCubeValues',\n params: [\n methods.rangeSelectHyperCubeValues.path,\n methods.rangeSelectHyperCubeValues.ranges,\n [],\n opts.orMode ?? true,\n ],\n });\n }\n\n if (methods.selectHyperCubeContinuousRange) {\n selections.push({\n method: 'selectHyperCubeContinuousRange',\n params: [methods.selectHyperCubeContinuousRange.path, methods.selectHyperCubeContinuousRange.ranges],\n });\n }\n\n if (methods.selectHyperCubeCells) {\n selections.push({\n method: 'selectHyperCubeCells',\n params: [\n methods.selectHyperCubeCells.path,\n methods.selectHyperCubeCells.values,\n methods.selectHyperCubeCells.cols,\n ],\n });\n }\n\n if (methods.selectPivotCells) {\n selections.push({\n method: 'selectPivotCells',\n params: [methods.selectPivotCells.path, methods.selectPivotCells.cells],\n });\n }\n\n if (methods.multiRangeSelectTreeDataValues) {\n selections.push({\n method: 'multiRangeSelectTreeDataValues',\n params: [methods.multiRangeSelectTreeDataValues.path, methods.multiRangeSelectTreeDataValues.ranges],\n });\n }\n\n return selections;\n}\n","import data from './data/dataset';\nimport qBrushHelper from './brush/q-brush';\nimport numberFormat from './formatter/numberFormat';\nimport timeFormat from './formatter/timeFormat';\n\nexport default function initialize(picasso) {\n data.util = picasso.data('matrix').util;\n picasso.data('q', data);\n picasso.formatter('q-number', numberFormat);\n picasso.formatter('q-time', timeFormat);\n}\n\ninitialize.qBrushHelper = qBrushHelper; // deprecated\ninitialize.selections = qBrushHelper;\n","const selectionUtils = {\n brushInterceptors: {\n DIM_VALUE_NULL: -2,\n DIM_VALUE_TOTAL: -3,\n brushOnlyOne,\n filterValues,\n },\n};\n\nexport default selectionUtils;\n\n/**\n * Implementation details\n */\n\n/**\n * Brush interception filter func - Brush ONE single value\n * @param selectBrush\n * @param items\n * @returns {*}\n */\nfunction brushOnlyOne(brush, items) {\n const activeBrushes = brush.brushes().filter((b) => b.type === 'value');\n let toggleOff = [];\n if (activeBrushes.length) {\n activeBrushes.forEach((b) => {\n toggleOff = toggleOff.concat(\n b.brush.values().map((v) => ({\n key: b.id,\n value: v,\n }))\n );\n });\n }\n\n return toggleOff.concat(items);\n}\n\nfunction findField(chartInstance, item) {\n const splitIndex = item.key.indexOf('qHyperCube') + 'qHyperCube'.length;\n const datasetName = item.key.substr(0, splitIndex);\n const fieldName = item.key.substr(splitIndex + 1);\n return chartInstance.dataset(datasetName).field(fieldName);\n}\n\n/**\n * Brush interception filter function\n * Do not allow selections on null value\n * Do not allow selections in locked dimension\n * @param chartInstance\n * @param items\n * @returns Object { items: {Array}, itemsAreLocked: {Boolean} }\n */\nfunction filterValues(chartInstance, items) {\n const self = this;\n let meta;\n let field;\n const lockedFields = [];\n let lockedItems = 0;\n const brushItems = [];\n\n items.forEach((item) => {\n if (item.value === self.DIM_VALUE_NULL || item.value === self.DIM_VALUE_TOTAL) {\n return;\n }\n field = findField(chartInstance, item);\n\n meta = field && field.raw();\n\n if (!meta.qLocked) {\n brushItems.push({\n key: item.key,\n value: item.value,\n });\n } else {\n lockedFields.push(meta);\n lockedItems++;\n }\n });\n\n return { items: brushItems, itemsAreLocked: lockedItems > 0 && lockedItems === items.length, lockedFields };\n}\n","import extend from 'extend';\nimport Actions from './selection-actions';\n\n// TODO: maybe add support later\nconst eventUtils = {\n showLockedFeedback: () => {},\n};\n\nconst DEFAULT_OPTIONS = {\n data: ['elemNo'],\n contexts: ['select'],\n startOnEmptySelection: true,\n style: {\n active: {\n strokeWidth: 2,\n stroke: '#333', // To make it consistent with other charts\n },\n inactive: {\n opacity: 0.3,\n },\n },\n};\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst SHIFT = 16;\n\n/**\n * Create a new Selections handler\n *\n * @param {Object} options\n * @param {Object} options.model The backend model for the chart\n * @param {Object} options.chartInstance Picasso chart instance\n * @param {Object} options.selectionsApi Object selectionsApi\n * @returns {Object} The selections handler instance\n */\nfunction Selections(options) {\n if (!options || !options.chartInstance || !options.selectionsApi) {\n throw Error('Selections-handler: Missing input');\n }\n const chartInstance = options.chartInstance;\n const selectionsApi = options.selectionsApi;\n const dataPaths = options.dataPaths || [''];\n const selectPaths = options.selectPaths;\n const lasso = options.lasso;\n\n let selectionContexts = [];\n const selectionsApiRestoreHelper = { propertiesToRestore: {} };\n let on = false;\n const actions = Actions(chartInstance, selectionsApi, selectPaths);\n\n // Not need for a function, so turned it into an object\n const fn = {};\n\n let lastShift = false;\n function shiftToggle(e) {\n if (e.keyCode === SHIFT && e.shiftKey !== lastShift) {\n lastShift = e.shiftKey;\n lasso.toggle();\n }\n }\n\n function confirmOrCancelSelection(event) {\n const key = event.keyCode;\n if (key === ESCAPE) {\n selectionsApi.cancel();\n } else if (key === ENTER) {\n selectionsApi.confirm();\n }\n }\n\n // If a single field in a single table is not locked, this function returns false\n function areAllFieldsLocked() {\n let dimFields = dataPaths.map((dataPath) =>\n chartInstance\n .dataset(dataPath)\n .fields()\n .filter((field) => field.type() === 'dimension')\n );\n\n // flattern list\n dimFields = [].concat.apply([], dimFields);\n\n return dimFields.length && dimFields.every((field) => field.raw().qLocked);\n }\n\n // If a single field in a single table is not locked, this function returns false\n function getFieldsLocked() {\n const lockedFields = [];\n let dimFields = dataPaths.map((dataPath) =>\n chartInstance\n .dataset(dataPath)\n .fields()\n .filter((field) => field.type() === 'dimension')\n );\n\n // flattern list\n dimFields = [].concat.apply([], dimFields);\n\n for (let i = 0; i < dimFields.length; i++) {\n if (dimFields[i].raw().qLocked) {\n lockedFields.push(dimFields[i].raw());\n }\n }\n return {\n fields: lockedFields,\n areAllFieldsLocked: lockedFields.length && lockedFields.length === dimFields.length,\n };\n }\n\n function isLassoDisabled() {\n return options.isLassoDisabled && options.isLassoDisabled();\n }\n\n selectionsApi.on('cleared', () => {\n selectionContexts.forEach((context) => {\n context.brush.clear();\n // Clear dependent components\n context.dependentComponents.forEach((comp) => {\n const instance = chartInstance.component(comp.id);\n if (instance) {\n instance.emit(comp.clear);\n }\n });\n });\n });\n\n // Setup a selection context\n /*\n builder - instance of chart-builder\n componentKeys = []\n options = {\n contexts: [],\n data: [],\n style: {}\n }\n */\n /**\n * Setup a selection context\n * @param {Object} options Selection context options\n * @returns {Object} The selections handler instance\n */\n fn.setUp = function (options) {\n fn.tearDown();\n\n const result = this.setUpBrush(options);\n\n if (on) {\n register();\n }\n\n return result;\n };\n fn.setUpBrush = function (options) {\n const opts = extend(true, {}, DEFAULT_OPTIONS, options);\n\n const selectionTrigger = {\n on: 'tap',\n action(e) {\n return e.ctrlKey || options.isSingleSelect ? 'set' : 'toggle';\n },\n contexts: opts.contexts,\n data: opts.data,\n globalPropagation: 'stop',\n };\n\n const selectionConsumer = {\n context: opts.contexts[0],\n data: opts.data,\n style: opts.style,\n };\n\n const context = createContext(opts, chartInstance);\n // Do this here instead of in register to be able to catch the consumer\n context.listeners.toggle = function (items) {\n if (!on) {\n return [];\n }\n const fieldsLocked = getFieldsLocked();\n if (opts.startOnEmptySelection && items.length === 0 && fieldsLocked.areAllFieldsLocked) {\n eventUtils.showLockedFeedback(fieldsLocked.fields);\n return [];\n }\n return actions.toggleValues(items, context.brush, opts.startOnEmptySelection);\n };\n\n // Add all three to cover tap, brush range and lasso\n context.brush.intercept('toggle-values', context.listeners.toggle);\n context.brush.intercept('add-values', context.listeners.toggle);\n context.brush.intercept('remove-values', context.listeners.toggle);\n context.brush.intercept('set-values', context.listeners.toggle);\n\n context.listeners.start = function () {\n if (selectionContexts.length > 1) {\n selectionContexts.forEach((c) => {\n if (c !== context) {\n c.brush.end();\n }\n });\n\n // something may still be needed but can not call selectionsApi.clear() that would cause a infinite loop\n // if (!selectionsApi.canClear || selectionsApi.canClear()) {\n // selectionsApi.clear();\n // }\n }\n };\n\n selectionContexts.push(context);\n\n return { trigger: selectionTrigger, consume: selectionConsumer };\n };\n fn.setUpStart = function () {\n fn.tearDown();\n };\n fn.setUpDone = function () {\n if (on) {\n register();\n }\n };\n\n fn.tearDown = function () {\n if (on) {\n deregister();\n }\n selectionContexts.forEach((context) => {\n context.brush.removeInterceptor('toggle-values', context.listeners.toggle);\n context.brush.removeInterceptor('add-values', context.listeners.toggle);\n context.brush.removeInterceptor('remove-values', context.listeners.toggle);\n context.brush.removeInterceptor('set-values', context.listeners.toggle);\n });\n selectionContexts = [];\n };\n\n function register() {\n selectionContexts.forEach((context) => {\n context.listeners.update = function (added, removed) {\n // On tap end, picaso will run rendering in the same frame, and if this is a heavy job then long tap end will happen before tap end finish. This can trigger the radial context menu.\n // So we prevent long tap end here.\n if (!context.sleep) {\n actions.update(added, removed, context.brush);\n }\n };\n context.brush.on('update', context.listeners.update);\n context.brush.on('start', context.listeners.start);\n });\n }\n\n function deregister() {\n selectionContexts.forEach((context) => {\n context.brush.removeListener('update', context.listeners.update);\n context.brush.removeListener('start', context.listeners.start);\n });\n }\n\n fn.pauseEngineCalls = function (id) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.sleep = true;\n }\n });\n };\n\n fn.resumeEngineCalls = function (id, run) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.sleep = false;\n if (run) {\n context.listeners.update([], []);\n }\n }\n });\n };\n\n fn.addComponent = function (id, comp) {\n selectionContexts.forEach((context) => {\n if (context.id === id) {\n context.dependentComponents.push(comp);\n }\n });\n };\n\n fn.on = function () {\n if (on) {\n return;\n }\n on = true;\n\n register();\n\n document.addEventListener('keydown', shiftToggle);\n document.addEventListener('keyup', shiftToggle);\n\n const onDeactivated = () => {\n selectionContexts.forEach((context) => {\n context.brush.end();\n });\n document.removeEventListener('keyup', confirmOrCancelSelection);\n if (lasso.active()) {\n lasso.toggle();\n }\n };\n selectionsApi.on('deactivated', onDeactivated);\n selectionsApiRestoreHelper.unbindDeactivated = () => {\n selectionsApi.removeListener('deactivated', onDeactivated);\n };\n\n const onActivated = () => {\n document.addEventListener('keyup', confirmOrCancelSelection);\n };\n selectionsApi.on('activated', onActivated);\n selectionsApiRestoreHelper.unbindActivated = () => {\n selectionsApi.removeListener('activated', onActivated);\n };\n };\n fn.isOn = () => on;\n fn.off = function () {\n if (!on) {\n return;\n }\n on = false;\n deregister();\n\n document.removeEventListener('keydown', shiftToggle);\n document.removeEventListener('keyup', shiftToggle);\n document.removeEventListener('keyup', confirmOrCancelSelection);\n\n selectionsApiRestoreHelper.unbindActivated();\n selectionsApiRestoreHelper.unbindDeactivated();\n };\n\n fn.lassoState = function () {\n return lasso.active() && !isLassoDisabled();\n };\n fn.allFieldsLocked = function () {\n return areAllFieldsLocked();\n };\n\n return fn;\n}\n\nclass NoSelections {\n // eslint-disable-next-line class-methods-use-this\n isOn() {\n return false;\n }\n\n // eslint-disable-next-line class-methods-use-this\n on() {\n console.warn('Can not turn on selections on this object');\n }\n\n // eslint-disable-next-line class-methods-use-this\n off() {}\n}\n\nexport default {\n create(options) {\n if (!options.selectionsApi) {\n return new NoSelections();\n }\n return Selections(options);\n },\n};\n\nfunction createContext(options, chartInstance) {\n return {\n brush: chartInstance.brush(options.contexts[0]),\n listeners: {},\n dependentComponents: [],\n id: options.contexts[0],\n };\n}\n","import PicassoQ from 'picasso-plugin-q/dist/picasso-q';\nimport selectionUtils from './selection-utils';\n\n// TODO: maybe add support later\nconst eventUtils = {\n showLockedFeedback: () => {},\n};\n\nfunction SelectionActions(chartInstance, selectionsApi, paths) {\n function fn() {}\n\n function update(added, removed, brush) {\n if (!selectionsApi.isActive()) {\n selectionsApi.begin(paths);\n }\n const selections = PicassoQ.qBrushHelper(brush);\n selections.forEach((s) => {\n selectionsApi.select(s);\n });\n }\n\n function toggleValues(items, brush, startOnEmptySelection) {\n const filterResult = selectionUtils.brushInterceptors.filterValues(chartInstance, items);\n const itms = filterResult.items;\n if (filterResult.itemsAreLocked) {\n eventUtils.showLockedFeedback(filterResult.lockedFields);\n }\n if (!selectionsApi.isActive() && !filterResult.itemsAreLocked && (startOnEmptySelection || itms.length > 0)) {\n selectionsApi.begin(paths);\n brush.start();\n brush.emit('update', [], []); // and activate our brush\n }\n\n return itms;\n }\n\n fn.update = update;\n fn.toggleValues = toggleValues;\n\n return fn;\n}\nexport default SelectionActions;\n","/**\n * Checks whether a collision has occurred for range selection\n * @param e - event, in this case a mouse event\n * @param targets - the target points that the selections are hitting\n * @param selectionGesture - The type of selection gesture, for example area range select\n * @returns {boolean} - True, if a collision has occurred, otherwise false\n */\nfunction isOnComponentForRange(e, targets, selectionGesture) {\n return (\n !!e &&\n !!selectionGesture.chart\n .componentsFromPoint({\n x: e.center.x,\n y: e.center.y,\n })\n .filter((c) => targets.indexOf(c.settings.key) !== -1)[0]\n );\n}\n\n/**\n * Checks whether a collision has occurred for lasso selection\n * @param e - event, in this case a mouse event\n * @param gesturesParams - parameters for lasso selection\n * @param lassoGesture - the lasso gesture instance\n * @returns {boolean} - True, if a collision has occurred, otherwise false\n */\nfunction isOnComponentForLasso(e, gesturesParams, lassoGesture) {\n return (\n e &&\n lassoGesture.chart\n .componentsFromPoint({\n x: e.center.x,\n y: e.center.y,\n })\n .filter((c) => c.settings.key === gesturesParams.keys.componentKey)[0]\n );\n}\n\nfunction isOnComponentForNavBtn(e, legendBrushKey, navBtnGesture) {\n const components = navBtnGesture.chart.componentsFromPoint(e.center);\n return components.some((c) => c.settings.key === legendBrushKey);\n}\n\nexport default {\n isOnComponentForRange,\n isOnComponentForLasso,\n isOnComponentForNavBtn,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\nfunction getLassoState(handlers) {\n return handlers.selectionHandler.lassoState() && !handlers.selectionHandler.allFieldsLocked();\n}\n\n/**\n * Handles lasso events for picasso charts using HammerJS. When activating lasso selection enable function is\n * triggered first. lassoStart is triggered on all areas specified by options.direction key. Lasso is the gesture\n * that will be active by default.\n */\nfunction callLassoGesture(state, gesturesFns, gesturesParams) {\n return {\n type: 'Pan',\n options: {\n direction: Hammer.DIRECTION_ALL,\n threshold: 1,\n enable(manager, e) {\n if (state.lassoing) {\n return gesturesFns.isSelectionEnabled();\n }\n const hitComp = onComponentChecker.isOnComponentForLasso(e, gesturesParams, this);\n return (\n gesturesFns.isSelectionEnabled() && e && (getLassoState(gesturesParams.handlers) || state.lassoing) && hitComp\n );\n },\n event: 'lasso',\n },\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n lassostart(e) {\n const hitComp = onComponentChecker.isOnComponentForLasso(e, gesturesParams, this);\n if (!hitComp) {\n return;\n }\n gesturesFns.switchTo('lasso', this.chart, e);\n state.lassoing = true;\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.lassoBrushKey);\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoStart', e);\n },\n lassomove(e) {\n if (!state.lassoing) {\n return;\n }\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoMove', e);\n },\n lassoend(e) {\n if (!state.lassoing) {\n return;\n }\n\n e.clientX = e.pointers[0].clientX;\n e.clientY = e.pointers[0].clientY;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoEnd', e);\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.lassoBrushKey, true);\n state.lassoing = false;\n },\n lassocancel(e) {\n state.lassoing = false;\n gesturesFns.doEmit(this.chart, 'lasso', 'lassoCancel', e);\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.lassoBrushKey, false);\n },\n },\n };\n}\n\nexport default {\n callLassoGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\n/**\n * Handles measure range selection events for picasso charts using HammerJS. When activating measure range selection enable function is\n * triggered first. measurerangestart is triggered on all areas specified by options.direction key. Only after measurerangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called measurerange, then our\n * events must be named measurerangestart, measurerangemove, measurerangeend, measurerangecancel.\n */\nfunction callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis) {\n const activeRangeBrush = gesturesParams.keys.dimRangeBrushKey ? 'majorrange' : 'arearange';\n\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_HORIZONTAL : Hammer.DIRECTION_VERTICAL,\n event: 'measurerange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenMea) {\n return false;\n }\n\n if (state.measureSelecting) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'measurerange'\n ? [measureAxis, gesturesParams.keys.componentKey]\n : [measureAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.measureSelecting = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.measureSelecting && !!gesturesParams.keys.measureRangeBrushKey;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n measurerangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'measurerange'\n ? [measureAxis, gesturesParams.keys.componentKey]\n : [measureAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.measureSelecting = true;\n gesturesFns.switchTo('measurerange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.measureRangeBrushKey);\n },\n measurerangemove(e) {\n if (!state.measureSelecting) {\n return;\n }\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeMove', e);\n },\n measurerangeend(e) {\n if (!state.measureSelecting) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.measureRangeBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeMeasure', 'rangeEnd', e);\n state.measureSelecting = false;\n },\n measurerangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.measureRangeBrushKey, false);\n state.measureSelecting = false;\n },\n },\n };\n}\n\nexport default {\n callMeasureRangeGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\nfunction getAxisOrientation(axis, orientation) {\n let dir;\n if (axis === 'x-axis') {\n dir = orientation === 'horizontal' ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL;\n } else {\n dir = orientation === 'horizontal' ? Hammer.DIRECTION_HORIZONTAL : Hammer.DIRECTION_VERTICAL;\n }\n return dir;\n}\n\n/**\n * Handles area range selection events for picasso charts using HammerJS. When activating area range selection enable function is\n * triggered first. arearangestart is triggered on all areas specified by options.direction key. Only after arearangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called arearange, then our\n * events must be named arearangestart, arearangemove, arearangeend, arearangecancel.\n */\nfunction callAreaRangeGesture(state, gesturesFns, gesturesParams, axis) {\n const activeRangeBrush = gesturesParams.keys.dimRangeBrushKey ? 'majorrange' : 'measurerange';\n\n return {\n // Area range select gesture\n type: 'Pan',\n options: {\n direction: getAxisOrientation(axis, gesturesParams.isHorizontal),\n event: 'arearange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenDim) {\n return false;\n }\n\n if (state.minoring) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'arearange' ? [axis, gesturesParams.keys.componentKey] : [axis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.minoring = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.minoring;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n arearangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'arearange' ? [axis, gesturesParams.keys.componentKey] : [axis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.minoring = true;\n gesturesFns.switchTo('arearange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.areaBrushKey);\n },\n arearangemove(e) {\n if (!state.minoring) {\n return;\n }\n // Behaves likes lasso, which adds all data points as soon as we hit the points, we only want to highlight the values within the range\n this.chart.brush(gesturesParams.keys.areaBrushKey).clear();\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaMove', e);\n },\n arearangeend(e) {\n if (!state.minoring) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.areaBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeMinor', 'areaEnd', e);\n state.minoring = false;\n },\n arearangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.areaBrushKey, false);\n state.minoring = false;\n },\n },\n };\n}\n\nexport default {\n callAreaRangeGesture,\n};\n","import Hammer from 'hammerjs';\nimport onComponentChecker from './on-component-checker';\n\n/**\n * Handles dimension range selection events for picasso charts using HammerJS. When activating dimension range selection enable function is\n * triggered first. majorrangestart is triggered on all areas specified by options.direction key. Only after majorrangestart\n * is triggered, then the other events might be triggered as well. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called majorrange, then our\n * events must be named majorrangestart, majorrangemove, majorrangeend, majorrangecancel.\n */\nfunction callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis) {\n const activeRangeBrush = gesturesParams.keys.measureRangeBrushKey ? 'measurerange' : 'arearange';\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL,\n event: 'majorrange',\n enable(manager, e) {\n if (!gesturesParams.rangeSelStatus.isOpenDim) {\n return false;\n }\n if (state.majoring) {\n return gesturesFns.isSelectionEnabled();\n }\n const targets =\n gesturesParams.active.gesture === 'majorrange' ? [dimAxis, gesturesParams.keys.componentKey] : [dimAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n\n state.majoring = gesturesFns.isSelectionEnabled() && !!e && !!hitComp;\n return state.majoring && !!gesturesParams.keys.dimRangeBrushKey;\n },\n },\n requireFailure: `lasso ${activeRangeBrush}`,\n recognizeWith: gesturesParams.handlers.scrollHandler ? 'drag' : null,\n events: {\n majorrangestart(e) {\n const targets =\n gesturesParams.active.gesture === 'majorrange' ? [dimAxis, gesturesParams.keys.componentKey] : [dimAxis];\n const hitComp = onComponentChecker.isOnComponentForRange(e, targets, this);\n if (!hitComp) {\n return;\n }\n\n state.majoring = true;\n gesturesFns.switchTo('majorrange', this.chart, e);\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeStart', e);\n gesturesParams.handlers.selectionHandler.pauseEngineCalls(gesturesParams.keys.dimRangeBrushKey);\n },\n majorrangemove(e) {\n if (!state.majoring) {\n return;\n }\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeMove', e);\n },\n majorrangeend(e) {\n if (!state.majoring) {\n return;\n }\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.dimRangeBrushKey, true);\n gesturesFns.doEmit(this.chart, 'rangeDim', 'rangeEnd', e);\n state.majoring = false;\n },\n majorrangecancel() {\n gesturesParams.handlers.selectionHandler.resumeEngineCalls(gesturesParams.keys.dimRangeBrushKey, false);\n state.majoring = false;\n },\n },\n };\n}\n\nexport default {\n callDimensionRangeGesture,\n};\n","import Hammer from 'hammerjs';\n\n/**\n * Handles dragging for picasso charts using HammerJS. When activating dragging the enable function is\n * triggered first. dragstart is triggered on all areas specified by options.direction key. The different event\n * names must be appended as suffixes for options.event. In this case options.event is called drag, then our\n * events must be named dragstart, dragmove, dragend, dragcancel.\n */\nfunction callDragGesture(state, gesturesFns, gesturesParams, hasSelections, isRtl) {\n let dragPoint = {};\n return {\n type: 'Pan',\n options: {\n direction: gesturesParams.isHorizontal ? Hammer.DIRECTION_VERTICAL : Hammer.DIRECTION_HORIZONTAL,\n event: 'drag',\n enable(manager, e) {\n if (state.dragging) {\n return gesturesFns.isNavigationEnabled();\n }\n\n state.dragging =\n gesturesFns.isNavigationEnabled() &&\n !!e &&\n !!this.chart\n .componentsFromPoint({ x: e.center.x, y: e.center.y })\n .filter((c) => c.settings.key === gesturesParams.keys.componentKey)[0];\n return state.dragging;\n },\n },\n requireFailure: hasSelections ? `lasso ${gesturesFns.getBrushConfig()}` : '',\n events: {\n dragstart(e) {\n dragPoint = { x: e.deltaX, y: e.deltaY };\n let change =\n -(gesturesParams.isHorizontal ? e.deltaY : e.deltaX) / gesturesParams.handlers.scrollHandler.getItemSize();\n if (!gesturesParams.isHorizontal && isRtl) {\n change = -change;\n }\n gesturesParams.handlers.scrollHandler.getScrollApi().move(change);\n },\n dragmove(e) {\n if (!state.dragging) {\n return;\n }\n let change =\n -(gesturesParams.isHorizontal ? e.deltaY - dragPoint.y : e.deltaX - dragPoint.x) /\n gesturesParams.handlers.scrollHandler.getItemSize();\n if (!gesturesParams.isHorizontal && isRtl) {\n change = -change;\n }\n gesturesParams.handlers.scrollHandler.getScrollApi().move(change);\n dragPoint = { x: e.deltaX, y: e.deltaY };\n },\n dragend() {\n if (!state.dragging) {\n return;\n }\n state.dragging = false;\n },\n dragcancel() {\n state.dragging = false;\n },\n },\n };\n}\n\nexport default {\n callDragGesture,\n};\n","import onComponentChecker from './on-component-checker';\n\n/**\n * Handles navigational button events for picasso charts using HammerJS. When pressing on a navigational button,\n * the enable function is triggered to check if the navigational button should be enabled or not.\n * For example, in edit mode it should be disabled.\n * @param isEnabledFn - Function that returns a boolean. In this case return false if in edit mode, true otherwise\n * @param legendBrushKey - String defining the legend brush key\n * @returns An object for reacting to tap events according to HammerJS API\n */\nfunction callNavBtnGesture(isEnabledFn, legendBrushKey) {\n return {\n type: 'Tap',\n options: {\n event: 'navBtnTap',\n enable(manager, e) {\n if (!e || !isEnabledFn()) {\n return false;\n }\n\n return onComponentChecker.isOnComponentForNavBtn(e, legendBrushKey, this);\n },\n },\n events: {\n navBtnTap(e) {\n // Invokes paging interaction on legend\n this.chart.componentsFromPoint(e.center).forEach((c) => {\n const btn = e.target;\n const attr = btn ? btn.getAttribute('data-action') : '';\n if (attr) {\n return c.emit(attr);\n }\n return undefined;\n });\n },\n },\n };\n}\n\nexport default {\n callNavBtnGesture,\n};\n","import lassoGesture from './gestures/lasso-gesture';\nimport measureRangeGesture from './gestures/measure-range-gesture';\nimport areaRangeGesture from './gestures/area-range-gesture';\nimport dimensionRangeGesture from './gestures/dimension-range-gesture';\nimport dragGesture from './gestures/drag-gesture';\nimport navBtnGesture from './gestures/navigational-button-gesture';\n\n/**\n * Creates Picasso components for interaction component that are dependent on eatchother\n */\n\nfunction DependentInteractions(handlers, orientation, isRtl, keys, rangeSelStatus) {\n const ret = {};\n\n orientation = orientation || 'vertical';\n\n const lassoBrushKey = keys.lassoBrushKey || 'select';\n const dimRangeBrushKey = keys.dimRangeBrushKey || null;\n const measureRangeBrushKey = keys.measureRangeBrushKey || null;\n const areaBrushKey = keys.areaBrushKey || null;\n const legendBrushKey = keys.legendBrushKey || null;\n\n const hasSelections = !!handlers.selectionHandler && handlers.selectionHandler.isOn();\n\n const state = {\n dragging: false,\n lassoing: false,\n majoring: false,\n minoring: false,\n measureSelecting: false,\n };\n\n const active = {\n gesture: '',\n type: '',\n };\n\n const isHorizontal = orientation === 'horizontal';\n\n const dimAxis = isHorizontal ? 'y-axis' : 'x-axis';\n const measureAxis = isHorizontal ? 'x-axis' : 'y-axis';\n\n function switchTo(gesture, chart, e) {\n if (active.gesture === gesture) {\n return;\n }\n let clearKey = lassoBrushKey;\n const activeChart = chart || active.chart;\n\n switch (active.gesture) {\n case 'majorrange':\n doEmit(activeChart, 'rangeDim', 'rangeClear', e);\n clearKey = dimRangeBrushKey;\n break;\n case 'measurerange':\n doEmit(activeChart, 'rangeMeasure', 'rangeClear', e);\n clearKey = measureRangeBrushKey;\n break;\n case 'arearange':\n doEmit(activeChart, 'rangeMinor', 'areaClear', e);\n clearKey = areaBrushKey;\n break;\n default:\n break;\n }\n\n active.gesture = gesture;\n const newType = gesture === 'range' ? 'range' : 'item';\n\n if (active.type && active.type !== newType) {\n activeChart.brush(clearKey).clear();\n }\n\n active.chart = chart;\n active.type = newType;\n }\n\n // Just added here to allow easy disabling of things while developing\n function doEmit(chart, comp, cont, e) {\n if (chart) {\n const inst = chart.component(comp);\n if (inst) {\n inst.emit(cont, e);\n }\n }\n }\n\n function getBrushConfig() {\n if (!dimRangeBrushKey) {\n return 'measurerange arearange';\n }\n if (!measureRangeBrushKey) {\n return 'majorrange arearange';\n }\n return 'majorrange measurerange';\n }\n\n let gestures = [];\n\n const gesturesFns = {\n isSelectionEnabled: () => handlers.selectionHandler && handlers.selectionHandler.isOn(),\n isNavigationEnabled: () => handlers.scrollHandler && handlers.scrollHandler.isOn(),\n doEmit,\n switchTo,\n getBrushConfig,\n };\n\n const gesturesParams = {\n handlers,\n keys,\n isHorizontal,\n active,\n rangeSelStatus,\n };\n\n if (hasSelections) {\n gestures = [\n {\n type: 'Tap',\n options: {\n event: 'rangeClearTap',\n },\n events: {\n rangeClearTap(e) {\n switchTo('none', this.chart, e);\n\n state.majoring = false;\n state.measureSelecting = false;\n state.minoring = false;\n },\n },\n },\n ];\n\n // Ordering matters here because the tap event, because the above gesture does not return anything\n // and we want don't want to call the navigational button enable function for all tap events\n gestures.unshift(navBtnGesture.callNavBtnGesture(gesturesFns.isNavigationEnabled, legendBrushKey));\n\n gestures.push(lassoGesture.callLassoGesture(state, gesturesFns, gesturesParams));\n\n // Only two of the axis range selection can exist at the same time\n if (!dimRangeBrushKey) {\n gestures.push(measureRangeGesture.callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n // Register component to selections handler so it is cleared properly\n handlers.selectionHandler.addComponent(measureRangeBrushKey, { id: 'rangeMeasure', clear: 'rangeClear' });\n\n gestures.push(areaRangeGesture.callAreaRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(areaBrushKey, { id: 'rangeMinor', clear: 'areaClear' });\n } else if (!measureRangeBrushKey) {\n gestures.push(dimensionRangeGesture.callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(dimRangeBrushKey, { id: 'rangeDim', clear: 'rangeClear' });\n\n gestures.push(areaRangeGesture.callAreaRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n handlers.selectionHandler.addComponent(areaBrushKey, { id: 'rangeMinor', clear: 'areaClear' });\n } else {\n gestures.push(dimensionRangeGesture.callDimensionRangeGesture(state, gesturesFns, gesturesParams, dimAxis));\n handlers.selectionHandler.addComponent(dimRangeBrushKey, { id: 'rangeDim', clear: 'rangeClear' });\n\n gestures.push(measureRangeGesture.callMeasureRangeGesture(state, gesturesFns, gesturesParams, measureAxis));\n handlers.selectionHandler.addComponent(measureRangeBrushKey, { id: 'rangeMeasure', clear: 'rangeClear' });\n }\n }\n\n if (handlers.scrollHandler) {\n gestures.push(dragGesture.callDragGesture(state, gesturesFns, gesturesParams, hasSelections, isRtl));\n\n // On scroll we need to switch of the major ranging, so that pan will work\n handlers.scrollHandler.getScrollApi().on('update', onScrollUpdate);\n }\n\n function onScrollUpdate() {\n switchTo('none');\n state.majoring = false;\n state.measureSelecting = false;\n state.minoring = false;\n }\n\n ret.gestures = gestures;\n ret.destroy = function () {\n if (handlers.scrollHandler) {\n handlers.scrollHandler.getScrollApi().removeListener('update', onScrollUpdate);\n }\n };\n\n return ret;\n}\n\nexport default {\n create: DependentInteractions,\n};\n","/**\n * Create a new tooltip action context\n *\n * @param {Object} chartInstance Picasso chart instance\n * @returns {Object} The tooltip actions handler instance\n */\nfunction TooltipActions(chartInstance, componentKey, data, context, tooltipKey) {\n let hasOpen = false;\n\n context = context || 'tooltip';\n data = data || ['self'];\n\n const brush = chartInstance.brush(context);\n\n const fn = {};\n\n // Exposed here for test stub purposes\n fn.isOpen = function () {\n return hasOpen;\n };\n\n function closeTooltip() {\n if (hasOpen) {\n const tooltip = chartInstance.component(tooltipKey);\n tooltip.emit('hide');\n }\n hasOpen = false;\n }\n\n function openTooltip(shapes) {\n hasOpen = true;\n const tooltip = chartInstance.component(tooltipKey);\n const e = {};\n const data = { nodes: shapes };\n tooltip.emit('show', e, data);\n }\n\n fn.closeTooltip = closeTooltip;\n\n /**\n * Updates the contents in tooltip. Requires an array of tooltipInfo.labelData and\n * an array of tooltipInfo.measureRows for the tooltip to display content, otherwise\n * it will show nothing. These key value mappings should be sent in from the charts.\n */\n function update() {\n const brushes = brush.brushes();\n\n // Fetches only the shapes that we are hovering over\n const shapes = chartInstance.getAffectedShapes(context, 'and', data, componentKey);\n\n if (brushes.length >= 1) {\n hasOpen = true;\n openTooltip(shapes);\n } else {\n closeTooltip();\n }\n }\n\n function toggleInterceptor(items) {\n // Remove duplicates if we have multiple dimensions to aoivd a toggle\n // ex: set(2006 ) ->2006 is on, followed by set(2006 ) ->2006 is off\n if (data.length > 1) {\n const check = {};\n const ret = [];\n items.forEach((item) => {\n if (!check[item.key]) {\n check[item.key] = {};\n }\n if (!check[item.key][item.value]) {\n check[item.key][item.value] = true;\n ret.push(item);\n }\n });\n return ret;\n }\n return items;\n }\n\n fn.update = update;\n fn.toggleInterceptor = toggleInterceptor;\n return fn;\n}\n\nexport default {\n create(...args) {\n return TooltipActions(...args);\n },\n};\n","export default {\n formatMeasureValue,\n};\n\nfunction formatMeasureValue(field, measureContent) {\n if (field.raw().isCustomFormatted) {\n return field.formatter()(measureContent.value.qText);\n }\n const value = measureContent.value.qNum !== undefined ? measureContent.value.qNum : measureContent.value.qValue;\n return field.formatter()(value);\n}\n","const MAX_VISIBLE_ITEMS = 5;\nconst OTHERS_ELEMNO = -3;\nconst NULL_ELEMNO = -2;\n\n// TODO: The function getAffectedShapes returns duplicate shapes.\n// Remove when this is fixed on picasso\nfunction filterDuplicateShapes(shapes) {\n const uniques = [];\n\n shapes.forEach((shape) => {\n if (uniques.indexOf(shape) === -1 && shape.type !== 'container') {\n uniques.push(shape);\n }\n });\n\n return uniques;\n}\n\nexport const createFilter = (filterShapes) => (shapes) =>\n filterShapes ? filterShapes(shapes) : filterDuplicateShapes(shapes);\n\nexport const createContent =\n (context) =>\n ({ h, data, style }) => {\n const content = extractContent(context, data);\n const renderSettings = {\n h,\n style,\n rtl: context.direction === 'rtl',\n translator: context.translator,\n };\n return context.renderer(renderSettings, content);\n };\n\nfunction extractContent(tooltipInfo, uniqueShapes) {\n const dataset = tooltipInfo.chartInstance.dataset(tooltipInfo.dataPath);\n\n // Create content + header\n const content = [];\n\n const numberInExcess = uniqueShapes.length - MAX_VISIBLE_ITEMS;\n const numItems = Math.min(MAX_VISIBLE_ITEMS, uniqueShapes.length);\n for (let j = 0; j < numItems; j++) {\n const shape = uniqueShapes[j];\n const localContent = {\n rows: [],\n };\n\n if (tooltipInfo.labelData) {\n const labels = [];\n const refPaths = tooltipInfo.labelData;\n let isNullValue = false;\n for (let i = 0; i < refPaths.length; i++) {\n const currentNode = shape.data[refPaths[i]].value;\n if (currentNode.qElemNo === NULL_ELEMNO || currentNode.qElemNumber === NULL_ELEMNO) {\n // The node is null\n isNullValue = true;\n break;\n }\n labels.push(shape.data[refPaths[i]].value.qText);\n }\n\n if (isNullValue) {\n return undefined;\n }\n\n localContent.header = tooltipInfo.headerResolver(labels);\n localContent.rows = tooltipInfo.measureRows\n .map((measureRow) => {\n const rowData = shape.data;\n return tooltipInfo.rowResolver(dataset.field(rowData[measureRow].source.field), rowData[measureRow], rowData);\n })\n .filter((row) => !!row);\n\n const colorByData = getColorByDimData(tooltipInfo, shape);\n if (colorByData) {\n localContent.rows.unshift(colorByData);\n }\n content.push(localContent);\n }\n }\n if (numberInExcess > 0) {\n content.numberInExcess = numberInExcess;\n }\n\n content.rowCount = content[0] ? content.length * content[0].rows.length : 0;\n return content;\n}\n\nfunction getOthersIndex(values) {\n let index = -1;\n for (let i = 0; i < values.length; i++) {\n if (values[i] === OTHERS_ELEMNO) {\n index = i;\n }\n }\n return index;\n}\n\n/**\n * Get the information of how the color by row should look like.\n * The data for color by is fetched directly from the shape and it's key value mapping called\n * colorByDim, which contains the label and the elemNo\n * @param tooltipInfo - an object containing the chart view\n * @param shape - an object representing the shape currently hovered upon\n * @returns {{label: string - legendTitle, value: (*|String) - color by value, template: string - html template}}\n */\nfunction getColorByDimData(tooltipInfo, shape) {\n const colorData = shape.data.color;\n const colorSettings = tooltipInfo.colorService?.getSettings?.();\n\n if (!colorSettings || colorSettings.type === 'color' || !colorData || !colorSettings.fieldType) {\n return undefined;\n }\n\n const ids = [];\n tooltipInfo.data.forEach((mapping) => {\n const elemNoObj = shape.data[mapping];\n if (elemNoObj) {\n ids.push(elemNoObj.value);\n }\n });\n const othersIndex = getOthersIndex(ids);\n\n const { translator } = tooltipInfo;\n const label = colorSettings.label;\n const color = shape.attrs?.fill;\n const value = othersIndex !== -1 ? translator.get('properties.dimensionLimits.others') : colorData.label;\n return { color, label, value };\n}\n","/* eslint no-underscore-dangle: 0 */\nconst TOOLTIP_CONTAINER_ID = 'dist-flow-tooltip';\nconst TOOLTIP_CONTAINER_SELECTOR = `#${TOOLTIP_CONTAINER_ID}`;\n\nfunction appendTooltipContainer() {\n if (!document.querySelector(TOOLTIP_CONTAINER_SELECTOR)) {\n const container = document.createElement('div');\n container.id = TOOLTIP_CONTAINER_ID;\n container.style.overflow = 'hidden';\n container.style.position = 'fixed';\n container.style.pointerEvents = 'none';\n container.style.left = '0px';\n container.style.top = '0px';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.zIndex = 1020;\n document.body.appendChild(container);\n }\n}\n\nfunction destroyTooltipContainer() {\n const elm = document.querySelector(TOOLTIP_CONTAINER_SELECTOR);\n if (elm && elm.parentElement && elm.childElementCount < 1) {\n elm.parentElement.removeChild(elm);\n }\n}\n\n/**\n * Base tooltip definition\n */\nexport default function tooltip({ key = 'tooltip', rtl, fontFamily, filter, content }) {\n return {\n show: true,\n key,\n type: 'tooltip',\n layout: {\n displayOrder: 3,\n },\n beforeMount() {\n appendTooltipContainer();\n },\n beforeUpdate() {\n appendTooltipContainer();\n },\n destroyed() {\n destroyTooltipContainer();\n },\n settings: {\n appendTo: () => document.querySelector(TOOLTIP_CONTAINER_SELECTOR),\n content,\n filter,\n extract: (context) => context.node,\n direction: rtl ? 'rtl' : 'ltr',\n placement: 'bounds',\n },\n style: {\n arrow: {\n color: '#404040',\n },\n content: {\n display: 'table',\n 'border-spacing': '4px',\n background: 'rgba(64, 64, 64, 0.9)',\n opacity: '1',\n fontSize: '13px',\n fontFamily,\n 'empty-cells': 'show',\n },\n cell: {\n 'max-width': '180px',\n 'word-break': 'break-word',\n 'word-wrap': 'break-word',\n 'overflow-wrap': 'break-word',\n hyphens: 'auto',\n },\n },\n };\n}\n","/** @jsx h */\nimport rtlUtils from '../../extra/rtl-util';\n\nconst { detectTextDirection: getDirection } = rtlUtils;\n\nexport default function render(settings, content) {\n const { h, style, translator, rtl } = settings;\n const result = [];\n const labelTextAlign = rtl ? 'right' : 'left';\n content.forEach((item) => {\n if (item.header) {\n const headerStyle = {\n ...style.cell,\n textAlign: labelTextAlign,\n fontWeight: 'bold',\n direction: getDirection(item.header),\n };\n result.push(\n <tr>\n <td style={headerStyle} colSpan={2}>\n {item.header}\n </td>\n </tr>\n );\n }\n item.rows.forEach((row) => {\n let valueContent = row.value;\n if (row.color) {\n const symbolStyle = {\n display: 'inline-block',\n width: 10,\n height: 10,\n 'background-color': row.color,\n margin: '0 8px',\n };\n const symbol = <div style={symbolStyle} />;\n valueContent = rtl ? [row.value, symbol] : [symbol, row.value];\n }\n const label = rtl ? [':', row.label] : [row.label, ':'];\n const labelStyle = { ...style.cell, textAlign: labelTextAlign, direction: getDirection(row.label) };\n const valueStyle = { ...style.cell, textAlign: rtl ? 'left' : 'right', direction: getDirection(row.value) };\n result.push(\n <tr>\n <td style={labelStyle}>{label}</td>\n <td style={valueStyle}>{valueContent}</td>\n </tr>\n );\n });\n });\n if (content.numberInExcess) {\n const moreText = translator.get('Object.ChartTooltip.NMore', content.numberInExcess);\n const moreStyle = { ...style.cell, textAlign: labelTextAlign, direction: getDirection(moreText) };\n result.push(\n <tr>\n <td style={moreStyle} colSpan={2}>\n {moreText}\n </td>\n </tr>\n );\n }\n return result;\n}\n","import extend from 'extend';\nimport TooltipAction from './tooltip-actions';\nimport formatting from '../formatting';\nimport { createFilter, createContent } from './tooltip-content';\nimport createTooltip from './tooltips-component';\nimport defaultTooltipRenderer from './tooltip-renderer';\n\nconst DEFAULT_OPTIONS = {\n tooltipKey: 'tooltip',\n data: [''],\n contexts: ['tooltip'],\n headerResolver(values) {\n return values.join(', ');\n },\n rowResolver(field, measureContent) {\n return {\n value: formatting.formatMeasureValue(field, measureContent),\n label: field.title(),\n };\n },\n direction: 'ltr',\n renderer: defaultTooltipRenderer,\n};\n\n/**\n * Create a new Tooltips handler\n *\n * @param {Object} model The backend model for the chart\n * @param {Object} chartInstance Picasso chart instance\n * @returns {Object} The selections handler instance\n */\nfunction Tooltips(chartInstance, $element, chartType) {\n if (!chartInstance) {\n throw Error('Tooltips-handler: Missing input');\n }\n\n let tooltipContexts = {};\n let on = false;\n\n // Not need for a function, so turned it into an object\n const fn = {};\n\n /**\n * Setup a tooltips context\n * @param {Object} options Tooltip context options\n * @returns {Object} The selections handler instance\n */\n fn.setUp = function (options) {\n const opts = extend(true, {}, DEFAULT_OPTIONS, options);\n\n if (!opts.componentKey) {\n throw Error('Tooltips-handler.setUp: Missing required input');\n }\n\n if (tooltipContexts[opts.contexts[0]] && on) {\n deRegContext(tooltipContexts[opts.contexts[0]]);\n }\n\n const context = createContext(opts, chartInstance);\n tooltipContexts[opts.contexts[0]] = context;\n\n if (on) {\n registerContext(context);\n }\n\n const component = createTooltip({\n key: opts.tooltipKey,\n rtl: context.direction === 'rtl',\n fontFamily: context.theme.getStyle(chartType, 'tooltip', 'fontFamily'),\n filter: createFilter(context.filterShapes),\n content: createContent(context, opts.dataPath),\n });\n\n const settings = opts.chartBuilder.getSettings();\n settings.components.push(component);\n\n return {\n trigger: {\n on: context.treatAsDesktop ? 'over' : 'tap',\n action: 'set',\n contexts: opts.contexts,\n data: opts.data,\n globalPropagation: 'stop',\n },\n consume: opts.contexts.map((c) => ({ context: c })),\n component,\n };\n };\n\n fn.tearDown = function () {\n if (on) {\n deregister();\n }\n tooltipContexts = [];\n };\n\n function register() {\n Object.keys(tooltipContexts).forEach((key) => {\n registerContext(tooltipContexts[key]);\n });\n }\n\n function registerContext(context) {\n context.listeners.update = function (added, removed) {\n context.action.update(added, removed, context);\n };\n context.listeners.end = function () {\n context.action.closeTooltip();\n };\n\n context.brush.on(context.treatAsDesktop ? 'update' : 'set-values', context.listeners.update);\n context.brush.on('end', context.listeners.end);\n // Intecept the set-values call to avoid a toggle in the second dimension.\n context.brush.intercept('set-values', context.action.toggleInterceptor);\n }\n\n function deregister() {\n Object.keys(tooltipContexts).forEach((key) => {\n deRegContext(tooltipContexts[key]);\n });\n }\n\n function deRegContext(context) {\n context.brush.removeListener(context.treatAsDesktop ? 'update' : 'set-values', context.listeners.update);\n context.brush.removeListener('end', context.listeners.end);\n context.brush.removeInterceptor('set-values', context.action.toggleInterceptor);\n }\n\n function closeTooltip() {\n Object.keys(tooltipContexts).forEach((key) => {\n tooltipContexts[key].action.closeTooltip();\n });\n }\n\n function mouseLeave() {\n closeTooltip();\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (const prop in tooltipContexts) {\n tooltipContexts[prop].brush.clear();\n }\n }\n\n fn.closeTooltip = closeTooltip;\n\n fn.isOn = () => on;\n fn.on = function () {\n if (on) {\n return;\n }\n on = true;\n\n register();\n\n if ($element) {\n $element.on('mouseleave', mouseLeave);\n }\n };\n\n fn.off = function () {\n if (!on) {\n return;\n }\n on = false;\n deregister();\n\n if ($element) {\n $element.off('mouseleave', mouseLeave);\n }\n closeTooltip();\n };\n\n return fn;\n}\n\nexport default {\n create(chartInstance, $element, chartType) {\n return Tooltips(chartInstance, $element, chartType);\n },\n};\n\nfunction createContext(options, chartInstance) {\n return {\n brush: chartInstance.brush(options.contexts[0]),\n action: TooltipAction.create(\n chartInstance,\n options.componentKey,\n options.data,\n options.contexts[0],\n options.tooltipKey\n ),\n listeners: {},\n chartInstance,\n dataPath: options.dataPath,\n renderer: options.renderer,\n data: options.data,\n headerResolver: options.headerResolver,\n rowResolver: options.rowResolver,\n colorService: options.colorService,\n attrDimPath: options.attrDimPath,\n measureRows: options.measureRows,\n labelData: options.labelData,\n filterShapes: options.filterShapes,\n\n direction: options.environment.options.direction,\n theme: options.environment.theme,\n translator: options.environment.translator,\n treatAsDesktop: options.environment.deviceType !== 'touch',\n };\n}\n","const namespace = '.scrollHandler';\n\nScrollHandler.prototype.getScrollApi = getScrollApi;\nScrollHandler.prototype.setDisabled = setDisabled;\nScrollHandler.prototype.getDisabled = getDisabled;\nScrollHandler.prototype.setItemSize = setItemSize;\nScrollHandler.prototype.getItemSize = getItemSize;\nScrollHandler.prototype.getScrollViewSizeInItem = getScrollViewSizeInItem;\nScrollHandler.prototype.on = on;\nScrollHandler.prototype.isOn = isOn;\nScrollHandler.prototype.off = off;\nScrollHandler.prototype.updateViewState = updateViewState;\nScrollHandler.prototype.onResize = onResize;\nScrollHandler.prototype.isDataSizeChanged = isDataSizeChanged;\nScrollHandler.prototype.resetScroll = resetScroll;\nScrollHandler.prototype.getViewData = getViewData;\nScrollHandler.prototype.setOptions = setOptions;\nScrollHandler.prototype.getScrollState = getScrollState;\nScrollHandler.prototype.setScrollState = setScrollState;\n\nexport default ScrollHandler;\n\n/**\n * Implementation details\n */\n\nfunction ScrollHandler(chartInstance, $chartElement, getSlicedDataFn, onScrollCallback, legendKey) {\n if (!chartInstance || !$chartElement || !getSlicedDataFn) {\n throw Error('Scroll-handler: Missing input');\n }\n this._chartInstance = chartInstance;\n this._$chartElement = $chartElement;\n this._getSlicedDataFn = getSlicedDataFn;\n this._on = false;\n this._itemSize = 30;\n this.options = {\n direction: 'vertical',\n };\n this._onScrollCallback = onScrollCallback;\n this._legendKey = legendKey;\n}\n\nfunction getScrollApi() {\n if (!this._scrollApi) {\n this._scrollApi = this._chartInstance.scroll('dimension');\n }\n return this._scrollApi;\n}\n\nfunction setDisabled(b) {\n this._disabled = b;\n}\n\nfunction getDisabled() {\n return this._disabled;\n}\n\nfunction setItemSize(s) {\n if (this._itemSize !== s) {\n this._itemSize = s;\n calculateScrollViewSizeInItem.call(this);\n }\n}\n\nfunction getItemSize() {\n return this._itemSize;\n}\n\nfunction getScrollViewSizeInItem() {\n if (!this._scrollViewSizeInItem) {\n calculateScrollViewSizeInItem.call(this);\n }\n return this._scrollViewSizeInItem;\n}\n\nfunction on() {\n if (this._on) {\n return;\n }\n if (this.getScrollApi()) {\n this._scrollApi.removeAllListeners();\n this._scrollApi.on('update', onScroll.bind(this));\n }\n this._$chartElement.on(`mousewheel${namespace} DOMMouseScroll${namespace}`, onMouseWheel.bind(this));\n // TODO: Picasso does not support pointer events therefore we need to remove preventDefault on pointer down to make it work for IE.\n // However, this will make paning on touch device to pan the object, so we need to prevent it.\n // This fix should be removed when Picasso support pointer events.\n this._$chartElement.on(`touchstart${namespace}`, (event) => {\n event.preventDefault();\n });\n this._on = true;\n}\nfunction isOn() {\n return this._on;\n}\nfunction off() {\n if (!this._on) {\n return;\n }\n if (this.getScrollApi()) {\n this._scrollApi.removeAllListeners();\n }\n this._$chartElement.off(namespace);\n this._on = false;\n}\n\nfunction updateViewState(max) {\n calculateScrollViewSizeInItem.call(this);\n if (this.getScrollApi()) {\n this._scrollApi.update({ viewSize: this._scrollViewSizeInItem, max });\n }\n}\n\nfunction onResize() {\n this._sizeChanged = true;\n calculateScrollViewSizeInItem.call(this);\n if (this.getScrollApi()) {\n this._scrollApi.update({ viewSize: this._scrollViewSizeInItem });\n }\n}\n\nfunction isDataSizeChanged(pageNumberOfRows, datasetNumberOfRows) {\n return Math.min(this.getScrollViewSizeInItem(), datasetNumberOfRows) !== pageNumberOfRows;\n}\n\nfunction resetScroll() {\n if (this.getScrollApi()) {\n this._scrollApi.moveTo(0);\n }\n}\n\nfunction getViewData() {\n let top = 0;\n let height = 0;\n if (this.getScrollApi()) {\n const state = this._scrollApi.getState();\n top = Math.round(state.start);\n height = state.viewSize;\n }\n return this._getSlicedDataFn(top, height);\n}\n\nfunction getScrollState() {\n return this.getScrollApi().getState().start;\n}\nfunction setScrollState(state) {\n this.getScrollApi().moveTo(state);\n}\n\nfunction setOptions(options) {\n if (this.options.direction !== options.direction) {\n this._scrollViewSizeInItem = undefined;\n }\n this.options = options;\n}\n\nfunction calculateScrollViewSizeInItem() {\n const scrollSize =\n (this.options.direction === 'horizontal' ? this._$chartElement.width() : this._$chartElement.height()) || 0;\n const n = Math.floor(scrollSize / this.getItemSize());\n this._scrollViewSizeInItem = Math.max(n, 1); // Number of visible items should be at least 1\n}\n\nfunction getMouseWheelData(orgEvent) {\n let delta = 0;\n let deltaX = 0;\n let deltaY = 0;\n const divider = 60;\n\n // Old school scrollwheel delta\n if (orgEvent.wheelDelta) {\n delta = orgEvent.wheelDelta / divider;\n }\n if (orgEvent.detail) {\n delta = -orgEvent.detail / 3;\n }\n\n // New school multidimensional scroll (touchpads) deltas\n deltaY = delta;\n\n // Gecko\n if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaY = 0;\n deltaX = -1 * delta;\n }\n\n // Webkit\n if (orgEvent.wheelDeltaY !== undefined) {\n deltaY = orgEvent.wheelDeltaY / divider;\n }\n if (orgEvent.wheelDeltaX !== undefined) {\n deltaX = (-1 * orgEvent.wheelDeltaX) / divider;\n }\n\n return {\n delta,\n deltaX,\n deltaY,\n x: orgEvent.pageX,\n y: orgEvent.pageY,\n };\n}\n\nfunction onLegendMouseWheel(e, event, chart, legendKey) {\n if (!!legendKey && chart.componentsFromPoint(event).some((c) => c.settings.key === legendKey)) {\n const legend = chart.component(legendKey);\n legend.emit(event.delta > 0 ? 'prev' : 'next');\n e.preventDefault();\n return true;\n }\n return false;\n}\n\nfunction onMouseWheel(e) {\n const event = getMouseWheelData(e.originalEvent);\n if (onLegendMouseWheel(e, event, this._chartInstance, this._legendKey) || this._disabled || !this.getScrollApi()) {\n return;\n }\n e.preventDefault();\n if (!event.delta) {\n return;\n }\n const scrollSpeed = 3;\n const value = event.delta < 0 ? scrollSpeed : -scrollSpeed;\n this._scrollApi.move(value);\n}\n\nfunction onScroll() {\n if (this._disabled || this._sizeChanged) {\n this._sizeChanged = false;\n return;\n }\n const self = this;\n this.getViewData()\n .then((layout) => {\n if (self._on && !self._disabled && self._onScrollCallback) {\n // Chart is updated with partial data\n self._onScrollCallback(layout, undefined, true);\n }\n })\n .catch((err) => {\n if (process.env.NODE_ENV === 'development') {\n if (typeof err !== 'undefined') {\n console.error(err);\n }\n }\n });\n}\n","/**\n * String validation util.\n *\n */\n\nconst CHARACTER_AVERAGE_WIDTH = 166 / 26;\nconst CHARACTER_MAX_WIDTH = 12;\nconst M_WIDTH = 11;\nconst CJK_AVERAGE_WIDTH = 12;\nconst CJK_OVER_LATIN_WIDTH_RATIO = CJK_AVERAGE_WIDTH / M_WIDTH;\n\nfunction startsWith(string, prefix) {\n return string.indexOf(prefix) === 0;\n}\n\nfunction endsWith(string, suffix) {\n return string.indexOf(suffix, string.length - suffix.length) !== -1;\n}\n\nfunction contains(haystack, needle) {\n if (!haystack) {\n throw new Error('Haystack is undefined.');\n }\n\n if (!needle) {\n throw new Error('Needle is undefined.');\n }\n\n return haystack.indexOf(needle) !== -1;\n}\n\nfunction stringWidthOverMWidth(len) {\n const n = 3; // For short strings with wide letters or numbers\n return (Math.min(len, n) * CHARACTER_MAX_WIDTH + Math.max(len - n, 0) * CHARACTER_AVERAGE_WIDTH) / M_WIDTH;\n}\n\nfunction getCharacterRatios(s) {\n if (!s) {\n return {\n latin: 0,\n cjk: 0,\n };\n }\n let CJK = s.match(/[\\u4E00-\\u9FFF]/g);\n let hiragana = s.match(/[\\u3040-\\u309F]/g);\n let katakana = s.match(/[\\u30A0-\\u30FF]/g);\n CJK = CJK ? CJK.length : 0;\n hiragana = hiragana ? hiragana.length : 0;\n katakana = katakana ? katakana.length : 0;\n const t = CJK + hiragana + katakana;\n return {\n latin: s.length - t,\n cjk: t,\n };\n}\n\nfunction getTotalCharacterRatios(qMatrix, columnIndex) {\n const total = { latin: 0, cjk: 0 };\n if (columnIndex === undefined) {\n qMatrix.forEach((row) => {\n const res = getCharacterRatios(row.qText);\n total.latin += res.latin;\n total.cjk += res.cjk;\n });\n } else {\n qMatrix.forEach((row) => {\n const res = getCharacterRatios(row[columnIndex].qText);\n total.latin += res.latin;\n total.cjk += res.cjk;\n });\n }\n const t = Math.max(1, total.latin + total.cjk);\n total.latinRatio = total.latin / t;\n total.cjkRatio = total.cjk / t;\n return total;\n}\n\nfunction getAdjustedMaxGlyphCount(maxGlyphCount, qMatrix, columnIndex) {\n const totalCharacterRatios = getTotalCharacterRatios(qMatrix, columnIndex);\n const latinGlyphCount = totalCharacterRatios.latinRatio * maxGlyphCount;\n const cjkGlyphCount = totalCharacterRatios.cjkRatio * maxGlyphCount;\n const adjustedMaxGlyphCount = Math.ceil(\n stringWidthOverMWidth(latinGlyphCount) + cjkGlyphCount * CJK_OVER_LATIN_WIDTH_RATIO\n );\n return adjustedMaxGlyphCount;\n}\n\n// TODO: Need to improve to make sure longer strings should have bigger width than shorter strings\nfunction estimateLatinLabelWidth(numLatins, maxLatinWidth, averageLatinWidth) {\n const latinWidth = numLatins <= 24 ? maxLatinWidth : averageLatinWidth;\n return numLatins * latinWidth;\n}\n\nfunction estimateLabelWidth(numCjks, numLatins, cjkWidth, maxLatinWidth, averageLatinWidth) {\n return numCjks * cjkWidth + estimateLatinLabelWidth(numLatins, maxLatinWidth, averageLatinWidth);\n}\n\nexport default {\n endsWith,\n startsWith,\n contains,\n stringWidthOverMWidth,\n getCharacterRatios,\n getTotalCharacterRatios,\n getAdjustedMaxGlyphCount,\n estimateLatinLabelWidth,\n estimateLabelWidth,\n};\n","const colorStruct = {\n aliceblue: { r: 240, g: 248, b: 255 },\n antiquewhite: { r: 250, g: 235, b: 215 },\n aqua: { r: 0, g: 255, b: 255 },\n aquamarine: { r: 127, g: 255, b: 212 },\n azure: { r: 240, g: 255, b: 255 },\n beige: { r: 245, g: 245, b: 220 },\n bisque: { r: 255, g: 228, b: 196 },\n black: { r: 0, g: 0, b: 0 },\n blanchedalmond: { r: 255, g: 235, b: 205 },\n blue: { r: 0, g: 0, b: 255 },\n blueviolet: { r: 138, g: 43, b: 226 },\n brown: { r: 165, g: 42, b: 42 },\n burlywood: { r: 222, g: 184, b: 135 },\n cadetblue: { r: 95, g: 158, b: 160 },\n chartreuse: { r: 127, g: 255, b: 0 },\n chocolate: { r: 210, g: 105, b: 30 },\n coral: { r: 255, g: 127, b: 80 },\n cornflowerblue: { r: 100, g: 149, b: 237 },\n cornsilk: { r: 255, g: 248, b: 220 },\n crimson: { r: 220, g: 20, b: 60 },\n cyan: { r: 0, g: 255, b: 255 },\n darkblue: { r: 0, g: 0, b: 139 },\n darkcyan: { r: 0, g: 139, b: 139 },\n darkgoldenrod: { r: 184, g: 134, b: 11 },\n darkgray: { r: 169, g: 169, b: 169 },\n darkgreen: { r: 0, g: 100, b: 0 },\n darkgrey: { r: 169, g: 169, b: 169 },\n darkkhaki: { r: 189, g: 183, b: 107 },\n darkmagenta: { r: 139, g: 0, b: 139 },\n darkolivegreen: { r: 85, g: 107, b: 47 },\n darkorange: { r: 255, g: 140, b: 0 },\n darkorchid: { r: 153, g: 50, b: 204 },\n darkred: { r: 139, g: 0, b: 0 },\n darksalmon: { r: 233, g: 150, b: 122 },\n darkseagreen: { r: 143, g: 188, b: 143 },\n darkslateblue: { r: 72, g: 61, b: 139 },\n darkslategray: { r: 47, g: 79, b: 79 },\n darkslategrey: { r: 47, g: 79, b: 79 },\n darkturquoise: { r: 0, g: 206, b: 209 },\n darkviolet: { r: 148, g: 0, b: 211 },\n deeppink: { r: 255, g: 20, b: 147 },\n deepskyblue: { r: 0, g: 191, b: 255 },\n dimgray: { r: 105, g: 105, b: 105 },\n dimgrey: { r: 105, g: 105, b: 105 },\n dodgerblue: { r: 30, g: 144, b: 255 },\n firebrick: { r: 178, g: 34, b: 34 },\n floralwhite: { r: 255, g: 250, b: 240 },\n forestgreen: { r: 34, g: 139, b: 34 },\n fuchsia: { r: 255, g: 0, b: 255 },\n gainsboro: { r: 220, g: 220, b: 220 },\n ghostwhite: { r: 248, g: 248, b: 255 },\n gold: { r: 255, g: 215, b: 0 },\n goldenrod: { r: 218, g: 165, b: 32 },\n gray: { r: 128, g: 128, b: 128 },\n green: { r: 0, g: 128, b: 0 },\n greenyellow: { r: 173, g: 255, b: 47 },\n grey: { r: 128, g: 128, b: 128 },\n honeydew: { r: 240, g: 255, b: 240 },\n hotpink: { r: 255, g: 105, b: 180 },\n indianred: { r: 205, g: 92, b: 92 },\n indigo: { r: 75, g: 0, b: 130 },\n ivory: { r: 255, g: 255, b: 240 },\n khaki: { r: 240, g: 230, b: 140 },\n lavender: { r: 230, g: 230, b: 250 },\n lavenderblush: { r: 255, g: 240, b: 245 },\n lawngreen: { r: 124, g: 252, b: 0 },\n lemonchiffon: { r: 255, g: 250, b: 205 },\n lightblue: { r: 173, g: 216, b: 230 },\n lightcoral: { r: 240, g: 128, b: 128 },\n lightcyan: { r: 224, g: 255, b: 255 },\n lightgoldenrodyellow: { r: 250, g: 250, b: 210 },\n lightgray: { r: 211, g: 211, b: 211 },\n lightgreen: { r: 144, g: 238, b: 144 },\n lightgrey: { r: 211, g: 211, b: 211 },\n lightpink: { r: 255, g: 182, b: 193 },\n lightsalmon: { r: 255, g: 160, b: 122 },\n lightseagreen: { r: 32, g: 178, b: 170 },\n lightskyblue: { r: 135, g: 206, b: 250 },\n lightslategray: { r: 119, g: 136, b: 153 },\n lightslategrey: { r: 119, g: 136, b: 153 },\n lightsteelblue: { r: 176, g: 196, b: 222 },\n lightyellow: { r: 255, g: 255, b: 224 },\n lime: { r: 0, g: 255, b: 0 },\n limegreen: { r: 50, g: 205, b: 50 },\n linen: { r: 250, g: 240, b: 230 },\n magenta: { r: 255, g: 0, b: 255 },\n maroon: { r: 128, g: 0, b: 0 },\n mediumaquamarine: { r: 102, g: 205, b: 170 },\n mediumblue: { r: 0, g: 0, b: 205 },\n mediumorchid: { r: 186, g: 85, b: 211 },\n mediumpurple: { r: 147, g: 112, b: 219 },\n mediumseagreen: { r: 60, g: 179, b: 113 },\n mediumslateblue: { r: 123, g: 104, b: 238 },\n mediumspringgreen: { r: 0, g: 250, b: 154 },\n mediumturquoise: { r: 72, g: 209, b: 204 },\n mediumvioletred: { r: 199, g: 21, b: 133 },\n midnightblue: { r: 25, g: 25, b: 112 },\n mintcream: { r: 245, g: 255, b: 250 },\n mistyrose: { r: 255, g: 228, b: 225 },\n moccasin: { r: 255, g: 228, b: 181 },\n navajowhite: { r: 255, g: 222, b: 173 },\n navy: { r: 0, g: 0, b: 128 },\n oldlace: { r: 253, g: 245, b: 230 },\n olive: { r: 128, g: 128, b: 0 },\n olivedrab: { r: 107, g: 142, b: 35 },\n orange: { r: 255, g: 165, b: 0 },\n orangered: { r: 255, g: 69, b: 0 },\n orchid: { r: 218, g: 112, b: 214 },\n palegoldenrod: { r: 238, g: 232, b: 170 },\n palegreen: { r: 152, g: 251, b: 152 },\n paleturquoise: { r: 175, g: 238, b: 238 },\n palevioletred: { r: 219, g: 112, b: 147 },\n papayawhip: { r: 255, g: 239, b: 213 },\n peachpuff: { r: 255, g: 218, b: 185 },\n peru: { r: 205, g: 133, b: 63 },\n pink: { r: 255, g: 192, b: 203 },\n plum: { r: 221, g: 160, b: 221 },\n powderblue: { r: 176, g: 224, b: 230 },\n purple: { r: 128, g: 0, b: 128 },\n red: { r: 255, g: 0, b: 0 },\n rosybrown: { r: 188, g: 143, b: 143 },\n royalblue: { r: 65, g: 105, b: 225 },\n saddlebrown: { r: 139, g: 69, b: 19 },\n salmon: { r: 250, g: 128, b: 114 },\n sandybrown: { r: 244, g: 164, b: 96 },\n seagreen: { r: 46, g: 139, b: 87 },\n seashell: { r: 255, g: 245, b: 238 },\n sienna: { r: 160, g: 82, b: 45 },\n silver: { r: 192, g: 192, b: 192 },\n skyblue: { r: 135, g: 206, b: 235 },\n slateblue: { r: 106, g: 90, b: 205 },\n slategray: { r: 112, g: 128, b: 144 },\n slategrey: { r: 112, g: 128, b: 144 },\n snow: { r: 255, g: 250, b: 250 },\n springgreen: { r: 0, g: 255, b: 127 },\n steelblue: { r: 70, g: 130, b: 180 },\n tan: { r: 210, g: 180, b: 140 },\n teal: { r: 0, g: 128, b: 128 },\n thistle: { r: 216, g: 191, b: 216 },\n tomato: { r: 255, g: 99, b: 71 },\n transparent: {\n r: 255,\n g: 255,\n b: 255,\n a: 0,\n },\n turquoise: { r: 64, g: 224, b: 208 },\n violet: { r: 238, g: 130, b: 238 },\n wheat: { r: 245, g: 222, b: 179 },\n white: { r: 255, g: 255, b: 255 },\n whitesmoke: { r: 245, g: 245, b: 245 },\n yellow: { r: 255, g: 255, b: 0 },\n yellowgreen: { r: 154, g: 205, b: 50 },\n};\n\nexport default colorStruct;\n","/* eslint-disable camelcase */\n/* eslint-disable no-bitwise */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-cond-assign */\n/* eslint-disable prefer-rest-params */\n\n/**\n * Module which defines a color object\n * @exports objects.views/charts/representation/color\n * @expose module:objects.views/charts/representation/color~Color\n */\nimport Class from './class';\nimport CSSColors from './css-colors';\n\n// color formats\nconst rgb = /^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/i;\n\nconst rgba = /^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d(\\.\\d+)?)\\)$/i;\nconst hex = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i;\nconst hexShort = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i;\nconst hsl = /^hsl\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i;\nconst hsla = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i;\nconst floor = Math.floor;\nconst round = Math.round;\n\n/**\n * @class\n * @classdesc Class which provides color transformation functionality\n * @description This is a constructor.\n * @param {object} - Parameters to create a color from different notations\n * @example\n * // a few ways of instantiating a red color\n * var red;\n * red = new Color(255, 0, 0, 1); // rgba as parameters\n * red = new Color('#ff0000'); // hex\n * red = new Color('rgb(255,0,0)');//rgb as string\n * red = new Color('hsl(0, 100, 50)');// hsl as string\n * red = new Color(16711680);// uint\n */\nconst Color = Class.extend(\n /** @lends module:objects.views/charts/representation/color~Color# */ {\n init() {\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 1;\n let h;\n let s;\n let lcs;\n let l;\n let v;\n let c;\n let h_;\n let x;\n let rgb_;\n let m;\n let matches;\n let colorString;\n\n this._invalid = false;\n\n if (arguments[0] instanceof Color) {\n r = arguments[0]._r;\n g = arguments[0]._g;\n b = arguments[0]._b;\n a = arguments[0]._a;\n this._invalid = arguments[0]._invalid;\n } else if (arguments.length < 3) {\n if (typeof arguments[0] === 'string') {\n colorString = arguments[0];\n\n if ((matches = /^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/i.exec(colorString))) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if (\n (matches = /^rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d(\\.\\d+)?)\\s*\\)$/i.exec(\n colorString\n ))\n ) {\n // rgba(1, 2, 3, 0.4)\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n a = parseFloat(matches[4]);\n } else if ((matches = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i.exec(colorString))) {\n // #aBc123\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n a = 1;\n } else if ((matches = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i.exec(colorString))) {\n // #a5F\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n a = 1;\n } else if (\n (matches = /^hsl\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i.exec(colorString))\n ) {\n // hsl(1, 2, 3)\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n l = parseFloat(matches[5]);\n\n h %= 360;\n s /= 100;\n l /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n\n c = l <= 0.5 ? 2 * l * s : (2 - 2 * l) * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = l - 0.5 * c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n a = 1.0;\n } else if (\n (matches = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i.exec(\n colorString\n ))\n ) {\n // hsla(1,2,3,0.4)\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n l = parseFloat(matches[5]);\n a = parseFloat(matches[7]);\n\n h %= 360;\n s /= 100;\n l /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n l = l < 0 ? 0 : l > 1 ? 1 : l;\n\n c = l <= 0.5 ? 2 * l * s : (2 - 2 * l) * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = l - 0.5 * c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n } else if (\n (matches = /^hsv\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*\\)$/i.exec(colorString))\n ) {\n // hsv(1, 2, 3) {\n h = parseFloat(matches[1]);\n s = parseFloat(matches[3]);\n v = parseFloat(matches[5]);\n\n h %= 360;\n s /= 100;\n v /= 100;\n\n h = h < 0 ? 0 : h > 360 ? 360 : h;\n s = s < 0 ? 0 : s > 1 ? 1 : s;\n v = v < 0 ? 0 : v > 1 ? 1 : v;\n\n c = v * s;\n h_ = h / 60;\n x = c * (1 - Math.abs((h_ % 2) - 1));\n\n rgb_ = [];\n\n h_ = Math.floor(h_);\n switch (h_) {\n case 0:\n rgb_ = [c, x, 0];\n break;\n case 1:\n rgb_ = [x, c, 0];\n break;\n case 2:\n rgb_ = [0, c, x];\n break;\n case 3:\n rgb_ = [0, x, c];\n break;\n case 4:\n rgb_ = [x, 0, c];\n break;\n case 5:\n rgb_ = [c, 0, x];\n break;\n default:\n rgb_ = [0, 0, 0];\n }\n\n m = v - c;\n\n r = rgb_[0] + m;\n g = rgb_[1] + m;\n b = rgb_[2] + m;\n\n r = round(255 * r);\n g = round(255 * g);\n b = round(255 * b);\n a = 1.0;\n } else if (CSSColors[colorString.toLowerCase()]) {\n lcs = colorString.toLowerCase();\n r = CSSColors[lcs].r;\n g = CSSColors[lcs].g;\n b = CSSColors[lcs].b;\n a = typeof CSSColors[lcs].a === 'number' ? CSSColors[lcs].a : 1.0;\n } else {\n this._invalid = true;\n }\n } else if (typeof arguments[0] === 'number' && arguments[0] >= 0 && arguments[1] === 'argb') {\n a = (0xff000000 & arguments[0]) >>> 24;\n a /= 255;\n r = (0xff0000 & arguments[0]) >> 16;\n g = (0x00ff00 & arguments[0]) >> 8;\n b = 0x0000ff & arguments[0];\n } else if (typeof arguments[0] === 'number' && arguments[0] >= 0) {\n r = (0xff0000 & arguments[0]) >> 16;\n g = (0x00ff00 & arguments[0]) >> 8;\n b = 0x0000ff & arguments[0];\n } else {\n this._invalid = true;\n }\n } else if (arguments.length >= 3) {\n r = arguments[0];\n g = arguments[1];\n b = arguments[2];\n a = arguments.length >= 4 ? arguments[3] : 1;\n } else {\n this._invalid = true;\n }\n\n if (Number.isNaN(+r + g + b + a)) {\n this._invalid = true;\n }\n\n this._r = floor(r);\n this._g = floor(g);\n this._b = floor(b);\n this._a = a;\n\n // object to cache string representations in various color spaces\n this._spaces = {};\n },\n isInvalid() {\n return this._invalid;\n },\n /**\n * Sets alpha value of color\n * @param {number} a - Alpha value of the color\n */\n setAlpha(a) {\n this._a = a;\n this._spaces = {};\n },\n /**\n * Gets the alpha value of this color\n * @returns {number}\n */\n getAlpha() {\n return this._a;\n },\n /**\n * Returns an rgb string representation of this color.\n * @return {string} An rgb string representation of this color\n */\n toRGB: function toRGB() {\n if (!this._spaces.rgb) {\n this._spaces.rgb = Color.toRGB(this);\n }\n return this._spaces.rgb;\n },\n /**\n * Returns an rgba string representation of this color.\n * @return {string} An rgba string representation of this color.\n */\n toRGBA: function toRGBA() {\n if (!this._spaces.rgba) {\n this._spaces.rgba = Color.toRGBA(this);\n }\n return this._spaces.rgba;\n },\n toString() {\n if (!this._spaces.rgb) {\n this._spaces.rgb = Color.toRGB(this);\n }\n return this._spaces.rgb;\n },\n /**\n * Returns a hex string representation of this color.\n * @return {string}\n */\n toHex: function toHex() {\n if (!this._spaces.hex) {\n this._spaces.hex = Color.toHex(this);\n }\n return this._spaces.hex;\n },\n /**\n * Returns a hsl string representation of this color using \"bi-hexcone\" model for lightness\n * @param {boolean} luma - Whether to use luma calculation\n * @return {string} In format hsl(0,0,0)\n */\n toHSL: function toHSL(luma) {\n if (!this._spaces.hsl) {\n this._spaces.hsl = Color.toHSL(this, luma);\n }\n return this._spaces.hsl;\n },\n /**\n * Returns a hsla string representation of this color using \"bi-hexcone\" model for lightness\n * @param {boolean} luma - Whether to use luma calculation\n * @return {string} In format hsla(0,0,0,0)\n */\n toHSLA: function toHSLA(luma) {\n if (!this._spaces.hsla) {\n this._spaces.hsla = Color.toHSLA(this, luma);\n }\n return this._spaces.hsla;\n },\n /**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\n toHSV() {\n const hsvComp = this.toHSVComponents();\n return `hsv(${hsvComp.h},${hsvComp.s},${hsvComp.v})`;\n },\n /**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\n toHSVComponents: function toHSVComponents() {\n if (!this._spaces.hsvComp) {\n this._spaces.hsvComp = Color.toHSVComponents(this);\n }\n return this._spaces.hsvComp;\n },\n /**\n * Returns a uint representation of this color\n * @return {number}\n */\n toNumber: function toNumber() {\n if (!this._spaces.num) {\n this._spaces.num = Color.toNumber(this);\n }\n return this._spaces.num;\n },\n /**\n * Checks if this color is perceived as dark.\n * @return {string} True if the luminance is below 160, false otherwise.\n */\n isDark() {\n return this.isInvalid() || this.getLuminance() < 125; // luminace calc option #2\n // return this.getLuminance() < 160; //luminace calc option #3\n },\n /**\n * Calculates the perceived luminance of the color.\n * @return {number} A value in the range 0-255 where a low value is considered dark and vice versa.\n */\n getLuminance() {\n // alpha channel is not considered\n if (typeof this._lumi === 'undefined') {\n // calculate luminance\n // this._lumi = 0.2126 * this._r + 0.7152 * this._g + 0.0722 * this._b; // option 1\n this._lumi = 0.299 * this._r + 0.587 * this._g + 0.114 * this._b; // option 2\n // this._lumi = Math.sqrt( 0.241 * this._r * this._r + 0.691 * this._g * this._g + 0.068 * this._b * this._b ); // option 3\n }\n\n return this._lumi;\n },\n /**\n * Shifts the color towards a lighter or darker shade\n * @param {number} value - A value in the range -100-100 to shift the color with along the HSL lightness.\n * @return {string} The shifted color as hsla string.\n */\n shiftLuminance(value) {\n const chsla = this.toHSLA();\n const matches = /^hsla\\(\\s*(\\d+(\\.\\d+)?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,\\s*(\\d+(\\.\\d+)?%?)\\s*,(\\d(\\.\\d+)?)\\)$/i.exec(\n chsla\n );\n\n const h = parseFloat(matches[1]);\n const s = parseFloat(matches[3]);\n let l = parseFloat(matches[5]);\n const a = parseFloat(matches[7]);\n // l *= 1 + value / 100;\n // l = Math.max( 0, l % 100 );\n l += value;\n l = Math.max(0, Math.min(l, 100));\n\n // if( value > 0 ){\n // s = s*0.2; //removing saturation to avoid the border from being too light\n // }\n\n return `hsla(${h},${s},${l},${a})`;\n },\n /**\n * Compares two colors.\n * @param {Color} c The color to compare with.\n * @return {boolean} True if the rgb channels are the same, false otherwise\n */\n isEqual(c) {\n if (c instanceof Color) {\n return this._r === c._r && this._g === c._g && this._b === c._b;\n }\n\n c = new Color(c);\n return this._r === c._r && this._g === c._g && this._b === c._b;\n },\n /**\n * Linearly interpolates each channel of two colors.\n * @param {Color} c2 The other color.\n * @param {number} t The interpolation value in the range (0-1).\n * @return {string} The blend as an rgb string.\n */\n blend(c2, t) {\n const r = floor(this._r + (c2._r - this._r) * t);\n const g = floor(this._g + (c2._g - this._g) * t);\n const b = floor(this._b + (c2._b - this._b) * t);\n const a = floor(this._a + (c2._a - this._a) * t);\n\n return `rgba(${[r, g, b, a].join(',')})`;\n },\n\n createShiftedColor(v) {\n if (v === undefined || Number.isNaN(+v)) {\n v = 1;\n }\n const lumi = this.getLuminance();\n const greenMultiplier = this._g < 126 ? 1 : 1 + this._g / 512;\n const hsla_string = this.shiftLuminance(\n (lumi * greenMultiplier < 220 ? 0.8 + 4 * (1 / (lumi + 1)) : -(0.8 + 1 * (lumi / 255))) * 20 * v\n );\n\n return new Color(hsla_string);\n },\n }\n);\n\n/**\n * Returns an rgb string representation of this color\n * @param {Color|string} c\n * @returns {string} An rgb string with channel values within range 0-255.\n */\nColor.toRGB = function toRGB(c) {\n if (c instanceof Color) {\n return `rgb(${[c._r, c._g, c._b].join(',')})`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n const r = (c & 0xff0000) >> 16;\n const g = (c & 0x00ff00) >> 8;\n const b = c & 0x0000ff;\n\n return `rgb(${r},${g},${b})`;\n};\n/**\n *\n * @param c\n * @param a\n * @returns {string} The color rgb format.\n */\nColor.toRGBA = function toRGB(c, a) {\n if (c instanceof Color) {\n return `rgba(${[c._r, c._g, c._b, typeof a !== 'undefined' ? a : c._a].join(',')})`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n const r = (c & 0xff0000) >> 16;\n const g = (c & 0x00ff00) >> 8;\n const b = c & 0x0000ff;\n\n return `rgba(${r},${g},${b},${typeof a !== 'undefined' ? a : c._a})`;\n};\n/**\n *\n * @param {Color|string} c\n * @returns {string} The color in hexadecimal space.\n */\nColor.toHex = function toHex(c) {\n let r;\n let g;\n let b;\n if (c instanceof Color) {\n r = c._r.toString(16);\n g = c._g.toString(16);\n b = c._b.toString(16);\n if (r.length === 1) {\n r = `0${r}`;\n }\n if (g.length === 1) {\n g = `0${g}`;\n }\n if (b.length === 1) {\n b = `0${b}`;\n }\n return `#${[r, g, b].join('')}`;\n }\n\n if (typeof c === 'string') {\n c = Color.toNumber(c);\n }\n\n r = ((c & 0xff0000) >> 16).toString(16);\n g = ((c & 0x00ff00) >> 8).toString(16);\n b = (c & 0x0000ff).toString(16);\n\n if (r.length === 1) {\n r = `0${r}`;\n }\n if (g.length === 1) {\n g = `0${g}`;\n }\n if (b.length === 1) {\n b = `0${b}`;\n }\n\n return `#${r}${g}${b}`;\n};\n/**\n * Return the color in hsl space using \"bi-hexcone\" model for lightness\n * @param {Color|string} c\n * @param {boolean} luma - Whether to use luma calculation\n * @returns {string} The color in hsl space.\n */\nColor.toHSL = function (c, luma) {\n let h = 0;\n let s;\n let l;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, lightness/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n if (luma) {\n // Y'709 http://en.wikipedia.org/wiki/Rec._709\n // Y′709 = 0.21R + 0.72G + 0.07B\n l = 0.21 * r + 0.72 * g + 0.07 * b;\n } else {\n l = (max + min) / 2;\n }\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = l > 0.5 ? ch / (2 - max - min) : ch / (max + min);\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return `hsl(${h * 360},${s * 100},${l * 100})`;\n};\n/**\n * Return the color in hsla space using \"bi-hexcone\" model for lightness\n * @param {Color|string} c\n * @param {boolean} luma - Whether to use luma calculation\n * @returns {string} The color in hsla space.\n */\nColor.toHSLA = function (c, luma) {\n let h = 0;\n let s;\n let l;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, lightness/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n const a = c._a;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n if (luma) {\n // Y'709 http://en.wikipedia.org/wiki/Rec._709\n // Y′709 = 0.21R + 0.72G + 0.07B\n l = 0.21 * r + 0.72 * g + 0.07 * b;\n } else {\n l = (max + min) / 2;\n }\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = l > 0.5 ? ch / (2 - max - min) : ch / (max + min);\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return `hsla(${h * 360},${s * 100},${l * 100},${a})`;\n};\n/**\n * Return the color components in hsv space using \"hexcone\" model for value (lightness)\n * @param {Color|string} c\n * @returns {object} The color components in hsv space {h:0-360, s:0-100, v:0-100}\n */\nColor.toHSVComponents = function (c) {\n let h = 0;\n let s;\n let ch;\n if (typeof c === 'string') {\n c = new Color(c);\n }\n\n // red, green, blue, hue, saturation, value/luma, max, min, chroma\n const r = c._r / 255;\n const g = c._g / 255;\n const b = c._b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n const v = max;\n\n if (max === min) {\n // greyscale\n s = 0;\n h = 0;\n } else {\n ch = max - min;\n s = ch === 0 ? 0 : ch / v;\n switch (max) {\n case r:\n h = (g - b) / ch + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / ch + 2;\n break;\n case b:\n h = (r - g) / ch + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n\n return { h: (h * 360) % 360, s: s * 100, v: v * 100 };\n};\n/**\n * Returns an number representation of the color\n * @param {Color|string} c\n * @returns {Number} Unsigned integer in the range 0-16 777 216\n */\nColor.toNumber = function toNumber() {\n if (arguments.length === 1 && arguments[0] instanceof Color) {\n return (arguments[0]._r << 16) + (arguments[0]._g << 8) + arguments[0]._b;\n }\n\n let r = 0;\n let g = 0;\n let b = 0;\n let matches;\n let colorString;\n\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'string') {\n colorString = arguments[0];\n\n if ((matches = /^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/i.exec(colorString))) {\n r = parseInt(matches[1], 10);\n g = parseInt(matches[2], 10);\n b = parseInt(matches[3], 10);\n } else if ((matches = /^#([A-f0-9]{2})([A-f0-9]{2})([A-f0-9]{2})$/i.exec(colorString))) {\n r = parseInt(matches[1], 16);\n g = parseInt(matches[2], 16);\n b = parseInt(matches[3], 16);\n } else if ((matches = /^#([A-f0-9])([A-f0-9])([A-f0-9])$/i.exec(colorString))) {\n r = parseInt(matches[1] + matches[1], 16);\n g = parseInt(matches[2] + matches[2], 16);\n b = parseInt(matches[3] + matches[3], 16);\n }\n }\n }\n return (r << 16) + (g << 8) + b;\n};\nColor.blend = function blend(c1, c2, t) {\n c1 = Color.toNumber(c1);\n c2 = Color.toNumber(c2);\n\n const r1 = (c1 & 0xff0000) >> 16;\n const g1 = (c1 & 0x00ff00) >> 8;\n const b1 = c1 & 0x0000ff;\n const r2 = (c2 & 0xff0000) >> 16;\n const g2 = (c2 & 0x00ff00) >> 8;\n const b2 = c2 & 0x0000ff;\n const r = r1 + (r2 - r1) * t;\n const g = g1 + (g2 - g1) * t;\n const b = b1 + (b2 - b1) * t;\n\n return (r << 16) + (g << 8) + b;\n};\nColor.getBlend = function getBlend(c1, c2, t) {\n const r = c1._r + (c2._r - c1._r) * t;\n const g = c1._g + (c2._g - c1._g) * t;\n const b = c1._b + (c2._b - c1._b) * t;\n const a = c1._a + (c2._a - c1._a) * t;\n\n return new Color(r, g, b, a);\n};\nColor.isCSSColor = function (color) {\n if (arguments.length > 1 || typeof color !== 'string') {\n return false;\n }\n return (\n rgb.test(color) ||\n rgba.test(color) ||\n hex.test(color) ||\n hexShort.test(color) ||\n hsl.test(color) ||\n hsla.test(color) ||\n CSSColors[color.toLowerCase()]\n );\n};\n\nColor.getBestContrast = function (color, cl, cd) {\n const lum = color.getLuminance();\n return Math.abs(lum - cl.getLuminance()) > Math.abs(lum - cd.getLuminance()) ? cl : cd;\n};\n\nColor.getContrast = function (color1, color2) {\n if (!color1 || !color2) {\n return undefined;\n }\n\n const l1 = color1.getLuminance() / 100;\n const l2 = color2.getLuminance() / 100;\n\n if (l1 > l2) {\n return (l1 + 0.05) / (l2 + 0.05);\n }\n\n return (l2 + 0.05) / (l1 + 0.05);\n};\n\nColor.isDark = function () {\n const o = {\n getLuminance: Color.prototype.getLuminance,\n isInvalid: Color.prototype.isInvalid,\n };\n Color.prototype.init.apply(o, [].slice.call(arguments));\n return Color.prototype.isDark.call(o);\n};\n\nColor.useDarkLabel = function (areaColor, bgIsDark) {\n return areaColor._a > 0.5 ? !areaColor.isDark() : !bgIsDark;\n};\n\nexport default Color;\n","import Color from './color';\n\nconst chartUtils = {\n TRANSPARENT_BLACK: 'rgba( 0,0,0,0.2 )',\n TRANSPARENT_WHITE: 'rgba( 255,255,255,0.7 )',\n LIGHT_GREY: '#ccc',\n DARK_GREY: '#666',\n BLACK: '#000',\n WHITE: '#fff',\n\n getInverse(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0) {\n return this.BLACK;\n }\n return colorObj.isDark() ? this.WHITE : this.BLACK;\n },\n\n getContrastingGrey(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0) {\n return this.DARK_GREY;\n }\n return Color.getBestContrast(colorObj, new Color(chartUtils.LIGHT_GREY), new Color(chartUtils.DARK_GREY));\n },\n\n getBestContrast(color, color1, color2) {\n return Color.getBestContrast(new Color(color), new Color(color1), new Color(color2));\n },\n\n getContrastingTransparent(color) {\n const colorObj = new Color(color);\n const alpha = colorObj.getAlpha();\n\n if (alpha === 0 || color === 'none') {\n return this.TRANSPARENT_BLACK;\n }\n return colorObj.isDark() ? this.TRANSPARENT_WHITE : this.TRANSPARENT_BLACK;\n },\n};\n\nexport default chartUtils;\n","import { getValue } from 'qlik-chart-modules';\n\nfunction hasSecondDimension(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qDimensionInfo.length`) > 1;\n}\n\nfunction hasSecondMeasure(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qMeasureInfo.length`) > 1;\n}\n\nfunction getOuterDimensionSizeOfMax2Dims(layout, rootPath) {\n if (!hasSecondDimension(layout, rootPath)) {\n return 1;\n }\n return getStackedCubeSizeOf2Dims(layout, rootPath);\n}\n\nfunction getStackedCubeSizeOf1Dim(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n return getValue(layout, `${rootPath}qHyperCube.qSize.qcy`);\n}\n\nfunction getStackedCubeSizeOf2Dims(layout, rootPath) {\n rootPath = rootPath ? `${rootPath}.` : '';\n if (getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.length`)) {\n return (\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qSubNodes.length`, 0) +\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qDown`, 0) +\n getValue(layout, `${rootPath}qHyperCube.qStackedDataPages.0.qData.0.qUp`, 0)\n );\n }\n const index = getValue(layout, `${rootPath}qHyperCube.qEffectiveInterColumnSortOrder.0`);\n const dimInfo = getValue(layout, `${rootPath}qHyperCube.qDimensionInfo.${index}`);\n\n // Use the larger of the two possible values (depending on if the outer dimension contains any null value)\n // can cause some extra cache misses in the hypercube cache, but solves SUI-2065\n return getDimensionSize(dimInfo);\n}\n\nfunction getStackedCubeSizeOfMax2Dims(layout, rootPath) {\n if (!hasSecondDimension(layout, rootPath)) {\n return getStackedCubeSizeOf1Dim(layout, rootPath);\n }\n return getStackedCubeSizeOf2Dims(layout, rootPath);\n}\n\nfunction getHyperCube(layout, path) {\n if (!layout) {\n return null;\n }\n layout = path ? getValue(layout, path) : layout;\n return layout && layout.qHyperCube ? layout.qHyperCube : null;\n}\n\nfunction getDimensionSize(dimInfo) {\n return dimInfo.qCardinalities.qHypercubeCardinal;\n}\n\nexport default {\n getHyperCube,\n hasSecondDimension,\n hasSecondMeasure,\n getStackedCubeSizeOf2Dims,\n getStackedCubeSizeOfMax2Dims,\n getOuterDimensionSizeOfMax2Dims,\n getDimensionSize,\n};\n","/**\n * A tool for jittering positions of data points\n */\nimport hashFromString from '@qlik/common/extra/hash-from-string';\n\nconst JITTER_LEVELS = 10;\n\nconst Jitter = function () {\n this._maxJitter = 1;\n};\n\n/**\n * Sets _maxJitter relative to a given point size or limits to maximum available space specified\n * @param pointSize - Relative to chart rendering area\n * @param jitterParameter - Multiplier controlling how many points wide the jittering is going to be\n * @param availableWidth - Absolute max of jittering (relative to chart rendering area)\n */\nJitter.prototype.calcMaxJitter = function (pointSize, jitterParameter, availableWidth) {\n this._maxJitter = Math.min(pointSize * jitterParameter, availableWidth - pointSize);\n};\n\n/**\n * Calculates a jitter amount based on a number or string (CONSISTENT from time to time)\n * @param value - String or number used as a \"seed\" for calculating jitter amount\n * @returns {number} - fraction of chart rendering area (negative or positive)\n */\nJitter.prototype.getJitterValue = function (value) {\n const fraction = Math.abs(hashFromString(`${value}`) % JITTER_LEVELS) / (JITTER_LEVELS - 1);\n return this._maxJitter / 2 - fraction * this._maxJitter;\n};\n\nexport default Jitter;\n","// Adapt the layout to the new format after SUI-3119\nfunction toAfter(layout) {\n const hyperCube = layout.qUndoExclude.qHyperCube;\n if (hyperCube.qEffectiveInterColumnSortOrder.length === 2 && hyperCube.qEffectiveInterColumnSortOrder[0] === 1) {\n hyperCube.qEffectiveInterColumnSortOrder = [0, 1];\n hyperCube.qDimensionInfo.reverse();\n }\n}\n\n// Adapt the layout to the old format from before SUI-3119\nfunction toBefore(layout) {\n const hyperCube = layout.qUndoExclude.qHyperCube;\n if (hyperCube.qEffectiveInterColumnSortOrder.length === 2 && hyperCube.qEffectiveInterColumnSortOrder[0] === 0) {\n hyperCube.qEffectiveInterColumnSortOrder = [1, 0];\n hyperCube.qDimensionInfo.reverse();\n }\n}\n\nexport default {\n toBefore,\n toAfter,\n};\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\nimport AdvancedColorer from '@qlik/common/picasso/advanced-colorer';\nimport HyperCubeDefGenerator from '@qlik/common/picasso/hypercube-def-generator/hypercube-def-generator';\nimport attExpUtil from '@qlik/common/extra/attribute-expression-util';\n// import util from '../../../js/lib/util';\n\nimport distplotUtils from './distributionplot-utils';\nimport distplotSorter from './sorting/distributionplot-sorter';\nimport elementsRetriever from './sorting/distributionplot-sorting-elements-retriever';\n\nfunction generateHyperCube(layout, properties, app, translator) {\n if (!properties.qUndoExclude) {\n properties.qUndoExclude = {};\n }\n\n properties.qUndoExclude.qHyperCubeDef = extend(true, {}, properties.qHyperCubeDef);\n properties.qUndoExclude.qHyperCubeDef.qDimensions.reverse();\n\n AdvancedColorer.updateHypercubeAttributes(properties, 'qUndoExclude.qHyperCubeDef.', properties.color.point);\n\n let qAttributeExpressions = [];\n const numDims = properties.qUndoExclude.qHyperCubeDef.qDimensions.length;\n const colorByExpression =\n properties.color.point && !properties.color.point.auto && properties.color.point.mode === 'byExpression';\n if (numDims > 0 && colorByExpression) {\n const attrExps = attExpUtil.create(attExpUtil.IDMAP.COLOR_BY_EXPRESSION, {\n qExpression: getValue(properties, 'color.point.expression.qValueExpression.qExpr'),\n });\n qAttributeExpressions = [attrExps];\n }\n properties.qUndoExclude.qHyperCubeDef.qMeasures[0].qAttributeExpressions = qAttributeExpressions;\n\n if (distplotUtils.hasMultipleDimensions(properties)) {\n return HyperCubeDefGenerator.getAllHyperCubeExpressions(properties.qHyperCubeDef, layout.qHyperCube, app).then(\n (expressions) => {\n distplotSorter.applySorting(properties, layout, app, expressions, translator);\n\n // Box min max values\n const firstDimString = expressions.dimensions[0];\n\n const secondDimString = expressions.dimensions[1];\n const innerMeasureString = expressions.measures[0];\n const expMax = elementsRetriever.getFractileExpression(1, firstDimString, secondDimString, innerMeasureString);\n const expMin = elementsRetriever.getFractileExpression(0, firstDimString, secondDimString, innerMeasureString);\n const outerDimension = properties.qUndoExclude.qHyperCubeDef.qDimensions[0];\n outerDimension.qAttributeExpressions = [\n { qExpression: expMin, id: 'minBoxValue' },\n { qExpression: expMax, id: 'maxBoxValue' },\n ];\n }\n );\n }\n properties.qUndoExclude.qHyperCubeDef.qInterColumnSortOrder = [1, 0];\n\n return Promise.resolve();\n\n /* eslint-enable no-param-reassign */\n}\n\nexport default {\n generateHyperCube,\n};\n","import extend from 'extend';\nimport { colorService as createColorService } from 'qlik-chart-modules';\n\nconst hasBase = (i) => i.baseColor || (i.coloring && i.coloring.baseColor);\n\nfunction useBaseColors(layout) {\n const { qDimensionInfo, qMeasureInfo } = layout.qUndoExclude.qHyperCube;\n\n const hasDimensionBase = qDimensionInfo.some(hasBase);\n const hasMeasureBase = qMeasureInfo.some(hasBase);\n\n const base = layout.color.point.useBaseColors;\n\n if ((base === 'measure' && !hasMeasureBase) || (base === 'dimension' && !hasDimensionBase)) {\n return 'off';\n }\n\n return base;\n}\n\nfunction switchActiveDimIndex(byDimDef) {\n if (byDimDef?.activeDimensionIndex === 0) {\n byDimDef.activeDimensionIndex = 1;\n } else if (byDimDef?.activeDimensionIndex === 1) {\n byDimDef.activeDimensionIndex = 0;\n }\n}\n\nfunction needMigrateOldSnapshotColorData(layout) {\n if (!layout.snapshotData) {\n return false;\n }\n if (layout.snapshotData.content?.chartData?.legendDataPage) {\n return false;\n }\n if (!layout.qUndoExclude?.legendData) {\n return false;\n }\n return true;\n}\nfunction migrateOldSnapshotColorData(layout) {\n // avoid modifying the existing layout object\n layout = extend({}, layout);\n layout.snapshotData = extend({}, layout.snapshotData);\n layout.snapshotData.content = extend({}, layout.snapshotData.content);\n layout.snapshotData.content.chartData = extend({}, layout.snapshotData.content.chartData);\n\n layout.snapshotData.content.chartData.legendDataPage = layout.qUndoExclude.legendData.qDataPages;\n return layout;\n}\n\nexport default function create({ layout, localeInfo, model, picasso, environment }) {\n const { app, theme, translator } = environment;\n const colorSettings = extend(true, {}, layout.color.point);\n if (layout.qHyperCube.qDimensionInfo.length === 2) {\n switchActiveDimIndex(colorSettings.byDimDef); // compensate for that the distribution plot dimension are in an different order\n }\n if (needMigrateOldSnapshotColorData(layout)) {\n layout = migrateOldSnapshotColorData(layout);\n }\n if (!colorSettings.mode) {\n colorSettings.mode = 'primary';\n }\n\n return createColorService({\n app,\n model,\n picasso,\n translator,\n config: {\n localeInfo,\n theme,\n key: 'color',\n definitionPath: '/qUndoExclude/qHyperCubeDef',\n },\n createConfig: () => ({\n layout,\n hc: layout.qUndoExclude.qHyperCube,\n legendProps: layout.legend,\n colorProps: {\n ...colorSettings,\n useBaseColors: useBaseColors(layout),\n },\n }),\n });\n}\n","import extend from 'extend';\nimport { getValue } from 'qlik-chart-modules';\nimport ChartView from '@qlik/common/picasso/chart-view';\nimport ChartBuilder from '@qlik/common/picasso/chart-builder/chart-builder';\nimport DerivedProperties from '@qlik/common/picasso/derived-properties/derived-properties';\nimport SelectionHandler from '@qlik/common/picasso/selections/selections-handler';\nimport DependentInteractions from '@qlik/common/picasso/selections/dependent-interactions';\nimport TooltipHandler from '@qlik/common/picasso/tooltip/tooltips-handler';\nimport ScrollHandler from '@qlik/common/picasso/scroll/scroll-handler';\n\nimport stringUtil from '@qlik/common/extra/string-util';\nimport chartStyleUtils from '@qlik/common/extra/chart-style-utils';\nimport hypercubeUtil from '@qlik/common/extra/hypercube-util';\n\nimport Jitter from './jitter';\nimport columnOrderAdapter from './distributionplot-column-order-adapter';\nimport CONSTANTS from './distributionplot-constants';\nimport distributionPlotCubeGenerator from './distributionplot-cube-generator';\nimport createColorService from './create-color-service';\n\nconst DATA_PATH = CONSTANTS.DATA_PATH;\nconst HYPERCUBE_PATH = CONSTANTS.HYPERCUBE_PATH;\nconst HYPERCUBE_DEF_PATH = CONSTANTS.HYPERCUBE_DEF_PATH;\n\nfunction getHashData(properties) {\n return {\n cube: properties[HYPERCUBE_DEF_PATH],\n sorting: properties.sorting,\n color: {\n point: properties.color.point,\n },\n };\n}\n\nfunction getSelectionSettingsArray(setting) {\n if (Array.isArray(setting)) {\n return setting;\n }\n return setting ? [setting] : [];\n}\n\nfunction getDataSize(layout) {\n return Math.min(hypercubeUtil.getOuterDimensionSizeOfMax2Dims(layout, DATA_PATH), CONSTANTS.MAX_STACKED_VALUES);\n}\n\nfunction getPicassoScrollSettings(layout, viewSize) {\n return {\n viewSize,\n max: getDataSize(layout),\n };\n}\n\nfunction getMaxGlyphCountForDimAxis(layout) {\n const qDimensionInfo = layout[DATA_PATH][HYPERCUBE_PATH].qDimensionInfo;\n const qApprMaxGlyphCount = hypercubeUtil.hasSecondDimension(layout, DATA_PATH)\n ? qDimensionInfo[0].qApprMaxGlyphCount\n : 0;\n return Math.min(CONSTANTS.MAX_GLYPH_COUNT, qApprMaxGlyphCount);\n}\n\nfunction updateCacheSize() {\n const k = CONSTANTS.MAX_STACKED_VALUES >= this.layout.qUndoExclude.qHyperCube.qSize.qcy ? 3 : 1; // To fix QLIK-87944\n this.backendApi.setCacheOptions({ height: k * this._scrollHandler.getScrollViewSizeInItem(), width: 3 });\n}\n\nfunction updateOnScrollViewChanged() {\n if (this.layout && hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH)) {\n // Only run this if there are 2 dimensions\n this._scrollHandler.onResize();\n const isSnapshot = !!this.layout.snapshotData;\n if (!isSnapshot) {\n updateCacheSize.call(this);\n }\n }\n}\n\n/**\n * Checks whether the dimensions is locked or not\n * @param layout - layout for distributionplot\n * @returns {bool} - true is the dimension is locked, otherwise false\n */\nfunction getLockedDims(layout) {\n const lockedDims = [];\n const dimInfos =\n layout.qUndoExclude && layout.qUndoExclude.qHyperCube && layout.qUndoExclude.qHyperCube.qDimensionInfo\n ? layout.qUndoExclude.qHyperCube.qDimensionInfo\n : undefined;\n if (!dimInfos) {\n return false;\n }\n for (let i = 0; i < dimInfos.length; i++) {\n if (dimInfos[i].qLocked) {\n lockedDims.push(dimInfos[i].qLocked);\n } else {\n lockedDims.push(false);\n }\n }\n return lockedDims;\n}\n\n/**\n * Disables/Enables measure- dimension range selection depending if the field is locked or not.\n * Example:\n * Inner dim locked, outer dim opened -> Dimension range selection available, measure range selection unavailable\n * Inner dim opened, outer dim locked -> Dimension range selection unavailable, measure range selection available\n * @param lockedDims - Array of booleans determining which dimensions are locked or not\n * @returns {object} that gives the status of measure and dimension range selection\n */\nfunction retrieveRangeSelStatus(lockedDims, isInnerDimSingleSelect, isOuterDimSingleSelect) {\n const rangeSelStatus = {};\n\n if (lockedDims.length === 1) {\n // One dim case\n rangeSelStatus.isOpenDim = false;\n\n if (lockedDims[0]) {\n rangeSelStatus.isOpenMea = false;\n } else {\n rangeSelStatus.isOpenMea = true;\n }\n } else if (lockedDims[0] && !lockedDims[1]) {\n rangeSelStatus.isOpenDim = false;\n rangeSelStatus.isOpenMea = true;\n } else if (!lockedDims[0] && lockedDims[1]) {\n rangeSelStatus.isOpenDim = true;\n rangeSelStatus.isOpenMea = false;\n } else if (lockedDims[0] && lockedDims[1]) {\n rangeSelStatus.isOpenDim = false;\n rangeSelStatus.isOpenMea = false;\n } else {\n rangeSelStatus.isOpenDim = true;\n rangeSelStatus.isOpenMea = true;\n }\n\n if (isInnerDimSingleSelect) {\n rangeSelStatus.isOpenMea = false;\n }\n if (isOuterDimSingleSelect) {\n rangeSelStatus.isOpenDim = false;\n }\n return rangeSelStatus;\n}\n\nfunction sliderEnabled(layout) {\n return layout.dataPoint && layout.dataPoint.bubbleScales;\n}\n\nfunction resetCategoricalLegendScroll() {\n const catLegend = this.chartInstance.component('legend');\n if (catLegend && catLegend.emit) {\n catLegend.emit('resetindex');\n }\n}\n\nfunction isSingleSelect(layout, index) {\n return getValue(layout, `qHyperCube.qDimensionInfo.${index}.qIsOneAndOnlyOne`) || false;\n}\n\nconst DistributionPlot = ChartView.extend('DistributionPlot', {\n namespace: '.distributionPlot',\n\n init({ lasso, environment, flags, picasso, $element, backendApi, selectionsApi }) {\n this._super(picasso, $element, environment, backendApi, selectionsApi);\n this.flags = flags;\n this.picasso = picasso;\n\n this.picassoElement.__do_not_use_findShapes = this.chartInstance.findShapes.bind(this.chartInstance); // to allow access to renderered content via DOM\n\n this._derivedProperties = new DerivedProperties();\n\n this._selectionHandler = SelectionHandler.create({\n model: backendApi.model,\n chartInstance: this.chartInstance,\n selectionsApi,\n isLassoDisabled: this.isLassoDisabled.bind(this),\n selectPaths: ['/qUndoExclude/qHyperCubeDef'],\n lasso,\n });\n this._tooltipHandler = TooltipHandler.create(this.chartInstance, $element, CONSTANTS.CHART_ID);\n this._scrollHandler = new ScrollHandler(\n this.chartInstance,\n $element,\n this.getSlicedData.bind(this),\n this.onScrollCallback.bind(this),\n 'colorLegend-cat'\n );\n\n this._maxBubbleScale = CONSTANTS.BUBBLE_SCALES_MAX;\n\n this._jitterTool = new Jitter();\n\n this.setDataPaths([`${DATA_PATH}/${HYPERCUBE_PATH}`]);\n },\n\n onScrollCallback(layout, settings, isPartialData) {\n const self = this;\n this._updateColorMapData(layout).then(() => {\n self.updateChart(layout, settings, isPartialData);\n });\n },\n\n getSlicedData(top, height) {\n const self = this;\n return this.getData(this.backendApi, this.layout[DATA_PATH][HYPERCUBE_PATH], { top, height }).then(\n () => self.layout\n );\n },\n\n updateScrollHandlerState(b) {\n if (b !== undefined) {\n this._disableScrolling = !!b;\n }\n this._scrollHandler.setDisabled(\n !hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH) || this._disableScrolling\n );\n },\n\n updateConstraints(constraints) {\n const navigation = !constraints.active;\n const tooltip = !constraints.passive;\n const selection = !constraints.select && !constraints.active;\n\n this._scrollHandler[navigation ? 'on' : 'off']();\n this._tooltipHandler[tooltip ? 'on' : 'off']();\n this._selectionHandler[selection ? 'on' : 'off']();\n },\n off() {\n this._scrollHandler.off();\n this._tooltipHandler.off();\n this._selectionHandler.off();\n },\n\n _getPointScale() {\n return sliderEnabled(this.layout) ? this.layout.dataPoint.bubbleScales / this._maxBubbleScale : 1;\n },\n\n _calcBandwidth(chartAreaSize, chart) {\n const dimScale = chart.scales().dimension;\n this._bandwidthRatio = dimScale ? dimScale.pxScale(chartAreaSize).bandwidth() : 1;\n this._bandwidthPx = chartAreaSize * this._bandwidthRatio;\n },\n\n _calcPointMaxSize(pointScale, bandwidthPx) {\n const maxPointSize =\n Math.min(CONSTANTS.MAX_POINT_BASE_SIZE_PX, bandwidthPx * CONSTANTS.POINT_BANDWIDTH_BASE_RATIO) * pointScale;\n\n this._pointMaxSizePx = Math.max(CONSTANTS.MIN_POINT_PIXELS, maxPointSize);\n },\n\n _calcPointSize(pointMaxSizePx, bandwidthPx) {\n this._pointSize = pointMaxSizePx / bandwidthPx;\n },\n\n _getDimAxisSettings(layout, selectionSettings) {\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n const containerSize =\n this.picassoElement.getBoundingClientRect()[layout.orientation === 'vertical' ? 'height' : 'width'];\n const adjustedMaxGlyphCount = stringUtil.getAdjustedMaxGlyphCount(\n getMaxGlyphCountForDimAxis(this.layout || layout),\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages[0].qData[0].qSubNodes\n );\n\n const maxLengthPx = containerSize / 4; // Label size should not be more than 25% of the container size\n return {\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n settings: {\n labels: {\n mode: layout.orientation === 'vertical' ? layout.dimensionAxis.label : 'auto',\n maxGlyphCount: adjustedMaxGlyphCount, // To mitigate SUI-1445 and SUI-4401\n maxLengthPx, // Picasso version 0.5.3 does not support function here\n },\n paddingEnd: 4,\n },\n };\n },\n\n _getBoxMarkerSettings(layout, selectionSettings) {\n const { theme } = this.environment;\n\n const boxFillColor = layout.color.point.auto\n ? theme.getStyle(CONSTANTS.CHART_ID, 'box', 'fill')\n : theme.getColorPickerColor(layout.color.box.paletteColor);\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n\n const obj = this;\n\n let startField = 'qMeasureInfo/0';\n let endField = 'qMeasureInfo/0';\n if (\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) &&\n layout.qUndoExclude.qHyperCube.qDimensionInfo[0].qAttrExprInfo.length\n ) {\n startField = 'qDimensionInfo/0/qAttrExprInfo/0';\n endField = 'qDimensionInfo/0/qAttrExprInfo/1';\n }\n\n const boxSettings = {\n require: ['chart'],\n displayOrder: 1000,\n settings: {\n chart: this,\n box: {\n fill: boxFillColor,\n stroke: theme.getStyle(CONSTANTS.CHART_ID, 'box', 'stroke'),\n strokeWidth: 0,\n width: CONSTANTS.POINT_BANDWIDTH_BASE_RATIO,\n maxWidthPx: CONSTANTS.MAX_POINT_BASE_SIZE_PX,\n minWidthPx: CONSTANTS.MIN_POINT_PIXELS + CONSTANTS.BOX_PADDING * 2,\n },\n minor: { scale: 'measure' },\n orientation: layout.orientation,\n },\n beforeRender() {\n const hasVisibleComponentsProps = obj.layout.presentation && obj.layout.presentation.visibleComponents;\n const showPoints =\n hasVisibleComponentsProps && obj.layout.presentation.visibleComponents.indexOf('point') !== -1;\n\n const chartAreaSize = obj.layout.orientation === 'horizontal' ? this.rect.height : this.rect.width;\n\n obj._calcBandwidth(chartAreaSize, this.chart);\n obj._calcPointMaxSize(showPoints ? obj._getPointScale() : 1, obj._bandwidthPx);\n\n let jitterExpansion = 0;\n\n if (obj._jitter) {\n obj._calcPointSize(obj._pointMaxSizePx, obj._bandwidthPx);\n jitterExpansion = obj._pointSize * obj._bandwidthPx * CONSTANTS.JITTER_PARAMETER;\n }\n\n const maxWidthPx = obj._pointMaxSizePx + jitterExpansion + CONSTANTS.BOX_PADDING * 2;\n const width = maxWidthPx / obj._bandwidthPx;\n\n this.settings.settings.box.maxWidthPx = Math.min(obj._bandwidthPx - 2, maxWidthPx);\n this.settings.settings.box.width = width;\n },\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n data: {\n extract: {\n field: 'qDimensionInfo/0',\n trackBy() {\n return -1; // In 1 dimension case, we only want to draw one box\n },\n props: {\n start: { field: startField, reduce: 'min' },\n end: { field: endField, reduce: 'max' },\n elemNo: { field: 'qDimensionInfo/0' },\n },\n },\n },\n };\n\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n boxSettings.data.extract.field = 'qDimensionInfo/0';\n boxSettings.data.extract.trackBy = function (cell) {\n return cell.qElemNo; // Here we want to draw one box per outer dimension value\n };\n boxSettings.settings.major = { scale: 'dimension' };\n }\n\n return boxSettings;\n },\n\n _getPointMarkerSettings(layout, selectionSettings, tooltipSettings) {\n let strokeWidth = 1; // For old objects - without the dataPoint.border property\n\n if (layout.dataPoint && layout.dataPoint.border === false) {\n strokeWidth = 0;\n }\n\n const brushTrigger = getSelectionSettingsArray(selectionSettings.trigger);\n const brushConsume = getSelectionSettingsArray(selectionSettings.consume);\n if (this._tooltipHandler.isOn()) {\n brushTrigger.push(tooltipSettings.point.trigger);\n brushConsume.push.apply(brushConsume, tooltipSettings.point.consume);\n }\n const obj = this;\n\n const fillFn = this.colorService.getColor();\n const pointMarkerSettings = {\n require: ['chart'],\n displayOrder: 1100,\n settings: {\n chart: this,\n fill: fillFn,\n stroke: (d) => {\n const fill = fillFn(d);\n return chartStyleUtils.getContrastingTransparent(fill);\n },\n size: 0.3,\n strokeWidth,\n sizeLimits: {\n maxRelExtent: 10, // need to override default in order to allow the maximum size of the points to be much higher\n maxPx: CONSTANTS.MAX_POINT_BASE_SIZE_PX,\n minPx: CONSTANTS.MIN_POINT_PIXELS,\n },\n orientation: layout.orientation,\n },\n beforeRender() {\n const chartAreaSize = obj.layout.orientation === 'horizontal' ? this.rect.height : this.rect.width;\n obj._calcBandwidth(chartAreaSize, this.chart);\n obj._calcPointMaxSize(obj._getPointScale(), obj._bandwidthPx);\n obj._calcPointSize(obj._pointMaxSizePx, obj._bandwidthPx);\n if (obj._jitter) {\n const boxPaddingRelative = (CONSTANTS.BOX_PADDING * 2) / chartAreaSize;\n obj._jitterTool.calcMaxJitter(\n obj._pointSize * obj._bandwidthRatio,\n CONSTANTS.JITTER_PARAMETER,\n obj._bandwidthRatio - boxPaddingRelative\n );\n }\n this.settings.settings.sizeLimits.maxPx = obj._pointMaxSizePx;\n this.settings.settings.size = obj._pointSize;\n },\n brush: {\n trigger: brushTrigger,\n consume: brushConsume,\n },\n data: {\n extract: {\n field: 'qDimensionInfo/0',\n props: {\n innerElemNo: { field: 'qDimensionInfo/0' },\n elemNo: { field: 'qDimensionInfo/0' },\n inner: {\n field: 'qDimensionInfo/0',\n value(v) {\n return v;\n },\n },\n row: {\n field: 'qDimensionInfo/0',\n value(v) {\n return v.qRow;\n },\n },\n measure: {\n field: 'qMeasureInfo/0',\n reduce: 'first',\n value(v) {\n return v;\n },\n reduceLabel: 'none',\n },\n ...this.colorService.getDatumProps(),\n },\n },\n },\n };\n\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n pointMarkerSettings.data.extract.props.inner.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.innerElemNo.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.row.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.field = 'qDimensionInfo/1';\n pointMarkerSettings.data.extract.props.outer = {\n field: 'qDimensionInfo/0',\n value(v) {\n return v;\n },\n };\n }\n\n this.setDataPaths([`${DATA_PATH}/${HYPERCUBE_PATH}`]);\n\n // TODO: This code should be enabled when data limitation problem for stacked hyper cube is fixed(QLIK-80557)\n /*\n if( hypercubeUtil.hasSecondMeasure( layout, DATA_PATH ) ) {\n pointMarkerSettings.settings.size = { scale: { source: '/' + HYPERCUBE_PATH + '/qMeasureInfo/1', ref: 'size' } };\n pointMarkerSettings.settings.sizeLimits.maxRelDiscrete = pointSizeOverBandwidth;\n pointMarkerSettings.data.mapTo.size = { source: '/' + HYPERCUBE_PATH + '/qMeasureInfo/1' };\n }\n */\n\n return pointMarkerSettings;\n },\n\n _getPointSelectionLayerSettings(pointMarkerSettings) {\n const pointSelectionLayerSettings = extend(true, {}, pointMarkerSettings, {\n key: 'selection-point-marker',\n settings: {\n opacity: 0,\n },\n });\n pointSelectionLayerSettings.brush.consume.pop();\n pointSelectionLayerSettings.brush.consume.forEach((consume) => {\n consume.style.inactive = undefined;\n consume.style.active.opacity = 1;\n });\n pointSelectionLayerSettings.brush.trigger = [];\n return pointSelectionLayerSettings;\n },\n\n createChartSettings(layout) {\n const isRtl = this.isRtl();\n const { theme } = this.environment;\n const isSnapshot = !!layout.snapshotData;\n const hasVisibleComponentsProps = layout.presentation && layout.presentation.visibleComponents;\n const showPoints = hasVisibleComponentsProps && layout.presentation.visibleComponents.indexOf('point') !== -1;\n const showBox = hasVisibleComponentsProps && layout.presentation.visibleComponents.indexOf('box') !== -1;\n this._jitter = showPoints && layout.dataPoint && layout.dataPoint.displacement === 'jitter';\n\n const hyperCube = layout[DATA_PATH][HYPERCUBE_PATH];\n const dimInfo = hyperCube.qDimensionInfo;\n\n const measureDirection = layout.orientation !== 'horizontal' ? 'y' : 'x';\n const dimensionDirection = layout.orientation !== 'horizontal' ? 'x' : 'y';\n\n const chartBuilder = ChartBuilder.create({\n chartID: CONSTANTS.CHART_ID,\n theme,\n isRtl,\n });\n\n if (hyperCube.qStackedDataPages[0].qData.length === 0) {\n return chartBuilder.getSettings();\n }\n\n let dimAxisSelectionSettings = {};\n let boxSelectionSettings = {};\n let pointSelectionSettings = {};\n let legendSelectionSettings = {};\n if (this._selectionHandler.isOn()) {\n const allowSelectBoxes = !showPoints && hypercubeUtil.hasSecondDimension(layout, DATA_PATH);\n\n this._selectionHandler.setUpStart();\n const innerSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-inner'],\n data: ['innerElemNo'],\n isSingleSelect: isSingleSelect(layout, 0),\n },\n true\n );\n const outerSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-outer'],\n data: ['elemNo'],\n isSingleSelect: isSingleSelect(layout, 1),\n },\n true\n );\n const colorSelectionSettings = this._selectionHandler.setUpBrush(\n {\n dataPath: DATA_PATH,\n contexts: ['select-color'],\n data: ['color'],\n startOnEmptySelection: false,\n },\n true\n );\n const measureSelectionSettings = this._selectionHandler.setUpBrush(\n {\n contexts: ['select-measure'],\n data: [measureDirection],\n },\n true\n );\n this._selectionHandler.setUpDone();\n\n dimAxisSelectionSettings = {\n trigger: extend(true, {}, outerSelectionSettings.trigger, { data: [''] }),\n consume: [extend(true, {}, outerSelectionSettings.consume, { data: [''] })],\n };\n boxSelectionSettings = {\n trigger: allowSelectBoxes ? outerSelectionSettings.trigger : null,\n consume: [innerSelectionSettings.consume, outerSelectionSettings.consume, measureSelectionSettings.consume],\n };\n pointSelectionSettings = {\n trigger: innerSelectionSettings.trigger,\n consume: [\n innerSelectionSettings.consume,\n outerSelectionSettings.consume,\n measureSelectionSettings.consume,\n colorSelectionSettings.consume,\n ],\n };\n legendSelectionSettings = {\n trigger: [extend(true, {}, colorSelectionSettings.trigger, { data: [''] })],\n consume: [\n extend(true, {}, colorSelectionSettings.consume, { data: [''] }),\n innerSelectionSettings.consume,\n outerSelectionSettings.consume,\n ],\n };\n }\n const tooltipSettings = { point: {}, box: {} };\n if (this._tooltipHandler.isOn()) {\n tooltipSettings.point = this._tooltipHandler.setUp({\n chartBuilder,\n colorService: this.colorService,\n data: hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? ['innerElemNo', 'elemNo'] : ['innerElemNo'],\n contexts: ['pointTip'],\n componentKey: 'point-marker',\n environment: this.environment,\n attrDimPath: `/${HYPERCUBE_PATH}/qDimensionInfo/${\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? 1 : 0\n }/qAttrDimInfo/0`,\n measureRows: ['measure'], // Should be a mapped path under extract, mandatory to display tooltip\n labelData: hypercubeUtil.hasSecondDimension(layout, DATA_PATH) ? ['inner', 'outer'] : ['inner'], // Should be a mapped path under extract, mandatory to display tooltip\n });\n }\n\n const lockedDims = getLockedDims(layout);\n const isInnerDimSingleSelect = isSingleSelect(layout, 0);\n const isOuterDimSingleSelect = isSingleSelect(layout, 1);\n const rangeSelStatus = retrieveRangeSelStatus(lockedDims, isInnerDimSingleSelect, isOuterDimSingleSelect);\n const handlers = {\n scrollHandler: this._scrollHandler,\n selectionHandler: this._selectionHandler,\n };\n const keys = {\n componentKey: showPoints ? 'point-marker' : 'box-marker',\n lassoBrushKey: 'select-inner',\n dimRangeBrushKey: 'select-outer',\n measureRangeBrushKey: 'select-measure',\n areaBrushKey: null,\n legendBrushKey: 'legend',\n };\n\n if (this._dependentActions) {\n this._dependentActions.destroy();\n }\n this._dependentActions = DependentInteractions.create(handlers, layout.orientation, isRtl, keys, rangeSelStatus);\n\n chartBuilder.addPreset('dimension-measure-chart', {\n // common\n isRtl,\n includeDimensionAxis: hypercubeUtil.hasSecondDimension(layout, DATA_PATH),\n orientation: layout.orientation,\n selectionsEnabled: this._selectionHandler.isOn(),\n theme,\n\n // measure scale\n measureSource: ['qMeasureInfo/0'],\n\n // dimension scale\n dimensionSource: 'qDimensionInfo/0',\n\n // measure axis and title\n measureAxisProperties: layout.measureAxis, // used by both\n measureTitleText: hyperCube.qMeasureInfo[0].qFallbackTitle,\n\n // dimension axis and title\n dimensionAxisProperties: layout.dimensionAxis, // used by both\n dimensionAxisSettings: this._getDimAxisSettings(layout, dimAxisSelectionSettings),\n dimensionTitleText: (dimInfo && dimInfo[0] && dimInfo[0].qFallbackTitle) || '',\n\n // grid lines\n gridlines: layout.gridlines,\n\n // scroll\n hasNavigation: !isSnapshot,\n isNavigationEnabledFn: () => this._scrollHandler.isOn(),\n scrollSettings: getPicassoScrollSettings(layout, this._scrollHandler.getScrollViewSizeInItem()),\n\n // Lasso\n enableLasso: true,\n lasso: {\n brushKey: showPoints ? 'select-inner' : 'select-outer',\n brushComponents: showPoints ? ['point-marker'] : ['box-marker'],\n brushData: showPoints ? ['innerElemNo'] : ['elemNo'],\n },\n\n // Dim range\n enableDimRange: true,\n dimRange: {\n brushKey: 'select-outer',\n brushAxis: layout.orientation === 'horizontal' ? 'y-axis' : 'x-axis',\n brushArea: showBox ? 'box-marker' : 'point-marker',\n brushScale: 'dimension',\n },\n\n // Measure range\n enableMeasureRange: showPoints,\n measureRange: {\n brushKey: 'select-measure',\n brushAxis: layout.orientation === 'horizontal' ? 'x-axis' : 'y-axis',\n brushArea: showPoints ? 'point-marker' : 'box-marker',\n brushScale: 'measure',\n multiple: true,\n },\n\n brushActions: this._dependentActions.gestures,\n\n // ref-lines\n refLines: layout.refLine && layout.refLine.refLines,\n });\n\n // Box marker\n if (showBox) {\n const boxMarkerSettings = this._getBoxMarkerSettings(layout, boxSelectionSettings);\n chartBuilder.addComponent('box-marker', boxMarkerSettings);\n }\n\n // Point marker\n if (showPoints) {\n const pointMarkerSettings = this._getPointMarkerSettings(layout, pointSelectionSettings, tooltipSettings);\n pointMarkerSettings.data.extract.props[measureDirection] = { field: 'qMeasureInfo/0' };\n pointMarkerSettings.settings[measureDirection] = { scale: 'measure' };\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n pointMarkerSettings.data.extract.props[dimensionDirection] = { field: 'qDimensionInfo/0', type: 'qual' };\n pointMarkerSettings.settings[dimensionDirection] = { scale: 'dimension' };\n }\n\n if (this._jitter) {\n pointMarkerSettings.settings[dimensionDirection] = pointMarkerSettings.settings[dimensionDirection] || {};\n\n const jitterTool = this._jitterTool;\n\n pointMarkerSettings.settings[dimensionDirection].fn = function (d) {\n let basePosition;\n if (typeof d.scale === 'function') {\n // No scale when there is only one dimension\n basePosition = d.scale(d.datum[dimensionDirection].value) + d.scale.bandwidth() * 0.5;\n } else {\n basePosition = 0.5;\n }\n\n return basePosition + jitterTool.getJitterValue(d.datum.value, CONSTANTS.JITTER_PARAMETER);\n };\n }\n\n chartBuilder.addComponent('point-marker', pointMarkerSettings);\n chartBuilder.addComponent('point-marker', this._getPointSelectionLayerSettings(pointMarkerSettings));\n\n const showLegend = layout.legend\n ? layout.legend.show !== false\n : !layout.color.point.auto && layout.color.point.mode === 'byDimension'; // For old apps without layout.legend\n if (showLegend) {\n this.addLegend(chartBuilder, isRtl, legendSelectionSettings);\n }\n }\n\n // Add snapshot settings\n const settings = chartBuilder.getSettings();\n this.addSnapshotChartSettings(settings, layout);\n settings.scales = { ...settings.scales, ...this.colorService.getScales() };\n settings.palettes = this.colorService.getPalettes();\n\n return settings;\n },\n\n /**\n * Configure and add a legend to Picasso's chart config\n * @param chartBuilder {ChartBuilder}\n * @param legend {Object} A pointer to layout.legend\n * @param isRtl {Boolean}\n * @returns {void}\n */\n addLegend(chartBuilder, isRtl, legendSelectionSettings) {\n const LEGEND_DISPLAY_OREDER = 200;\n const LEGEND_PRIO_ORDER = 50; // should be between axis (30) and refline (60) to be removed before axis but after refline\n const config = {\n eventName: 'legend-c',\n key: 'colorLegend',\n styleReference: 'object.comboChart',\n rtl: isRtl,\n settings: {\n item: {\n shape: {\n type: 'circle',\n size: 10,\n },\n },\n },\n };\n const legend = this.colorService.getLegend(config, {\n actions: {\n interact: {\n enabled: () => this._scrollHandler.isOn(),\n },\n },\n });\n\n let { components } = legend;\n components = components.filter((c) => !!c);\n if (components.length > 0) {\n if (this._selectionHandler.isOn()) {\n components[0].brush = {\n consume: legendSelectionSettings.consume.map((c) => extend(true, c, { style: { active: null } })),\n trigger: legendSelectionSettings.trigger,\n };\n }\n components[0].layout.displayOrder = LEGEND_DISPLAY_OREDER;\n components[0].layout.prioOrder = LEGEND_PRIO_ORDER;\n }\n\n chartBuilder.settings.components.push(...components);\n chartBuilder.settings.interactions[0].gestures.unshift(...legend.interactions);\n },\n\n resize() {\n if (!this.layout) {\n return;\n }\n updateOnScrollViewChanged.call(this);\n this._super();\n },\n\n hasValidData() {\n const layout = this.layout;\n return (\n layout[DATA_PATH] &&\n layout[DATA_PATH][HYPERCUBE_PATH] &&\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages.length &&\n layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages[0].qData\n );\n },\n\n paint() {\n const isSnapshot = !!this.layout.snapshotData;\n if (!isSnapshot && !this.environment.options.viewState) {\n this.updateScrollHandlerState(false);\n }\n\n if (!this._orientation) {\n this._orientation = this.layout.orientation;\n }\n if (this._orientation !== this.layout.orientation) {\n updateOnScrollViewChanged.call(this);\n this._orientation = this.layout.orientation;\n }\n const layout = this.layout;\n\n if (!this.hasValidData()) {\n // Data not fetched yet - wait for next paint\n return Promise.resolve();\n }\n\n const self = this;\n const _super = this._super;\n if (\n !isSnapshot &&\n hypercubeUtil.hasSecondDimension(layout, DATA_PATH) &&\n this._scrollHandler.isDataSizeChanged(\n getValue(layout, `${DATA_PATH}.${HYPERCUBE_PATH}.qStackedDataPages.0.qData.0.qSubNodes.length`),\n hypercubeUtil.getOuterDimensionSizeOfMax2Dims(layout, DATA_PATH)\n )\n ) {\n return this._scrollHandler\n .getViewData()\n .finally(() => self._updateColorMapData(layout).then(() => _super.call(self)));\n }\n return this._updateColorMapData(layout).then(() => _super.call(self));\n },\n\n async setSnapshotData(snapshotLayout) {\n this._super(snapshotLayout);\n\n const colorData = await this.colorService.getSnapshotData();\n snapshotLayout.snapshotData.content.chartData = {\n ...snapshotLayout.snapshotData.content.chartData,\n ...colorData,\n };\n\n snapshotLayout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages =\n this.layout[DATA_PATH][HYPERCUBE_PATH].qStackedDataPages;\n columnOrderAdapter.toBefore(snapshotLayout);\n return snapshotLayout;\n },\n getViewState() {\n return {\n scroll: Math.round(this._scrollHandler.getScrollState()),\n };\n },\n\n getDisclaimerAttributes(layout) {\n const showDisclaimer = this.flags.isEnabled('SHOW_DISCLAIMER') ? !(layout.showDisclaimer === false) : true;\n const limitedData =\n (!hypercubeUtil.hasSecondDimension(layout, DATA_PATH) && layout.qHyperCube.qSize.qcy > 10000) ||\n (hypercubeUtil.hasSecondDimension(layout, DATA_PATH) && layout.qHyperCube.qSize.qcy > 3000);\n const explicitLimitedData = showDisclaimer && limitedData;\n const scrollSettings = getPicassoScrollSettings(layout, this._scrollHandler.getScrollViewSizeInItem());\n\n return {\n data: layout && layout.qUndoExclude,\n supportedDisclaimers: {\n LimitedData: showDisclaimer && explicitLimitedData,\n },\n options: {\n paddingBottom: explicitLimitedData && scrollSettings && scrollSettings.viewSize < scrollSettings.max,\n supportNegative: true,\n explicitLimitedData,\n },\n };\n },\n\n async _updateColorMapData(layout) {\n this.colorService = createColorService({\n layout,\n localeInfo: this.localeInfo,\n model: this.backendApi.model,\n picasso: this.picasso,\n environment: this.environment,\n });\n await this.colorService.initialize();\n const colorField = this.colorService.getSettings().field;\n const brush = this.chartInstance.brush('select-color');\n if (/qAttrDimInfo/.test(colorField)) {\n brush.addKeyAlias('attrDim/qDimensionInfo/0', `${DATA_PATH}/${HYPERCUBE_PATH}/${colorField}`);\n }\n },\n _createColorLegendCube(dataPages) {\n const dimIndex = hypercubeUtil.hasSecondDimension(this.layout, DATA_PATH) ? 1 : 0;\n const attrDimInfo = this.layout[DATA_PATH][HYPERCUBE_PATH].qDimensionInfo[dimIndex].qAttrDimInfo[0];\n return {\n qDimensionInfo: [attrDimInfo],\n qMeasureInfo: [],\n qDataPages: dataPages,\n qMode: 'S',\n qSize: {\n qcx: 1,\n qcy: dataPages[0].qMatrix.length,\n },\n };\n },\n _updateColorData() {\n return this._updateColorMapData(this.layout);\n },\n\n updateDerivedProperties(properties, layout) {\n const { app, translator } = this.environment;\n const self = this;\n const model = self.backendApi.model;\n\n return self._derivedProperties\n .addDefaultHyperCubeHash(properties.qHyperCubeDef, layout.qHyperCube, app, getHashData(properties))\n .then((hashData) => {\n const derivedSettings = {\n layout,\n properties,\n model,\n hashData,\n generateDerivedProperties(layout, properties) {\n return distributionPlotCubeGenerator.generateHyperCube(layout, properties, app, translator);\n },\n };\n\n return self._derivedProperties.updateDerivedProperties(derivedSettings);\n });\n },\n\n updateData(layout) {\n const self = this;\n const isSnapshot = !!layout.snapshotData;\n\n return self._super(layout).then(() => {\n if (self._destroyed) {\n return Promise.reject();\n }\n layout = self.layout; // eslint-disable-line no-param-reassign\n\n self._scrollHandler.setOptions({ direction: layout.orientation === 'horizontal' ? 'vertical' : 'horizontal' }); // the scroll orientation is inverted to the chart orientation\n\n if (isSnapshot) {\n columnOrderAdapter.toAfter(layout);\n\n // TODO: migrate? legend color data for old snapshots\n return self._updateColorMapData(layout);\n }\n self.updateScrollHandlerState(true); // No need to run it in snapshot mode\n const { viewState } = self.environment.options;\n if (viewState) {\n self._scrollHandler.updateViewState(getDataSize(layout));\n self._scrollHandler.setScrollState(viewState.scroll);\n } else {\n self._scrollHandler.resetScroll();\n resetCategoricalLegendScroll.call(self);\n }\n\n if (self._scrollHandler.getScrollViewSizeInItem() && !self._cacheSizeInitialized) {\n updateCacheSize.call(self);\n self._cacheSizeInitialized = true;\n }\n\n let promise;\n if (hypercubeUtil.hasSecondDimension(layout, DATA_PATH)) {\n promise = self.getSlicedData(\n self._scrollHandler.getScrollState(),\n self._scrollHandler.getScrollViewSizeInItem()\n );\n } else {\n promise = self.getData(self.backendApi, layout[DATA_PATH][HYPERCUBE_PATH], {\n height: layout[DATA_PATH][HYPERCUBE_PATH].qSize.qcy || 1,\n });\n }\n return promise.then(() => {\n if (self._destroyed) {\n return Promise.reject();\n }\n return self._updateColorData();\n });\n });\n },\n\n isLassoDisabled() {\n const layout = this.layout;\n const isInnerDimSingleSelect = !!(\n layout.qHyperCube.qDimensionInfo &&\n layout.qHyperCube.qDimensionInfo.length > 1 &&\n isSingleSelect(layout, 0)\n );\n\n return isInnerDimSingleSelect;\n },\n});\n\nexport default DistributionPlot;\n","/* eslint-disable prefer-arrow-callback */\nimport extend from 'extend';\n\nconst defaultOptions = {\n enabled: true,\n delay: 50,\n};\n\nfunction deferred() {\n const dfd = {};\n dfd.promise = new Promise((resolve, reject) => {\n dfd.resolve = resolve;\n dfd.reject = reject;\n });\n return dfd;\n}\n\nclass Throttle {\n constructor({ onSend }) {\n this.options = {};\n this.ongoingRequests = []; // requests being processed\n this.queuedRequests = []; // requests waiting to be processed\n\n this.recentRequests = [];\n\n this.resolvedRequests = [];\n\n this._debounceTimer = null;\n this._latestResolvedRequestedAt = -1;\n\n this.onSend = onSend;\n\n this.setOptions({});\n }\n\n destroy() {\n this.clear();\n this.recentRequests = [];\n this.resolvedRequests = [];\n this.onSend = null;\n this.onCancel = null;\n }\n\n setOptions(opts) {\n this.options = extend(true, {}, defaultOptions, this.options, opts);\n\n this.enabled = this.options.enabled || false;\n this.delay = this.options.delay || -1;\n }\n\n clear() {\n clearTimeout(this._debounceTimer); // do not send queued request\n\n let request;\n\n // reject queued requests\n while (this.queuedRequests.length) {\n request = this.queuedRequests.pop();\n request.dfd.reject();\n }\n\n // reject ongoing requests\n while (this.ongoingRequests.length) {\n request = this.ongoingRequests.pop();\n request.dfd.reject();\n }\n }\n\n queue(data) {\n const debounceDelay = this.enabled ? this.delay : -1;\n const now = Date.now();\n\n const requestObject = {\n data,\n dfd: deferred(),\n wrapper: deferred(),\n requestedAt: now,\n };\n\n const avgResponseTime = Math.max(this._getAvgResolutionTime(), debounceDelay);\n const disabled = debounceDelay < 1;\n const notAnyRecentRequests = this.recentRequests.length < 1;\n const lastRequestIsOld =\n notAnyRecentRequests || now - this.recentRequests.slice(-1)[0].requestedAt > avgResponseTime;\n const lastResponseIsOld = now > this._latestResolvedRequestedAt + debounceDelay;\n\n if (disabled || notAnyRecentRequests || lastRequestIsOld || lastResponseIsOld) {\n throttleQueue.apply(this, [requestObject, 0]);\n } else {\n throttleQueue.apply(this, [requestObject, Math.min(debounceDelay, 1000)]);\n }\n\n this.recentRequests.push(requestObject);\n if (this.recentRequests.length > 10) {\n this.recentRequests = this.recentRequests.slice(-10);\n }\n\n return requestObject.dfd.promise;\n }\n\n updateResolutionTime() {\n this._latestResolvedRequestedAt = Date.now();\n }\n\n _getAvgResolutionTime() {\n let avgResponseTime;\n if (this.resolvedRequests.length) {\n avgResponseTime = 0;\n this.resolvedRequests.forEach((q) => {\n avgResponseTime += q.respondedAt - q.sentAt;\n });\n avgResponseTime /= this.resolvedRequests.length;\n }\n return avgResponseTime;\n }\n}\n\nfunction throttleQueue(q, t) {\n const self = this;\n this.queuedRequests.push(q);\n\n clearTimeout(this._debounceTimer);\n\n if (t >= 10) {\n this._debounceTimer = setTimeout(() => {\n sendLastThrottledRequest.call(self);\n }, t);\n } else {\n sendLastThrottledRequest.call(self);\n }\n}\n\nfunction sendLastThrottledRequest() {\n if (this.ongoingRequests.length) {\n this.waitingForResponse = true;\n return;\n }\n let req = this.queuedRequests.pop();\n\n if (req) {\n sendRequest.call(this, req);\n }\n\n // reject all other requests\n while (this.queuedRequests.length) {\n req = this.queuedRequests.shift();\n req.dfd.reject();\n }\n}\n\nfunction sendRequest(q) {\n this.waitingForResponse = false;\n this.ongoingRequests.push(q);\n const self = this;\n const wrapper = q.wrapper;\n\n q.sentAt = Date.now();\n wrapper.promise\n .then(\n function (...args) {\n self.ongoingRequests.splice(self.ongoingRequests.indexOf(q), 1);\n q.respondedAt = Date.now();\n\n self.resolvedRequests.push({\n sentAt: q.sentAt,\n respondedAt: q.respondedAt,\n requestedAt: q.requestedAt,\n });\n if (self.resolvedRequests.length > 10) {\n self.resolvedRequests = self.resolvedRequests.slice(-10);\n }\n\n // maintain order in queue\n if (q.requestedAt > self._latestResolvedRequestedAt) {\n q.dfd.resolve(...args);\n } else {\n q.dfd.reject();\n }\n self._latestResolvedRequestedAt = q.requestedAt;\n },\n function (...args) {\n self.ongoingRequests.splice(self.ongoingRequests.indexOf(q), 1);\n q.respondedAt = Date.now();\n q.dfd.reject(...args);\n }\n )\n .finally(() => {\n if (self.waitingForResponse) {\n sendLastThrottledRequest.call(self);\n }\n });\n\n this.onSend(q.data, wrapper);\n}\n\nexport default Throttle;\n","import Rect from './rect';\n\nconst areaRect = new Rect(0, 0, 0, 0);\nconst pageRect = new Rect(0, 0, 0, 0);\n\nclass StackedCubeSlicer {\n constructor() {\n this.pages = [];\n }\n\n get(areas) {\n return areas.map((area) => this.getPage(area));\n }\n\n getPage(area) {\n const coverage = [];\n // try to extract the entire requested set\n for (let i = 0; i < this.pages.length; i++) {\n const storage = this.pages[i].qArea;\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(storage.qLeft, storage.qTop, storage.qWidth, storage.qHeight);\n const cover = pageRect.intersection(areaRect, true);\n coverage.push({ coverage: cover ? cover.clone() : new Rect(0, 0, 0, 0), idx: i });\n\n if (\n storage.qLeft <= area.qLeft &&\n storage.qLeft + storage.qWidth >= area.qLeft + area.qWidth &&\n storage.qTop <= area.qTop &&\n storage.qTop + storage.qHeight >= area.qTop + area.qHeight\n ) {\n return this._extract(area, this.pages[i]);\n }\n }\n\n // find the page containing the largest amount of requested data\n coverage.sort((a, b) => b.coverage.width * b.coverage.height - a.coverage.width * a.coverage.height);\n\n if (coverage[0].coverage.height > 0 && coverage[0].coverage.width > 0) {\n return this._extract(area, this.pages[coverage[0].idx]);\n }\n\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qData: [],\n };\n }\n\n destroy() {\n this.clear();\n }\n\n isEmpty() {\n return !this.pages || !this.pages[0] || !this.pages[0].qArea.qHeight || !this.pages[0].qArea.qWidth;\n }\n\n clear() {\n this.pages = [];\n }\n\n store(pages) {\n this.pages = pages;\n }\n\n containsArea(area) {\n for (let i = 0; i < this.pages.length; i++) {\n const a = this.pages[i].qArea;\n if (\n a.qLeft <= area.qLeft &&\n a.qLeft + a.qWidth >= area.qLeft + area.qWidth &&\n a.qTop <= area.qTop &&\n a.qTop + a.qHeight >= area.qTop + area.qHeight\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n contains(areas) {\n if (!this.pages || !this.pages.length) {\n return false;\n }\n return areas.filter((a) => !this.containsArea(a)).length === 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n _extract(area, fromPage) {\n areaRect.set(area.qLeft, area.qTop, area.qWidth, area.qHeight);\n pageRect.set(fromPage.qArea.qLeft, fromPage.qArea.qTop, fromPage.qArea.qWidth, fromPage.qArea.qHeight);\n\n const intersection = areaRect.intersection(pageRect, true);\n\n if (!intersection) {\n return {\n qArea: {\n qTop: area.qTop,\n qLeft: area.qLeft,\n qWidth: 0,\n qHeight: 0,\n },\n qData: [],\n };\n }\n\n const y = Math.max(0, area.qTop - fromPage.qArea.qTop);\n\n const source = fromPage.qData[0];\n const nodes = source.qSubNodes;\n\n const data = {};\n // eslint-disable-next-line no-restricted-syntax\n for (const key in source) {\n // eslint-disable-next-line no-prototype-builtins\n if (source.hasOwnProperty(key)) {\n if (key === 'qSubNodes') {\n data[key] = nodes.slice(y, y + intersection.height);\n } else {\n data[key] = source[key];\n }\n }\n }\n\n data.qUp += y;\n data.qDown += fromPage.qArea.qHeight - intersection.height - y;\n\n return {\n qArea: {\n qTop: intersection.y,\n qLeft: intersection.x,\n qWidth: intersection.width,\n qHeight: intersection.height,\n },\n qData: [data],\n };\n }\n}\n\nexport default StackedCubeSlicer;\n","/**\n * @exports assets/objects/backend-api/cache-cube\n * @expose module:assets/objects/cache-cube/cache-cube~CacheCube\n *\n */\nimport extend from 'extend';\nimport Class from '../class';\nimport EngineThrottle from './engine-throttle';\nimport CubeSlicer from './cube-slicer';\nimport StackedCubeSlicer from './stacked-cube-slicer';\nimport PivotCubeSlicer from './pivot-cube-slicer';\n\nconst defaultOptions = {\n mode: 'S',\n enabled: true,\n debouncing: {\n enabled: true,\n delay: 50,\n },\n height: 250,\n width: 250,\n maxTotalArea: 10000,\n};\n\nconst Cache = Class.extend(\n 'CacheCube',\n /** @lends module:assets/objects/cache-cube/cache-cube~CacheCube */ {\n /**\n * @constructs\n * @param {module:assets/objects/backend-api/backend-api~BackendApi} model\n * @param {String} responseProperty\n * @param {String} path\n */\n init(model, responseProperty, path, opts) {\n this.model = model;\n this.responseProperty = responseProperty;\n this.options = {};\n\n this.cubeHeight = 0;\n this.cubeWidth = 0;\n\n this.setOptions(opts || {});\n\n this.setPath(path);\n if (this.options.mode === 'K') {\n this.cube = new StackedCubeSlicer();\n } else if (this.options.mode === 'P') {\n this.cube = new PivotCubeSlicer();\n } else {\n this.cube = new CubeSlicer();\n }\n this.throttle = new EngineThrottle({\n onSend: (areas, dfd) => {\n const directions = this._getDirections(\n this.throttle.recentRequests.map((q) => ({ top: q.data[0].qTop, left: q.data[0].qLeft }))\n );\n const areasToCache = this._getAreasToCache(areas, directions.vertical, directions.horizontal);\n this.cacheData(areasToCache, areas).then(\n (subset) => {\n if (this.cube) {\n dfd.resolve(subset);\n } else {\n dfd.reject();\n }\n },\n () => {\n dfd.reject();\n }\n );\n },\n });\n\n this._modelBinding = () => {\n this.clear();\n };\n\n this.model.on('changed', this._modelBinding);\n },\n destroy() {\n this.cube.destroy();\n this.throttle.destroy();\n if (this.model && this.model.removeListener) {\n this.model.removeListener('changed', this._modelBinding);\n }\n this._modelBinding = null;\n delete this.model;\n delete this.throttle;\n delete this.cube;\n },\n setMethodName(s) {\n this.method = s;\n },\n setPath(s) {\n this.path = s;\n },\n setCubeSize(size) {\n this.cubeHeight = size.qcy;\n this.cubeWidth = size.qcx;\n },\n setOptions(opts) {\n if (!opts) {\n return;\n }\n this.options = extend(true, {}, defaultOptions, this.options, opts);\n\n this.cacheHeight = this.options.height;\n this.cacheWidth = this.options.width;\n this.enabled = this.options.enabled || false;\n this.debouncing = {\n enabled: this.options.debouncing.enabled || false,\n delay: this.options.debouncing.delay || -1,\n };\n },\n clear() {\n if (this.cube) {\n this.cube.clear();\n }\n if (this.throttle) {\n this.throttle.clear();\n }\n },\n set(dataPages) {\n this.clear();\n if (!dataPages || !dataPages.length) {\n return;\n }\n this.cube.store(dataPages);\n },\n cacheData(areasToCache, subset) {\n const fn = function (pages) {\n if (this.cube) {\n this.cube.store(pages);\n return this.cube.get(subset);\n }\n return pages;\n };\n if (this.method === 'getHyperCubeStackData' && this.options.maxStackedValues) {\n return this.model[this.method](this.path, areasToCache, this.options.maxStackedValues).then(fn.bind(this));\n }\n\n return this.model[this.method](this.path, areasToCache).then(fn.bind(this));\n },\n getData(srcAreas) {\n if (!this.model) {\n return Promise.reject();\n }\n if (!this.enabled || !this.cubeHeight || !this.cubeWidth) {\n if (this.method === 'getHyperCubeStackData' && this.options.maxStackedValues) {\n return this.model[this.method](this.path, srcAreas, this.options.maxStackedValues);\n }\n return this.model[this.method](this.path, srcAreas);\n }\n let i;\n let area;\n const areas = [];\n for (i = 0; i < srcAreas.length; ++i) {\n area = srcAreas[i];\n areas.push({\n // areas objects must be unique -> copy page values into new object\n qTop: Math.max(Math.floor(area.qTop), 0),\n qLeft: Math.max(area.qLeft, 0),\n qHeight: Math.min(area.qHeight, this.cubeHeight - Math.floor(area.qTop)),\n qWidth: Math.min(area.qWidth, this.cubeWidth - area.qLeft),\n });\n }\n if (this.cube.contains(areas)) {\n this.throttle.updateResolutionTime();\n return Promise.resolve(this.cube.get(areas));\n }\n if (\n areas[0].qTop === 0 &&\n this.cube.isEmpty() &&\n this.throttle.ongoingRequests.length + this.throttle.queuedRequests.length === 0\n ) {\n // to avoid caching on first call to getData\n this.throttle.updateResolutionTime();\n return this.cacheData(areas, areas);\n }\n\n return this.throttle.queue(areas);\n },\n _getDirections(lastRequests) {\n if (!lastRequests || lastRequests.length < 2) {\n return { vertical: 0, horizontal: 0 };\n }\n\n const lastCouple = lastRequests.slice(-2);\n const diffY = lastCouple[1].top - lastCouple[0].top;\n const diffX = lastCouple[1].left - lastCouple[0].left;\n return {\n vertical: diffY < 0 ? -1 : diffY > 0 ? 1 : 0,\n horizontal: diffX < 0 ? -1 : diffX > 0 ? 1 : 0,\n };\n },\n _getAreasToCache(areas, h, w) {\n let i;\n let wiggleHeight;\n let wiggleWidth;\n let offsetTop;\n let offsetLeft;\n let height;\n let width;\n let top;\n let left;\n const cacheAreas = [];\n let adjustedCacheHeight = this.cacheHeight;\n if (typeof h === 'undefined') {\n h = 0;\n }\n if (typeof w === 'undefined') {\n w = 0;\n }\n\n // Adjust the cache height if needed to keep the amount of data we request inside the limits of the\n // engine. If the height*width*length exceeds the engine limit, adjust height down to the largest\n // valid value it can be.\n if (this.cacheHeight * this.cacheWidth * areas.length > this.options.maxTotalArea) {\n adjustedCacheHeight = Math.floor(this.options.maxTotalArea / (areas.length * this.cacheWidth));\n }\n\n for (i = 0; i < areas.length; ++i) {\n wiggleHeight = h !== 0 ? Math.floor(Math.max(0, adjustedCacheHeight - areas[i].qHeight) * 0.5) : 0;\n wiggleWidth = w !== 0 ? Math.floor(Math.max(0, this.cacheWidth - areas[i].qWidth) * 0.5) : 0;\n offsetTop = wiggleHeight * h - wiggleHeight;\n offsetLeft = wiggleWidth * w - wiggleWidth;\n height =\n h !== 0\n ? Math.max(0, Math.min(Math.max(areas[i].qHeight, adjustedCacheHeight), this.cubeHeight))\n : areas[i].qHeight;\n width =\n w !== 0 ? Math.max(0, Math.min(Math.max(areas[i].qWidth, this.cacheWidth), this.cubeWidth)) : areas[i].qWidth;\n top = Math.max(0, Math.min(areas[i].qTop + offsetTop, this.cubeHeight - height));\n left = Math.max(0, Math.min(areas[i].qLeft + offsetLeft, this.cubeWidth - width));\n\n cacheAreas.push({\n qTop: top,\n qHeight: height,\n qLeft: left,\n qWidth: width,\n });\n }\n\n // console.log( \"directions x:\" + w + \" y:\" + h + \", cacheAerea: t:\" + cacheAreas[0].qTop + \", l:\" + cacheAreas[0].qLeft + \", w:\" + cacheAreas[0].qWidth + \", h:\" + cacheAreas[0].qHeight );\n\n return cacheAreas;\n },\n }\n);\n\nexport default Cache;\n","import CacheCube from '@qlik/common/extra/backend-api/cache-cube';\nimport hypercubeUtil from '@qlik/common/extra/hypercube-util';\nimport CONSTANTS from './distributionplot-constants';\n\nconst DATA_PATH = CONSTANTS.DATA_PATH;\nconst HYPERCUBE_DEF_PATH = CONSTANTS.HYPERCUBE_DEF_PATH;\n\nexport default class BackednAPi {\n constructor(model) {\n this.model = model;\n this.path = `/${DATA_PATH}/${HYPERCUBE_DEF_PATH}`;\n this.cacheCube = new CacheCube(model, 'qDataPages', this.path, { mode: 'K' });\n this.cacheCube.setMethodName('getHyperCubeStackData');\n this.cacheCube.setOptions({ maxStackedValues: CONSTANTS.MAX_STACKED_VALUES });\n }\n\n setPath(path) {\n this.path = path;\n }\n\n setCacheOptions(opts) {\n this.cacheCube.setOptions(opts);\n }\n\n updateCache(layout) {\n let hyperCube;\n let hyperCubeContainerPath;\n if (this.dataPath === 'qHyperCube') {\n hyperCube = layout && layout.qHyperCube;\n } else {\n hyperCubeContainerPath = this.dataPath.slice(0, this.dataPath.indexOf('qHyperCube') - 1);\n hyperCube = layout && layout[hyperCubeContainerPath] && layout[hyperCubeContainerPath].qHyperCube;\n }\n if (!layout.qSelectionInfo.qInSelections) {\n this.cacheCube.setCubeSize({\n qcx: hyperCube.qSize.qcx,\n qcy: hypercubeUtil.getStackedCubeSizeOfMax2Dims(layout, hyperCubeContainerPath),\n });\n }\n this.backendStackThrottle.clear();\n }\n\n getData(pages, path) {\n const cacheCube = this.cacheCube;\n if (path) {\n return this.model.getHyperCubeData(path, pages);\n }\n return this.cacheCube.getData(pages).then((data) => {\n const isReduced = data[0] && data[0].qData[0] && data[0].qData[0].qSubNodes.some((node) => node.qDown > 0);\n if (isReduced) {\n cacheCube.clear();\n }\n return data;\n });\n }\n}\n"],"names":["env","translator","get","add","t","Object","keys","all","forEach","key","locale","picasso","picassojs","renderer","prio","use","PicassoQ","picassoOrHammer","interaction","hammer","Hammer","PicassoHammer","eventArea","component","disclaimer","picassoSetup","qae","ext","element","useElement","environment","app","useApp","appLayout","useAppLayout","deviceType","useDeviceType","options","useOptions","theme","useTheme","useTranslator","useMemo","direction","freeResize","language","name","useEnvironment","selections","useSelections","layout","useStaleLayout","model","useModel","constraints","useConstraints","lasso","enabled","setEnabled","useState","active","setActive","isInSelections","useLayout","qSelectionInfo","qInSelections","toggle","a","useEffect","select","useAction","label","icon","lassoIcon","hidden","action","useLasso","renderState","useRenderState","instance","setInstance","$element","$","backendApi","snapshotData","SnapshotAPI","BackednAPI","getBackedApi","selectionsApi","view","ChartView","flags","destroy","error","usePromise","async","updateEnvironment","updateConstraints","properties","getEffectiveProperties","updateDerivedProperties","pending","restore","updateData","paint","chartInstance","rect","useRect","resize","width","height","useResize","onTakeSnapshot","setSnapshotData","useImperativeHandle","getViewState","global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","item","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","cache","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","rtrimCSS","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","url","isLocal","protocol","processData","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","_jQuery","_$","noConflict","translateKnownTypes","Click","tap","pan","swipe","rotate","press","pinch","getGestureType","hammered","Hammered","chart","mediator","mc","hammerGestures","isOn","addRecognizers","enable","gestures","gesture","Manager","eventName","recognizeWith","requireFailure","removeAddedEvents","newSettings","setDefaultSettings","exportName","assign","VENDOR_PREFIXES","TEST_ELEMENT","abs","setTimeoutContext","bindFn","invokeArrayArg","deprecate","deprecationMessage","log","output","nextKey","inherit","child","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","str","findByKey","uniqueArray","prefixed","property","camelProp","_uniqueId","getWindowForElement","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","navigator","userAgent","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","DIRECTION_VERTICAL","DIRECTION_UP","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","deltaTime","angle","getAngle","distance","getDistance","offsetDelta","prevDelta","prevInput","x","deltaX","y","deltaY","computeDeltaXY","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","rotation","getRotation","maxPointers","velocity","velocityX","velocityY","lastInterval","computeIntervalInputData","srcEvent","computeInputData","emit","recognize","p1","p2","sqrt","atan2","evEl","evTarget","evWin","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","2","3","4","5","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","changed","INPUT_END","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","INPUT_START","changedTargetTouches","touch","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","touchMap","cssSupports","CSS","supports","getTouchActionProps","TouchAction","compute","actions","update","touchAction","recognizers","recognizer","getTouchAction","hasPanX","hasPanY","cleanTouchActions","preventDefaults","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","DIRECTION_LEFT","preventSrc","STATE_FAILED","Recognizer","defaults","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","preset","dropRecognizeWith","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","STATE_BEGAN","attrTest","optionPointers","isRecognized","isValid","threshold","DIRECTION_HORIZONTAL","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","toggleCssProps","force","curRecognizer","existing","gestureEvent","createEvent","initEvent","dispatchEvent","triggerDomEvent","INPUT_MOVE","INPUT_CANCEL","STATE_POSSIBLE","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","DIRECTION_NONE","DIRECTION_RIGHT","DIRECTION_DOWN","DIRECTION_ALL","Tap","Pan","Swipe","Pinch","Rotate","Press","Picasso","mounted","classList","render","disableTriggers","preferredSize","h","rtl","dock","modifiedLabel","spanStyle","whiteSpace","textOverflow","justifyContent","alignItems","color","fontStyle","fontSize","transform","transformOrigin","textAlign","getStyle","ref","alignToRef","title","shapes","d","getOwnPropertySymbols","r","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","c","f","from","g","newValue","o","u","q","range","resources","palette","items","valueAccessor","row","M","byRow","byElemNo","persistent","hc","qDimensionInfo","activeDimensionIndex","qSize","qcy","qDataPages","qArea","qHeight","qCardinal","pic","extract","field","trackBy","k","byDimDef","coloring","colorMapRef","C","fields","S","D","I","E","O","A","N","P","L","T","F","R","H","V","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","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","z","rgb","formatHex","formatRgb","B","Y","W","U","Z","NaN","K","G","J","X","min","ee","Q","te","displayable","hex","formatHsl","brighter","pow","darker","ne","re","oe","ie","ae","ue","le","he","me","de","ce","se","fe","pe","sin","ye","be","xe","ge","gamma","qe","we","limits","limitType","colors","resolveUIColor","breakTypes","domain","Me","floor","Number","ke","mode","fieldType","reverseScheme","invalid","qMode","qStackedDataPages","qTreeDataPages","qGroupSize","exclude","autoMinMax","measureMin","measureMax","measureScheme","palettes","quant","getDataColorScales","some","Ce","activeMeasureIndex","matchMeasure","Se","cm","paletteColor","startsWith","nil","De","measureOverrides","every","Ie","Oe","auto","getCField","byMeasureDef","labelExpRef","altLabel","useMeasureGradient","gradient","auxiliary","getCDef","getCByField","getPersistence","qError","qHasOtherValues","isFieldLocked","qLocked","dimensionScheme","categorical","useDimColVal","qFallbackTitle","colorExpression","qMin","qMax","expressionIsColor","expressionLabel","useBaseColors","qMeasureInfo","baseColor","getDataColorPalettes","explicit","singleColor","Ee","Ae","colorProps","getDimensionColorMap","Promise","getMeasure","getAttributeDimension","config","localeInfo","getDataColorPickerPalettes","getAuxiliaryData","getAuxiliarySettings","others","colorMap","qInterColumnSortOrder","legendDataset","external","nul","oth","usePal","pal","autoFill","single","uiPalette","getDataColorSpecials","Ne","measureGradient","legendDataPage","dimValsData","Pe","isHandled","Le","chartData","getObject","getLayout","Te","je","getHyperCubeData","qLeft","qTop","qWidth","Fe","reduce","qText","Re","datum","He","isNull","Ve","ze","_e","Be","styleReference","legendProps","minimumLayoutMode","showTitle","wordBreak","maxLines","fill","fontFamily","Ye","viewState","scaleKey","scales","up","down","scrollOffset","size","horizontal","navigation","pointer-events","textTransform","verticalAlign","textRendering","xmlns","viewBox","brush","consume","inactive","major","anchor","Ue","navigationDisabled","interact","componentsFromPoint","hasAttribute","legendtap","interactions","components","Ke","Ge","getSnapshotData","auxiliarySettings","settingsForMeasure","isSelectionLocked","isMeasureSelectionLocked","metric","override","qElemNumber","amend","othersLabel","includes","datumProps","addMeasureIx","qNum","legend","We","$e","qHyperCube","Xe","Je","Ze","Qe","ft","dt","St","Dt","It","Et","Zt","Qt","rn","en","eachBefore","nn","tn","eachAfter","sum","path","ancestors","descendants","leaves","links","En","On","search","substring","charAt","toFixed","lastIndexOf","In","An","Nn","6","9","12","15","18","21","24","-3","-6","-9","-12","-15","-18","-21","-24","Pn","Ln","Tn","jn","Fn","Rn","Hn","Vn","zn","_n","Yn","Un","abbreviate","substr","postfix","maxPrecision","percentage","numericPattern","numericRegex","groupTemp","decTemp","thousandDelimiter","decimalDelimiter","patternSeparator","abbreviations","qNumericalAbbreviation","prepare","subtype","formatValue","_prepared","positive","isFunctional","negative","zero","toExponential","Bn","toPrecision","$n","Qn","er","nr","rr","or","qCalendarStrings","qLongDayNames","qDayNames","qLongMonthNames","qMonthNames","locale_days","locale_days_abbr","locale_months","locale_months_abbr","qTimeFmt","qDateFmt","qTimestampFmt","getUTCHours","getUTCDay","year","getUTCFullYear","month","getUTCMonth","day","date","getUTCDate","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","UTC","getTime","getDay","ir","Y+|y+","YY","YYY","def","M+","MM","MMM","W+|w+","WW","WWW","D+|d+","h+|H+","m+","s+|S+","f+|F+","t{1,2}|T{1,2}","fnTest","Class","Rect","ctor","Function","setLTRB","equal","combineWith","getRight","getBottom","intersectsWith","intersectsRect","intersection","strict","union","pointInside","rectInside","points","getPoints","getCenterPoint","getBoundingRect","dw","dh","hasNaN","areaRect","pageRect","CubeSlicer","pages","areas","area","getPage","storage","coverage","cover","_extract","qMatrix","clear","isEmpty","containsArea","fromPage","matrix","deepCount","addNode","slicedTrunk","newNode","getSlicedTreeRecursive","subNodes","qixNode","subSlicedTree","qUp","qDown","qSubNodes","getSlicedTree","PivotCubeSlicer","requestedAreas","qData","prepareCubeSlicer","visualization","responseProperty","slicer","origDataPages","page","SnapshotApi","dataPath","rects","sliceDataPages","getValue","setCacheOptions","updateCache","qHyperCubeDef","qDimensions","qMeasures","qAlwaysFullyExpanded","qSuppressZero","qSuppressMissing","point","dataPoint","bubbleScales","displacement","dimensionAxis","measureAxis","minMax","spacing","gridlines","orientation","presentation","visibleComponents","refLine","refLines","sorting","autoSort","showTitles","subtitle","footnote","fixInterColumnSortOrder","setColorVars","dimensions","description","translationProperty","added","moved","removed","measures","toStringTag","__esModule","default","updated","previous","qLibraryId","qInfo","qId","dimensionList","info","qTags","qName","qDerivedFieldData","qDerivedFieldLists","qFieldDefs","qDef","fieldList","fullAccumulation","fullRange","crossAllDimensions","modifier","dimensionAndFieldList","funcComp","valueComp","showExcludedValues","isFullRange","getNumDimensions","getExpressionWithExcludedComp","expression","treatMissingAsNull","getRowNoComp","getNumStepComp","steps","getAboveCompPrefix","getAboveCompSuffix","getAboveComp","getFunctionPrefix","getFunctionSuffix","getRangeComp","getAggrComp","getExcludedComp","needDimension","primaryDimension","accumulationDimension","getDimComp","qSortCriterias","qSortByExpression","qSortByNumeric","qSortByAscii","simplifyExpression","extractInputExpression","outputExpression","initModifier","isApplicable","minDimensions","maxDimensions","getExpressionWithMarkers","canExtract","getDimDefWithWrapper","getFieldWithWrapper","generate","op","createPatch","updateObject","qOp","qValue","stringify","qPath","applyPatches","translationKey","generateExpression","numDimensions","enableTotalsFunction","propertyPanelDef","translation","refFn","primaryDimensionTooltip","schemaIgnore","qGroupFallbackTitles","crossAllDimensionsTooltip","rangeFull","rangeCustom","rangeSteps","change","modifiers","nullSuppression","showNull","inverted","CURRENT_SELECTION","SELECT_FIELD_VALUE","DISREGARD_SELECTION","ONE_DIMENSION","ALL_DIMENSIOANS","DISREGARD_ALL_DIMENSIONS","dimensionalScopeOneDimension","tooltipTranslation","dimensionalScopeOneDimensionTooltip","dimensionalScopeAllDimensions","dimensionalScopeAllDimensionsTooltip","dimensionalScopeDisregardAllDimensions","dimensionalScopeDisregardAllDimensionsTooltip","selectionScope","selectionScopeCurrentSelection","selectionScopeSpecificValue","selectionScopeTotal","dimensionalScope","updateModifier","modifierSelectionScope","modifierSelectionScopeTooltip","dropdownOnly","getFieldList","modifierDimensionalScope","modifierDimensionalScopeTooltip","supportTooltip","getDisregardSelectionComp","getFieldSelectionComp","getTotalComp","getSelectedDimComp","getExpression","getExpressionRef","getLibraryIdRef","getLibraryId","getLabelRef","getLabelExpressionRef","initBase","restoreBase","accumulation","movingAverage","difference","normalization","applyModifiers","cleanUpMeasure","masterItemSubscriber","unsubscribe","hasActiveModifiers","getActiveModifier","isSupportedModifiers","isApplicableSupportedModifiers","modifierTypes","measureBase","limitedSorting","ifEnableTotalsFunction","ve","isSnapshot","masterItem","isFirstTime","lastReloadTime","libraryIds","oldProperties","runUpdateIfChange","libraryItemsProps","newProperties","libraryId","qMeasure","qLabel","qLabelExpression","quarantine","qNumFormat","isCustomFormatted","qAggrFunc","getDimensionList","measureLibraryIds","dimensionLibraryIds","getProperties","getDimension","qHasSoftPatches","qExtendsId","setProperties","listener","layoutSubscribe","subscribe","dispose","clearUndoBuffer","setValue","isAtomicValue","generateId","isOrderedSubset","indexAdded","indexRemoved","findItemByPropertyValue","findIndexByPropertyValue","addDimensions","exportFormat","excludedDimensions","addMeasures","excludedMeasures","setInterColumnSortOrder","interColumnSortOrder","copyProperties","updateLayoutExclude","qLayoutExclude","storeMeasuresModifiers","qv","importCommonProperties","copyPropertyIfExist","copyPropertyOrSetDefault","getDefaultDimension","cId","qNullSuppression","qOtherLabel","qOtherTotalSpec","qOtherLimitMode","qOtherMode","qOtherSortMode","qSuppressOther","getDefaultMeasure","numFormatFromTemplate","qTrendLines","newHyperCubeDef","defaultDimension","maxMeasures","minMeasures","defaultMeasure","getMaxMinDimensionMeasure","dataDefinition","createNewProperties","initialProperties","hypercubePath","shouldInitLayoutExclude","initLayoutExclude","updateDimensionsOnAdded","updateMeasuresOnAdded","restoreMeasuresModifiers","exportProperties","propertyTree","viewDataMode","qProperty","qContextSetExpression","qDynamicScript","importProperties","defaultPropertyValues","extension","supportedFilters","isHCModifierSupported","qChildren","cellBackgroundColor","cellForegroundColor","colorByAlternative","colorByExpression","tooltip","urlLabel","qAttribute","moveByIdFromGroup","IDMAP","CELL_BACKGROUND_COLOR","CELL_FOREGROUND_COLOR","COLOR_BY_ALTERNATIVE","COLOR_BY_EXPRESSION","TOOLTIP","CELL_LINK_LABEL","CELL_LINK_URL","getNumMeasures","wrapFieldName","getItemLabel","colorModeOptions","multiColor","scatterplot","sn-scatter-plot","piechart","linechart","distributionplot","qStringExpression","qExpr","isDimension","attributeExpression","qExpression","qSortBy","qAttributeDimensions","qAttributeExpressions","qFieldLabels","useMasterNumberFormat","formatting","changeProperty","getCanColorBy","byDimension","byMeasure","byMultiple","byExpression","shouldUpdateColorBy","canColorBy","autoColor","colorMode","updateColorBy","deleteTotalMode","qTotalMode","shouldAddColorByExpression","addColorByExpression","switchToAutoColor","shouldSwitchToColorPersistent","handleAutoMinMax","handleMeasuresAxis","measureType","measureAxes","series","axis","line","marker","bar","total","supportedAutoMinMax","arrayPath","quarantineName","arrayName","itemPath","unquarantine","quarantineAlternative","unquarantineAlternative","hypercube","colorChart","axisChart","quarantineProperty","unquarantineProperty","quarantineArrayProp","unquarantineArrayProp","conditionalColoring","conditionalShow","COMMON_COLOR_PROPS","move","distributionPlotColorBy","importColors","qValueExpression","exportColors","propTree","conversion","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","getProperty","ExpressionWrapper","wrapExpression","ExpressionReplacer","replaceExpressionTokens","tokenMappings","tokenIdentifiers","identifiers","tokenExpression","tokenString","returnExpression","createRegExp","isGlobal","isGrouped","escapedString","regexpString","ExpressionGenerator","template","mappings","explicitMappings","mapping","variations","variation","variationExpressions","assembleVariation","regExp","stringArray","HyperCubeGenerator","generateHyperCubeDef","hyperCubeDef","hyperCube","knownMappings","dimensionIndices","measureIndices","dfds","returnPromise","spliceIdentifiedMatches","getMappingRegExp","getExpressionFromDimension","getExpressionFromMeasure","getKnownMappings","allMappings","generatedHyperCubeDef","dimensionTemplate","measureTemplate","getAllHyperCubeExpressions","getExpressionFromLibraryItem","drillIndex","qGroupPos","qDim","enumConvertFunctions","isReverseSortFn","getFn","reverseSortMultiplier","setFn","reverseSort","convertFunctions","booleanConvertFunctions","defaultSort","intValue","invertedEnumConvertFunctions","sortDropdownOptions","getSortByPropertyDefinition","convertFuncs","toggled","itemData","sortOrderBuilder","ascii","numeric","cFuncs","propDef","expressionType","frequency","CONSTANTS","DATA_PATH","HYPERCUBE_DEF_PATH","HYPERCUBE_PATH","CHART_ID","AUTO_SORT","SORT_CRITERIA","SORTING_ELEMENT_ID","SORTING_ELEMENT_MIN_ID","SORTING_ELEMENT_MAX_ID","SORTING_EXPRESSION","MAX_GLYPH_COUNT","MAX_STACKED_VALUES","HORIZONTAL","BOX_PADDING","POINT_BANDWIDTH_BASE_RATIO","MAX_POINT_BASE_SIZE_PX","MIN_POINT_PIXELS","JITTER_PARAMETER","BUBBLE_SCALES_MAX","hasMultipleDimensions","freeze","distplotUtils","getOuterDimensionCardinality","isAutoSort","isSortByExpression","isSortByNumeric","isSortByAscii","reverseMap","attExpUtil","attributeExpressions","idProp","aE","getIndexById","moveById","fromArray","expsIndex","targetIndex","attribExps","moveAllById","fromAttribExps","toAttribExps","newAttribExps","fromObj","toObj","fromGroup","attributeProp","clean","LogicHelper","getColorByDefinition","columnType","isAttribute","hasLabelExpression","hasLabel","NumberFormatUtil","useLocalFormat","_formatting$quarantin","_formatting$quarantin2","isUsingMasterNumberFormat","_formatting$quarantin3","_formatting$quarantin4","baseNotSupported","baseDimSupported","AdvancedColorer","isSupported","isDimSupported","colorBy","colorByUpdater","markerSettings","srcPath","updateColorDef","updateHypercubeAttributes","dim","attrDim","colorByDefinition","setAltLabel","setColorByPropertyDef","attributeExpsUtil","exclDimensions","resolveColorByPropertyDef","clearColorByItem","cleanAttributeByType","attribute","keepMode","itemType","isDim","customLabel","inIndex","mea","isExpression","getBaseColor","isDimensionLibraryItem","isMeasureLibraryItem","isColorAuto","isColorByDimension","isColorByMeasure","propsLogic","measuresHasBaseColors","dimensionsHasBaseColors","onGlobalChangeColors","onChangeCalcCond","_data$qUndoExclude","baseCube","generatedCube","qUndoExclude","qCalcCond","qCalcCondition","isColorByExpression","isColorBySingle","showLegend","showColorByLabel","isDimAndNotLibraryItem","isMeasureAndNotLibraryItem","hasActiveDimensionIndex","hasDimValueColors","activeDimId","_handler$layout$qHype","_handler$layout$qHype2","_handler$layout$qHype3","hasValueColors","Sorter","getSettingsFn","getElementsFn","getSettings","getElements","applyAutoSorting","sortCriterias","sortCriteria","SORT_BY_EXPRESSION","SORT_BY_ASCII","SORT_BY_NUMERIC","SORT_BY_LOAD_ORDER","defaultElement","getDefaultElement","exp","matchingElements","isDefault","applyDefaultCustomSorting","chartSorting","elementId","qSortByLoadOrder","applyCustomSorting","sortByExpression","sortByAscii","sortByNumeric","sortByLoadOrder","throwError","getMatchingElement","sorterFactory","elementsRetriever","sorterFacade","applySorting","sorter","hasCachedSortCriteria","SORTER_BASE_SORTING_SETTINGS","ASCII","ELEMENT","SORTING_SETTINGS","DIST_MAX","BASE_SORTING_SETTINGS","settingsRetriever","SETTINGS","getFractileExpression","percentile","innerDim","outerDim","innerMeasureString","fnName","wrappedInnerDim","wrappedOuterDim","distplotSortingElementsRetriever","getElementIds","distributionPlotConstants","measureExpressions","dimensionExpressions","innerDimString","outerDimString","expMin","expMax","setSorting","expressions","outerDimension","distplotSorter","exps","validate","HyperCubeDefGenerator","SORT_BY_EXPRESSION_REF","expressionSortOrderer","updateSortOrder","prevProperties","currentSortByExpression","currentSortingElement","prevSortingElement","currentSortingElementIsMax","wasChangedFromMaxToMin","wasChangedFromMinToMax","prevSortByExpression","sortByExpressionToggledOnWithMaxElementAndAscendingSet","getStylingPanelDefinition","bkgOptionsEnabled","chartTitle","useGeneral","useBackground","persistentColorsShowFunc","propertyDefinition","anything","sense","stylingPanelEnabled","isEnabled","lookupColorInPalette","pointColor","grouped","boxColor","dualOutput","general","showDisclaimer","styleEditor","labelPlacement","showDistBackground","gridLines","snapshot","tid","showGridLines","gridSpacing","bubbleScaleItems","jitter","uses","startAt","readOnly","definition","classification","section","tags","exclusive","dimensionAxisTitle","othersGroup","updateAltLabel","byDefRef","byDef","getLabel","_data$color$point$byD","_data$color$point$byD4","_data$color$point$byD5","_data$color$point$byD2","_data$color$point$byD3","_args$handler$layout$","_args$handler$layout$2","_args$handler$layout$3","libId","qAttrDimInfo","byDimensionOptions","_data$qHyperCubeDef","_data$qHyperCubeDef$q","_data$qHyperCubeDef2","_data$color$point$byD6","_data$color","_data$color$point","_data$color$point$byD7","showPointPaletteColor","useMeasureBaseColor","useDimensionBaseColor","simpleColors","simpleItems","undefinedValue","globalChange","colorByDimension","baseColors","useBaseColor","_data$color$point$byD8","_data$color$point2","_data$color$point2$by","simpleLabels","labels","_props$qHyperCubeDef$","_props$qHyperCubeDef$2","dimensionTitle","_props$qHyperCubeDef$3","_props$qHyperCubeDef$4","measureTitle","_props$qHyperCubeDef$5","_props$qHyperCubeDef$6","colorByMeasure","colorByLabel","measureColor","persistentColors","colorSchemeMeasure","colorSchemeDimension","customRange","addons","dataHandling","calcCond","colorBackground","defaultExpressionItem","expressionItem","sortByElement","expressionRef","elementRef","simpleSorting","sortCriteriasRef","sortingItems","defaultSortMessage","noData","getCurrentSortPropertyInfo","dimensionSortCriteriaPath","currentSortPropertyInfo","buildDefinition","baseHyperCubeDefPath","chartSortingPath","sortedDimensionPath","getElementIdsFn","sortingOptions","diffs","setPropertyValue","currentChartSortProperty","elementIds","cleanChartSorting","currentDimensionSortProperty","colorScheme","sequential","_env$anything","pp","softDefinition","cssScaling","export","exportData","sharing","viewData","usingDerivedProperties","colorByPath","onSoftPropertyChange","nextProperties","mapProperties","getDefaultDimensionProperties","getDefaultMeasureProperties","hyperCubePath","idGen","getChar","base62","chr","SCROLLBAR_KEY","getAxisDock","isRtl","getYAxisDock","getXAxisDock","yDockNearFar","axisDockUtil","getOppositeAxisDock","rangesOfLRgExp","rangesOfRRgExp","rangesOfALRgExp","isLtrChar","isRtlChar","rtlUtils","lrm","rlm","detectTextDirection","refLineUtil","lineSettings","_options$style","defaultSettings","stroke","getColorPickerColor","strokeDasharray","lineType","lineLabelSettings","chartID","labelColor","labelFontSize","labelFontFamily","align","vAlign","maxWidthPx","isVisible","refLineExpr","getRefLineTitle","valueString","showValue","showLabel","RtlUtil","constants","SHOW_AXIS_LABELS_OPTIONS","SHOW_TITLE_OPTIONS","VERTICAL","LAYOUTSETTINGS","displayOrder","rangeDim","rangeMeasure","rangeMinor","scrollBar","prioOrder","measureAxisTitle","refLinesLabels","DEFAULT_CHART_ORIENTATION","DimensionMeasureChart","chartBuilder","measureAxisProperties","dimensionAxisProperties","chartOrientation","isChartHorizontal","measureDirection","dimensionDirection","includeMeasureAxisComponent","includeMeasureAxisTitleComponent","measureTitleText","includeDimensionAxisComponent","includeDimensionAxis","includeDimensionAxisTitleComponent","dimensionTitleText","includeGridlines","includeRefLines","interactionActions","measureAxisSettings","forceBounds","showBounds","measureAxisOptions","getMeasureAxisOptions","addComponent","addMeasureAxisComponent","measureTitleSettings","getMeasureAxisTitleOptions","addMeasureAxisTitleComponent","measureScaleSettings","measureScaleOptions","measureSource","ticks","addScale","addMeasureScale","dimensionAxisSettings","dimensionAxisOptions","getDimensionAxisOptions","addDimensionAxisComponent","dimensionAxisTitleSettings","dimensionAxisTitleOptions","getDimensionAxisTitleOptions","addDimensionAxisTitleComponent","dimensionScaleOptions","dimensionSource","dimensionScaleSettings","addDimensionScale","gridlinesOptions","gridlinesSettings","minorTicks","addGridlinesComponent","hasNavigation","scroll","viewSize","scrollSettings","scrollbarOptions","isHorizontal","scrollBarSettings","addInteractionActions","isEnabledFn","targetIsScrollbar","startPoint","panstart","panend","pancancel","getScrollActions","isNavigationEnabledFn","addScrollbarComponent","axisDock","refLinesSettings","oob","lines","refLinesLabelsSettings","require","measureText","formatter","labelWidths","formattedValue","minimumText","wanted","required","maxLabelWidth","labelPadding","expressionValue","lineOptions","addRefLineComponent","enableLasso","selectionsEnabled","lassoOptions","brushKey","brushComponents","brushData","addLassoComponent","enableDimRange","rangeDimSettings","rangeDimOptions","brushAxis","brushArea","brushScale","addRangeDimComponent","dimRange","enableMeasureRange","rangeMeasureSettings","rangeMeasureOptions","multiple","addRangeMeasureComponent","measureRange","enableAreaRange","rangeMinorSettings","addRangeAreaComponent","areaRange","brushActions","addInteraction","addInteractionComponent","axisLineStroke","titleFontSize","titleFill","labelsFill","labelsFontSize","titleFontFamily","labelsFontFamily","strokeWidth","tiltAngle","maxEdgeBleed","maxSize","measureScale","scaleSettings","dimensionScale","xAxis","yAxis","xAxisTitle","yAxisTitle","rangeUtil","getBublesAlign","isAlignStart","getDock","dockTargets","dockT","layoutModes","SPARK","XSMALL","SMALL","MEDIUM","FULL","LayoutModes","dataset","getLayoutModeKeys","layoutModeKeys","modeKey","directions","createComponent","minor","boxMarker","pointMarker","backgroundColor","scrollbar","comp","fillActive","isStartBorder","binStart","binEnd","rangeArea","chartHeight","chartWidth","itemFill","itemFontSize","vertical","lui-fade-button","bottom","shape","categoricalLegend","tickFill","tickFontSize","tickFontFamily","getAlignValue","word","sequentialLegend","gridLine","oobColor","oobBackgroundColor","sources","strategy","placements","justify","ChartBuilder","dockLayout","getComponent","addPreset","ChartPresets","validateComponentKeys","ALIGNMENT","CENTER","BOTTOM","DisclaimersConfig","DISCLAIMERS","alignment","util","getNoDataExistAttribute","qcx","getLimitedDataAttribute","maxNbrOfDimensions","stackedDataPages","explicitLimitedData","paging","getNegativeOrZeroValuesAttribute","supportNegative","getOnlyNegativeOrZeroValuesAttribute","getOnlyNanDataAttribute","explicitOnlyNanData","getDataRangeIncludingZeroAttribute","supportRangeOverZero","measureInfo","explicitMinOn","explicitMaxOn","MAX_VALUE","hasDataRangeIncludingZero","applyAttributes","dataAttributes","NoDataExist","RequireNumericDimension","explicitRequireNumericDimension","LimitedData","NegativeOrZeroValues","OnlyNegativeOrZeroValues","OnlyNanData","DataRangeIncludingZero","Helper","disclaimersConfig","supportedDisclaimers","Disclaimer","isValidAndSupported","isAnyValidDisclaimer","getMessage","ERRORS","SET","DISPLAY","_applyDefaultSupport","supported","getComponentSettings","_this$environment","_this$environment$opt","vizAttributes","helper","DisclaimerComponentHelper","AttributesUtil","_selectionsApi","_on","_disclaimer","_dataPaths","picassoElement","dataAreaElem","setDataPaths","dataPaths","dataPagesPath","maxHeight","hasValidData","_disclaimerComponent$","getDisclaimerAttributes","disclaimerComponent","isSuppressingDisc","chartSettings","createChartSettings","errorMsg","updateChart","_painted","addSnapshotChartSettings","logicalSize","preserveAspectRatio","_destroyed","permissions","isPartialData","_this$environment$app","_this$environment$app2","qLocaleInfo","colorService","partialData","isLassoDisabled","snapshotLayout","hashFromString","generateHash","hashData","updateHash","hashCode","hashBuilder","getDefaultHashDataForHyperCube","getMeasureDataFromLibraryItem","getMeasureExpressions","drillLevel","getDrillIndices","getDimensionExpressions","dimensionInfo","qGroupFieldDefs","getDimensions","JSONPatch","originalExtend","isObject","isUndef","isSpecialProperty","getParent","numPart","part","newData","basePath","patches","generateValue","oldVal","tmpPath","newA","oldA","tmpIdx","findIndex","patchArray","patch","newValues","oldParent","SoftPropertyHandler","_model","setModel","saveSoftProperties","prevEffectiveProperties","effectiveProperties","[object Object]","propertiesPromise","effectivePromise","effective","clearSoftPatches","hardPropertiesChecker","canModifyHardProperties","qMeta","privileges","Save","saveDerivedProperties","InputValidator","generateDerivedProperties","DerivedProperties","_generationInProgress","isDerivedUpToDate","Hash","layoutIsUpdated","addDefaultHyperCubeHash","HashBuilder","getFieldAccessor","deps","origin","fieldIdx","attrIdx","attrDimIdx","wrappedFields","attrDims","attrExps","qAttrDims","qValues","qAttrExps","datumExtract","propCfg","cell","_ref","cellToValue","_ref2","mainCell","rowIdx","sourceKey","targetProp","propCell","propCellFn","qRow","cfgs","dataItems","cube","_typeof","normalizeConfig","main","propsArr","track","trackType","tracker","trackedItems","fieldValues","fieldLabels","cfg","collect","node_count","node_each","node_eachBefore","node_eachAfter","node_sum","node_sort","node_path","ancestor","leastCommonAncestor","aNodes","bNodes","node_ancestors","node_descendants","node_leaves","node_links","hierarchy","childs","Node","valued","defaultChildren","computeHeight","node_copy","copyData","keyPrefix","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeId","nodeKey","nodeByKey","subpath","carr","_toConsumableArray","flattenTree","arrIndexAtTargetDepth","treeAccessor","sourceDepth","targetDepth","findField","query","allFields","DIM_RX","M_RX","ATTR_EXPR_RX","ATTR_DIM_RX","getColumnOrder","qColumnOrder","getDimensionColumnOrder","ii","getFieldDepth","isFieldDimension","pseudoMeasureIndex","measureIdx","remainder","treeOrder","qEffectiveInterColumnSortOrder","columnOrder","fieldDepth","sourceDepthObject","targetDepthObject","valueFn","attrFn","nodeFn","_data$qAttrDims","_data$qAttrExps","doIt","_ref3","pCfg","coll","collStr","_loop","cells","accessor","attrAccessor","reduceLabel","getHierarchy","rootPath","picker","tree","getHierarchyForSMode","__root","__id","isNew","_cell$qElemNumber","qElemNo","_objectSpread","__parent","attachPropsAccessors","_ref4","itemDepthObject","accessors","augment","propDefs","_util$normalizeConfig","replicaDescendants","isTree","_getFieldAccessor","escapeRegExp","SIprefixes","radix","oct","dec","bin","rom","functional","prec","formatRadix","fradix","decimal","formatRoman","nThousands","numeral","formatFunctional","justStr","thousand","getAbbreviations","listSeparator","abbreviation","abbreviationTuple","preparePattern","lastPart","regex","matchPrecisionResult","splitPattern","NumberFormatter","_classCallCheck","_createClass","prep","exponent","absValue","decimalPartPattern","abbr","sciValue","lowerAbbreviation","suggestedAbbrExponent","abbrArray","upperAbbreviation","wholePart","wholePartPattern","nDecimals","nZeroes","decimalPart","numberFormatFactory","_len","memoize","cacher","_opts$size","_opts$multipleArgumen","multipleArguments","_opts$toKey","toKey","counter","fifo","qType","qformat","memoized","format","TYPES","AUTO","INTEGER","NUMBER","FIXED_TO","MONEY","DATE","TIME","DATE_TIME","INTERVAL","DAYS","DAYS_ABBR","MONTHS","MONTHS_ABBR","SECONDS_PER_DAY","pad","parseDate","twelveFormat","getRemainder","parseIntervalDays","days","ms","parseInterval","units","someT","getMasks","inst","DateFormatter","qtype","_patternMap","_defineProperty","parsedDate","hasTwelveFlag","masks","masksArr","mask","dateTimeRegex","submask","dateFormatFactory","MS_PER_DAY","QlikTimeToDate","li","nqt","createFromMetaInfo","meta","timeFormat","qFmt","qThousandSep","qDecimalSep","isAuto","qIsAutoFormat","qThou","qDec","numberFormat","qField","fieldExtractor","sourceField","labelFn","createFields","parentKey","fieldKey","_cache$wrappedFields","_cache$wrappedFields2","_cache$allFields","_ref$config","virtualFields","extractionConfig","extractor","hierarchyConfig","_cache","qNodesOnDim","TExtractor","augmentTree","SExtractor","dimAcc","measAcc","traverse","ff","LAYOUT_TO_PROP","HC_RX","TD_RX","SHORTEN_HC","SHORTEN_TD","extractFieldFromId","dimensionIdx","pathToCube","shortenizer","shortenPath","attrCol","qAttrExprInfo","meas","_slicedToArray","qBrush","_opts$orMode","byCells","primarySource","methods","isActive","hasValues","brushes","ranges","multiRangeSelectTreeDataValues","qMeasureIx","qDimensionIx","qRange","qMinInclEq","qMaxInclEq","rangeSelectHyperCubeValues","selectHyperCubeContinuousRange","qDimIx","noOfLeftDims","qNoOfLeftDims","dimInterColSortIdx","selectPivotCells","validValues","qCol","selectHyperCubeCells","cols","orMode","initialize","qBrushHelper","selectionUtils","brushInterceptors","DIM_VALUE_NULL","DIM_VALUE_TOTAL","brushOnlyOne","activeBrushes","toggleOff","filterValues","lockedFields","lockedItems","brushItems","splitIndex","datasetName","fieldName","itemsAreLocked","DEFAULT_OPTIONS","startOnEmptySelection","Selections","selectPaths","selectionContexts","selectionsApiRestoreHelper","propertiesToRestore","paths","begin","toggleValues","filterResult","itms","Actions","lastShift","shiftToggle","confirmOrCancelSelection","cancel","confirm","register","listeners","sleep","deregister","removeListener","dependentComponents","setUp","tearDown","setUpBrush","selectionTrigger","isSingleSelect","globalPropagation","selectionConsumer","createContext","fieldsLocked","dimFields","areAllFieldsLocked","getFieldsLocked","intercept","setUpStart","setUpDone","removeInterceptor","pauseEngineCalls","resumeEngineCalls","onDeactivated","unbindDeactivated","onActivated","unbindActivated","lassoState","allFieldsLocked","NoSelections","SelectionHandler","onComponentChecker","isOnComponentForRange","selectionGesture","isOnComponentForLasso","gesturesParams","lassoGesture","componentKey","isOnComponentForNavBtn","legendBrushKey","navBtnGesture","callLassoGesture","gesturesFns","lassoing","isSelectionEnabled","hitComp","selectionHandler","scrollHandler","lassostart","switchTo","lassoBrushKey","doEmit","lassomove","lassoend","lassocancel","measureRangeGesture","callMeasureRangeGesture","activeRangeBrush","dimRangeBrushKey","rangeSelStatus","isOpenMea","measureSelecting","measureRangeBrushKey","measurerangestart","measurerangemove","measurerangeend","measurerangecancel","getAxisOrientation","areaRangeGesture","callAreaRangeGesture","isOpenDim","minoring","arearangestart","areaBrushKey","arearangemove","arearangeend","arearangecancel","dimensionRangeGesture","callDimensionRangeGesture","dimAxis","majoring","majorrangestart","majorrangemove","majorrangeend","majorrangecancel","dragGesture","callDragGesture","hasSelections","dragPoint","dragging","isNavigationEnabled","getBrushConfig","dragstart","getItemSize","getScrollApi","dragmove","dragend","dragcancel","callNavBtnGesture","navBtnTap","btn","DependentInteractions$1","clearKey","activeChart","newType","cont","onScrollUpdate","rangeClearTap","TooltipActions","tooltipKey","hasOpen","closeTooltip","isOpen","getAffectedShapes","openTooltip","toggleInterceptor","TooltipAction","formatMeasureValue","measureContent","createContent","tooltipInfo","uniqueShapes","numberInExcess","numItems","localContent","rows","labelData","refPaths","isNullValue","currentNode","headerResolver","measureRows","measureRow","rowData","rowResolver","colorByData","getColorByDimData","rowCount","extractContent","renderSettings","_tooltipInfo$colorSer","_tooltipInfo$colorSer2","_shape$attrs","colorData","colorSettings","ids","elemNoObj","othersIndex","getOthersIndex","TOOLTIP_CONTAINER_ID","TOOLTIP_CONTAINER_SELECTOR","appendTooltipContainer","querySelector","beforeMount","beforeUpdate","destroyed","elm","parentElement","childElementCount","destroyTooltipContainer","placement","arrow","border-spacing","background","empty-cells","max-width","word-break","word-wrap","overflow-wrap","hyphens","labelTextAlign","headerStyle","colSpan","valueContent","symbolStyle","background-color","symbol","labelStyle","valueStyle","moreText","moreStyle","Tooltips","chartType","tooltipContexts","registerContext","treatAsDesktop","deRegContext","mouseLeave","attrDimPath","filterShapes","createTooltip","uniques","filterDuplicateShapes","TooltipHandler","ScrollHandler","$chartElement","getSlicedDataFn","onScrollCallback","legendKey","_chartInstance","_$chartElement","_getSlicedDataFn","_itemSize","_onScrollCallback","_legendKey","calculateScrollViewSizeInItem","scrollSize","_scrollViewSizeInItem","onMouseWheel","orgEvent","wheelDelta","HORIZONTAL_AXIS","wheelDeltaY","wheelDeltaX","getMouseWheelData","onLegendMouseWheel","_disabled","_scrollApi","onScroll","_sizeChanged","getViewData","setDisabled","getDisabled","setItemSize","getScrollViewSizeInItem","removeAllListeners","updateViewState","onResize","isDataSizeChanged","pageNumberOfRows","datasetNumberOfRows","resetScroll","moveTo","getState","setOptions","getScrollState","setScrollState","stringWidthOverMWidth","getCharacterRatios","latin","cjk","CJK","hiragana","katakana","getTotalCharacterRatios","columnIndex","res","latinRatio","cjkRatio","estimateLatinLabelWidth","numLatins","maxLatinWidth","averageLatinWidth","stringUtil","endsWith","haystack","needle","getAdjustedMaxGlyphCount","maxGlyphCount","totalCharacterRatios","latinGlyphCount","cjkGlyphCount","CJK_AVERAGE_WIDTH","estimateLabelWidth","numCjks","cjkWidth","colorStruct","transparent","rgba","hexShort","hsl","hsla","Color","lcs","h_","rgb_","colorString","_invalid","_r","_g","_b","_a","CSSColors","_spaces","isInvalid","setAlpha","getAlpha","toRGB","toRGBA","toHex","toHSL","luma","toHSLA","toHSV","hsvComp","toHSVComponents","toNumber","isDark","getLuminance","_lumi","shiftLuminance","chsla","isEqual","blend","c2","createShiftedColor","lumi","greenMultiplier","hsla_string","c1","r1","g1","b1","getBlend","isCSSColor","getBestContrast","cl","cd","lum","getContrast","color1","color2","l1","l2","useDarkLabel","areaColor","bgIsDark","chartUtils","TRANSPARENT_BLACK","TRANSPARENT_WHITE","LIGHT_GREY","DARK_GREY","BLACK","WHITE","getInverse","colorObj","getContrastingGrey","getContrastingTransparent","hasSecondDimension","getStackedCubeSizeOf2Dims","getDimensionSize","dimInfo","qCardinalities","qHypercubeCardinal","hypercubeUtil","getHyperCube","hasSecondMeasure","getStackedCubeSizeOfMax2Dims","getStackedCubeSizeOf1Dim","getOuterDimensionSizeOfMax2Dims","Jitter","_maxJitter","calcMaxJitter","pointSize","jitterParameter","availableWidth","getJitterValue","fraction","columnOrderAdapter","toBefore","toAfter","distributionPlotCubeGenerator","generateHyperCube","numDims","firstDimString","secondDimString","hasBase","hasDimensionBase","hasMeasureBase","_layout$snapshotData$","_layout$snapshotData$2","_layout$qUndoExclude","legendData","needMigrateOldSnapshotColorData","migrateOldSnapshotColorData","layoutService","createConfig","custom","definitionPath","getLayoutValue","defaultAuto","getColor","getPaletteColor","getDatumProps","getSettingsForMeasure","getLegend","getScales","getPalettes","isInitialized","getUseBaseColors","createColorService","getSelectionSettingsArray","setting","getDataSize","getPicassoScrollSettings","updateCacheSize","_scrollHandler","updateOnScrollViewChanged","resetCategoricalLegendScroll","catLegend","DistributionPlot","__do_not_use_findShapes","findShapes","_derivedProperties","_selectionHandler","_tooltipHandler","getSlicedData","_maxBubbleScale","_jitterTool","_updateColorMapData","updateScrollHandlerState","_disableScrolling","passive","_getPointScale","_calcBandwidth","chartAreaSize","dimScale","_bandwidthRatio","pxScale","bandwidth","_bandwidthPx","_calcPointMaxSize","pointScale","bandwidthPx","maxPointSize","_pointMaxSizePx","_calcPointSize","pointMaxSizePx","_pointSize","_getDimAxisSettings","selectionSettings","brushTrigger","brushConsume","containerSize","adjustedMaxGlyphCount","qApprMaxGlyphCount","getMaxGlyphCountForDimAxis","maxLengthPx","paddingEnd","_getBoxMarkerSettings","boxFillColor","startField","endField","boxSettings","minWidthPx","beforeRender","showPoints","jitterExpansion","_jitter","elemNo","_getPointMarkerSettings","tooltipSettings","fillFn","pointMarkerSettings","chartStyleUtils","sizeLimits","maxRelExtent","maxPx","minPx","boxPaddingRelative","innerElemNo","inner","outer","_getPointSelectionLayerSettings","pointSelectionLayerSettings","hasVisibleComponentsProps","showBox","dimAxisSelectionSettings","boxSelectionSettings","pointSelectionSettings","legendSelectionSettings","allowSelectBoxes","innerSelectionSettings","outerSelectionSettings","colorSelectionSettings","measureSelectionSettings","lockedDims","isInnerDimSingleSelect","isOuterDimSingleSelect","retrieveRangeSelStatus","dimInfos","getLockedDims","_dependentActions","DependentInteractions","boxMarkerSettings","jitterTool","basePosition","addLegend","_orientation","finally","limitedData","paddingBottom","colorField","addKeyAlias","_createColorLegendCube","dataPages","dimIndex","_updateColorData","getHashData","derivedSettings","_cacheSizeInitialized","defaultOptions","dfd","Throttle","onSend","ongoingRequests","queuedRequests","recentRequests","resolvedRequests","_debounceTimer","_latestResolvedRequestedAt","onCancel","request","debounceDelay","requestObject","wrapper","requestedAt","avgResponseTime","_getAvgResolutionTime","notAnyRecentRequests","lastRequestIsOld","lastResponseIsOld","throttleQueue","updateResolutionTime","respondedAt","sentAt","sendLastThrottledRequest","waitingForResponse","req","sendRequest","StackedCubeSlicer","debouncing","maxTotalArea","Cache","cubeHeight","cubeWidth","setPath","throttle","EngineThrottle","_getDirections","areasToCache","_getAreasToCache","cacheData","subset","_modelBinding","setMethodName","setCubeSize","cacheHeight","cacheWidth","maxStackedValues","srcAreas","lastRequests","lastCouple","diffY","diffX","wiggleHeight","wiggleWidth","offsetTop","offsetLeft","cacheAreas","adjustedCacheHeight","BackednAPi","cacheCube","CacheCube","hyperCubeContainerPath","backendStackThrottle"],"mappings":"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"}